home *** CD-ROM | disk | FTP | other *** search
/ Eagles Nest BBS 8 / Eagles_Nest_Mac_Collection_Disc_8.TOAST / Developer Tools⁄Additions / IM-Overview / IM—Overview ƒ / IM—Overview next >
Text File  |  1992-12-04  |  3MB  |  12,201 lines

  1. <$paratext><$pagenum><$paratext><$pagenum><$paratext><$pagenum><$paratext><$pagenum><$paratext><$pagenum><$paratext><$pagenum>Chapter <$paranum>    <$paratext><$pagenum>Chapter <$paranum>    <$paratext><$pagenum>Appendix <$paranum>    <$paratext><$pagenum>Preface    <$paratext><$pagenum><$paratext><$pagenum><$paratext><$pagenum>Part <$paranum>    <$paratext><$paratext><$pagenum><$paratext><$pagenum><$paranum>    <$paratext><$pagenum><$paranum>    <$paratext><$pagenum><$paranum>    <$paratext><$pagenum><$paranum>    <$paratext><$pagenum><$paranum>    <$paratext><$pagenum>Chapter <$paranum>    <$paratext><$pagenum>Chapter <$paranum>    <$paratext><$pagenum>Appendix <$paranum>    <$paratext><$pagenum>Preface    <$paratext><$pagenum><$symbols><$numerics><$alphabetics>Level3IXLevel2IXLevel1IXSymbols[\ ];Numerals[0];A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z<$pagenum>“‘’”--—–  '"./INSIDE MACINTOSHOverviewISBN 0-201-63247-01 2 3 4 5 6 7 8 9-MU-9695949392First Printing, December 1992The paper used in this book meets the EPA standards for recycled fiber.    Apple Computer, Inc.© <$year\>, Apple Computer, Inc.All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, mechanical, electronic, photocopying, recording, or otherwise, without prior written permission of Apple Computer, Inc. Printed in the United States of America.No licenses, express or implied, are granted with respect to any of the technology described in this book. Apple retains all intellectual property rights associated with the technology described in this book. This book is intended to assist application developers to develop applications only for Apple Macintosh computers.Apple Computer, Inc.20525 Mariani AvenueCupertino, CA 95014408-996-1010Apple, the Apple logo, APDA, AppleLink, LaserWriter, MacApp, Macintosh, MPW, and MultiFinder are trademarks of Apple Computer, Inc., registered in the United States and other countries.Balloon Help, Finder, QuickDraw, QuickTime, ResEdit, and SourceBug are trademarks of Apple Computer, Inc.Adobe Illustrator and PostScript are trademarks of Adobe Systems Incorporated, which may be registered in certain jurisdictions.AGFA is a trademark of Agfa-Gevaert.FrameMaker is a registered trademark of Frame Technology Corporation.Helvetica and Palatino are registered trademarks of Linotype Company.ITC Zapf Dingbats is a registered trademark of International Typeface Corporation.Simultaneously published in the United States and Canada.LIMITED WARRANTY ON MEDIA AND REPLACEMENTALL IMPLIED WARRANTIES ON THIS MANUAL, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE LIMITED IN DURATION TO NINETY (90) DAYS FROM THE DATE OF THE ORIGINAL RETAIL PURCHASE OF THIS PRODUCT.Even though Apple has reviewed this manual, APPLE MAKES NO WARRANTY OR REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THIS MANUAL, ITS QUALITY, ACCURACY, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. AS A RESULT, THIS MANUAL IS SOLD “AS IS,” AND YOU, THE PURCHASER, ARE ASSUMING THE ENTIRE RISK AS TO ITS QUALITY AND ACCURACY.IN NO EVENT WILL APPLE BE LIABLE FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES RESULTING FROM ANY DEFECT OR INACCURACY IN THIS MANUAL, even if advised of the possibility of such damages.THE WARRANTY AND REMEDIES SET FORTH ABOVE ARE EXCLUSIVE AND IN LIEU OF ALL OTHERS, ORAL OR WRITTEN, EXPRESS OR IMPLIED. No Apple dealer, agent, or employee is authorized to make any modification, extension, or addition to this warranty.Some states do not allow the exclusion or limitation of implied warranties or liability for incidental or consequential damages, so the above limitation or exclusion may not apply to you. This warranty gives you specific legal rights, and you may also have other rights which vary from state to state.<$paranum>    <$paratext><$pagenum><$paranum>    <$paratext><$pagenum><$paranum>    <$paratext><$pagenum><$paranum>    <$paratext><$pagenum><$paranum>    <$paratext><$pagenum>Chapter <$paranum>    <$paratext><$pagenum>Chapter <$paranum>    <$paratext><$pagenum>Appendix <$paranum>    <$paratext><$pagenum>Preface    <$paratext><$pagenum><$symbols><$numerics><$alphabetics>Level3IXLevel2IXLevel1IXSymbols[\ ];Numerals[0];A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z<$pagenum>“‘’”--—–  '"./ContentsFigures, Tables, and ListingsviiPreface    About This BookxiAbout Inside MacintoshxiiThe New Inside MacintoshxiiiConventions Used in This BookxiiiSpecial FontsxivTypes of NotesxivDevelopment EnvironmentxivFor More InformationxvChapter 1    Introduction1Getting Started3The Macintosh System Software6The Macintosh Toolbox7The Macintosh Operating System11Additional System Software Services12Text Handling12Interapplication Communication14QuickTime17Communications Toolbox18System Software Routines19The Sample Application21Conventions for Sample Code24Chapter 2    Memory27About Memory29The System Heap31The System Global Variables31Application Partitions32The Application Stack33The Application Heap34The Application Global Variables and A5 World37Memory Blocks38Nonrelocatable Blocks39Relocatable Blocks40Locking and Unlocking Relocatable Blocks42Purging and Reallocating Relocatable Blocks43Data Types44Pointers and Handles44Strings45Procedure Pointers46Type Coercion47Chapter 3    Resources49About Resources51Resource Paths52Resource Types55Resource Structure56Using Standard Resources59Using Custom Resources60Chapter 4    Events69About Events71Initializing an Application74Receiving Events75Handling Events Outside the Main Event Loop79Chapter 5    Drawing83About QuickDraw85Points86Rectangles87Regions89Bit Images91Ports and Windows92Drawing Shapes94Drawing Bit Images99Drawing Text101Chapter 6    Windows107About Windows109Window Parts110Window Records112Window Types113Creating Windows115Handling Window Events119Mouse Events119Update Events123Activate Events125Closing Windows128Chapter 7    Dialog Boxes131About Dialog Boxes133Using Modeless Dialog Boxes137Creating a Modeless Dialog Box137Setting Up Application-Defined Items139Handling User Actions in a Modeless Dialog Box141Using Modal Dialog Boxes144Displaying a Modal Dialog Box145Defining a Modal Dialog Filter Function146Chapter 8    Menus149About Menus151Creating Menus152Creating a Menu Resource152Creating a Menu Bar Resource154Setting Up the Menu Bar and Menus154Handling Menu Choices156Handling Keyboard Equivalents160Adjusting Menus161Chapter 9    Processes163About Processes165Specifying Processing Options168Handling Suspend and Resume Events170Handling Null Events173Quitting an Application175Handling Errors176Checking the Operating Environment178Afterword    Going Further183Implementing Further Features183Maintaining Compatibility187Making Your Application Localizable188Using Developer Services189Technical Publications189Training190Technical Support191Appendix A    Constants, Types, and Variables195Appendix B    Utility Routines199Appendix C    Dialog Code205Appendix D    Resource Code211Appendix E    User Interface Code217Glossary233Index245<$paratext><$pagenum><$paratext><$pagenum><$paratext><$pagenum><$paratext><$pagenum><$paratext><$pagenum><$paratext><$pagenum>Chapter <$paranum>    <$paratext><$pagenum>Chapter <$paranum>    <$paratext><$pagenum>Appendix <$paranum>    <$paratext><$pagenum>Preface    <$paratext><$pagenum><$paratext><$pagenum><$paratext><$pagenum>Part <$paranum>    <$paratext><$paratext><$pagenum><$paratext><$pagenum><$symbols><$numerics><$alphabetics>Level3IXLevel2IXLevel1IXSymbols[\ ];Numerals[0];A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z<$pagenum>“‘’”--—–  '"./Figures, Tables, and ListingsChapter 1    Introduction1Figure 1-1    The window created by the simple application4Figure 1-2    Overview of the system software7Figure 1-3    Parts of the Macintosh Toolbox8Figure 1-4    A multiscript line of text drawn by QuickDraw13Figure 1-5    Input and conversion of Japanese text using the Text Services Manager14Figure 1-6    Sharing dynamic data with other applications15Figure 1-7    Sending and responding to Apple events16Figure 1-8    Playing a QuickTime movie18Figure 1-9    A typical Venn diagram window22Figure 1-10    The parts of a Venn diagram window22Figure 1-11    A correctly constructed Venn diagram23Figure 1-12    The Venn menu24Table 1-1    Parameters passed to NewWindow in Listing 1-14Table 1-2    The Macintosh Toolbox10Table 1-3    The Macintosh Operating System11Listing 1-1    A simple Macintosh application3Chapter 2    Memory27Figure 2-1    Memory organization in the cooperative multitasking environment30Figure 2-2    Organization of an application partition32Figure 2-3    The application stack34Figure 2-4    A fragmented heap35Figure 2-5    A compacted heap36Figure 2-6    Organization of an application’s A5 world37Figure 2-7    A pointer to a nonrelocatable block39Figure 2-8    A handle to a relocatable block41Figure 2-9    Purging and reallocating a relocatable block44Chapter 3    Resources49Figure 3-1    Searching for a resource54Figure 3-2    The ResEdit version of the Preferences dialog box58Figure 3-3    A resource diagram59Figure 3-4    The Preferences dialog box61Table 3-1    Typical locations of resources53Table 3-2    Some standard resource types55Listing 3-1    Rez input for the Preferences dialog box57Listing 3-2    The structure of a resource containing Venn diagram preferences61Listing 3-3    Reading a user’s preferences62Listing 3-4    Creating a preferences file64Listing 3-5    Copying a resource from one resource file to another65Listing 3-6    Saving current preferences settings66Chapter 4    Events69Figure 4-1    Sources of events sent to your application73Listing 4-1    Initializing your application74Listing 4-2    Initializing the main Toolbox Managers75Listing 4-3    Handling disk-inserted events77Listing 4-4    An event loop77Listing 4-5    Tracking mouse events in the close box79Listing 4-6    Tracking the cursor in an arbitrary rectangle80Chapter 5    Drawing83Figure 5-1    Samples of QuickDraw’s abilities85Figure 5-2    The coordinate plane86Figure 5-3    A rectangle87Figure 5-4    Pixels and rectangles88Figure 5-5    Two regions90Figure 5-6    A bitmap92Figure 5-7    Calculating the overlap regions of a Venn diagram98Figure 5-8    Bit images in a document window99Listing 5-1    Saving and restoring the current graphics port93Listing 5-2    The structure of a record describing a document window’s geometry94Listing 5-3    Initializing the geometry record95Listing 5-4    Defining circular regions96Listing 5-5    Defining noncircular regions96Listing 5-6    Reading 'ICON' resources into memory100Listing 5-7    Drawing the tools area of a document window100Listing 5-8    Drawing a portion of an icon101Listing 5-9    Retrieving a status message from a resource102Listing 5-10    Informing the user of an argument’s validity or invalidity103Listing 5-11    Displaying a status message103Chapter 6    Windows107Figure 6-1    A Venn diagram window111Figure 6-2    An inactive window containing controls127Listing 6-1    The WindowRecord data structure112Listing 6-2    Determining if a window is a document window114Listing 6-3    Determining if a window is a dialog box114Listing 6-4    Determining if a window is a desk accessory window115Listing 6-5    The structure of a document record for the Venn Diagrammer application115Listing 6-6    Creating a new Venn diagram window117Listing 6-7    Handling mouse-down events120Listing 6-8    Dragging a window121Listing 6-9    Handling clicks in a window’s content region121Listing 6-10    Handling a click in a figure icon123Listing 6-11    Handling update events124Listing 6-12    Handling window activations and deactivations126Listing 6-13    Handling clicks in the close box128Listing 6-14    Closing a window129Listing 6-15    Closing a Venn diagram window129Chapter 7    Dialog Boxes131Figure 7-1    An About box133Figure 7-2    An alert box134Figure 7-3    A Preferences dialog box134Listing 7-1    Dialog item numbers135Listing 7-2    Creating a modeless dialog box138Listing 7-3    Setting up application-defined dialog items139Listing 7-4    Drawing application-defined dialog items140Listing 7-5    Handling events in a modeless dialog box141Listing 7-6    Setting the state of radio buttons and checkboxes142Listing 7-7    Displaying a modal dialog box145Listing 7-8    Outlining the default button of a modal dialog box146Listing 7-9    A modal dialog filter function147Chapter 8    Menus149Figure 8-1    A typical pull-down menu151Figure 8-2    Defining a 'MENU' resource153Figure 8-3    Editing a menu command153Figure 8-4    An 'MBAR' resource in ResEdit154Table 8-1    Reserved keyboard equivalents161Listing 8-1    Setting up the menu bar and menus155Listing 8-2    Defining menu numbers and menu item numbers156Listing 8-3    Handling menu selections157Listing 8-4    Handling Apple menu selections159Listing 8-5    Handling Command-key equivalents160Listing 8-6    Adjusting menus161Chapter 9    Processes163Figure 9-1    The desktop with several applications open166Figure 9-2    A Venn diagram before automatic adjusting174Figure 9-3    A Venn diagram after automatic adjusting175Table 9-1    The bits in the message field of an operating-system event record172Listing 9-1    The Rez input for a sample 'SIZE' resource 169Listing 9-2    Handling operating-system events171Listing 9-3    Handling null events173Listing 9-4    Quitting your application175Listing 9-5    Handling serious errors178Listing 9-6    Checking that FindFolder is present179Listing 9-7    Determining whether a trap is available180Listing 9-8    Checking for the availability of the WaitNextEvent function181About This BookThis book, Inside Macintosh: Overview, provides a general introduction to programming for Macintosh computers and to the Inside Macintosh library of reference books. Unless you are already an experienced developer of software for Macintosh computers, you should read this book for a general overview of the Macintosh system software and of the programming techniques that you should use when developing your application.This book is written for both professional developers and “hobbyists.” It assumes only that you understand fundamental programming concepts and that you have had experience using a high-level programming language such as Pascal or C. It is helpful, but not necessary, to have some experience programming for a graphic user interface (like the Macintosh desktop metaphor). At the very least, you should already have extensive experience using one or more applications on a Macintosh computer. Before you start programming, you need to understand what the basic elements of the Macintosh desktop metaphor are (windows, menus, scroll bars, and so forth) and how the user expects those elements to operate.This book leads by example. From the very first page, the fundamental programming techniques are illustrated by source code that you can compile into actual, working routines and applications. Gradually, you will learn how to implement the major features of a Macintosh application, includingn    responding to user actions and other eventsn    creating and managing windows and dialog boxesn    handling menu selectionsn    storing application data in resourcesn    managing your application’s memory efficientlyn    sharing processing time and available memory with other open applicationsn    checking available system software featuresn    handling errors or unexpected occurrences safelyThis book also provides guidelines on how to maximize your application’s compatibility with the entire family of Macintosh computers and minimize the amount of work required to localize your application (that is, to adapt it for use in other geographic locations). Compatibility and localizability are features that you should always plan in advance. In general, your best guide to writing software that follows these guidelines is to use the techniques illustrated throughout the Inside Macintosh series of books.About Inside MacintoshThe Inside Macintosh library of books is a complete technical reference to the system software provided for Macintosh computers by Apple Computer, Inc. You’ll need some or all of the Inside Macintosh books—in addition to the documentation for your specific software development environment—to write applications and other software components that run in the Macintosh Operating System.Books in the Inside Macintosh series are designed primarily as reference books and not as step-by-step tutorials. (The main exception to that rule is this book, Inside Macintosh: Overview, which is a general introduction to programming on Macintosh computers and to the other Inside Macintosh books.) Nonetheless, there is sufficient “how-to” material in each book that you should be able to successfully implement the features of some particular part of the Macintosh system software by reading the appropriate chapters in Inside Macintosh. Moreover, some of these books contain special introductory chapters that explain general concepts and provide implementation details for specific parts of the system software. For example, the chapter “Introduction to File Management” in the book Inside Macintosh: Files provides a complete explanation of how to implement the typical File menu commands.If you are new to programming for the Macintosh system software, you should begin by reading this book, Inside Macintosh: Overview. Once you understand the material presented here, you can then usefully turn to other Inside Macintosh books. In all likelihood, you’ll next want to look at two books covering the Macintosh Toolbox:n    Inside Macintosh: Macintosh Toolbox Essentialsn    Inside Macintosh: More Macintosh ToolboxIf your application is concerned with either text or graphics, you need to look at one or both of:n    Inside Macintosh: Imagingn    Inside Macintosh: TextYou’ll also need to learn more about the main parts of the Macintosh Operating System. You can get most of the information you need from these three books:n    Inside Macintosh: Memoryn    Inside Macintosh: Filesn    Inside Macintosh: ProcessesSee the Afterword, beginning on page 183, for a more detailed description of the contents of these and other books in the Inside Macintosh series.The New Inside MacintoshThe original Inside Macintosh library of books appeared in six volumes from 1985 to 1991. Those volumes each focused on a particular version of the system software, sometimes prompted by the release of new hardware configurations. Often, the later volumes of the original Inside Macintosh described only new system software components or changes to existing system software components.The new Inside Macintosh books are intended to replace the original Inside Macintosh books and to provide a more complete and more useful reference to the Macintosh system software. The most obvious improvement in the new books is that they are organized principally by topic. For example, the book Inside Macintosh: Files contains virtually all the available information related to files, including complete descriptions of the File Manager, the Standard File Package, the Alias Manager, and the Disk Initialization Manager. Similarly, the book Inside Macintosh: Text contains all information about handling text. This topic-oriented organization of books makes it easier for you to find the information you need. It also makes it easier for Apple to add books to the Inside Macintosh suite as new technologies emerge in the years ahead.At the same time that the entire suite of books was reorganized, the chapters in the new Inside Macintosh books were completely rewritten. Information that may have been previously scattered across multiple volumes of the original Inside Macintosh is now combined into easily accessible chapters. Information that is no longer relevant or useful has been removed. Most importantly, the new Inside Macintosh provides far more explanatory material and source code samples than the original. Where appropriate, material from the Macintosh Technical Notes has been incorporated into the new Inside Macintosh. Finally, each chapter has been extensively reviewed by Apple engineers, testing personnel, and Developer Technical Support staff.Conventions Used in This BookInside Macintosh uses various conventions to present information. Words that require special treatment appear in specific fonts or font styles. Certain information, such as parameter blocks, appears in special formats so that you can scan it quickly.Special FontsAll code listings, reserved words, and the names of actual data structures, constants, fields, parameters, and routines are shown in Courier (this is Courier).Words that appear in boldface are key terms or concepts and are defined in the Glossary.Types of NotesThere are several types of notes used in Inside Macintosh.NoteA note like this contains information that is interesting but possibly not essential to an understanding of the main text. (An example appears on page 8.) <8bat\>uIMPORTANTA note like this contains information that is essential for an understanding of the main text. (An example appears on page 5.) <8bat\>ssWARNINGWarnings like this indicate potential problems that you should be aware of as you design your application. Failure to heed these warnings could result in system crashes or loss of data. (There are no warnings in this book.) <8bat\>sDevelopment EnvironmentThe system software routines described in this book are available using Pascal, C, or assembly-language interfaces. How you access these routines depends on the development environment you are using. This book shows system software routines in their Pascal interface using the Macintosh Programmer’s Workshop (MPW).All code listings in this book are shown in Pascal. They show methods of using various routines and illustrate techniques for accomplishing particular tasks. All code listings have been compiled and, in most cases, tested. However, Apple Computer does not intend that you use these code samples in your application.This book occasionally uses GreetMe and Venn Diagrammer as the names of sample applications for illustrative purposes; these are not actual products of Apple Computer, Inc.For More InformationAPDA is Apple’s worldwide source for over three hundred development tools, technical resources, training products, and information for anyone interested in developing applications on Apple platforms. Customers receive the quarterly APDA Tools Catalog featuring all current versions of Apple development tools and the most popular third-party development tools. Ordering is easy; there are no membership fees, and application forms are not required for most of our products. APDA offers convenient payment and shipping options, including site licensing.To order products or to request a complimentary copy of the APDA Tools Catalog, contact APDA Apple Computer, Inc. P.O. Box 319Buffalo, NY 14207-0319Telephone    800-282-2732 (United States)800-637-0029 (Canada)716-871-6555 (International)    Fax    716-871-6511     AppleLink    APDA    America Online    APDA    CompuServe    76666,2405    Internet    APDA@applelink.apple.com    If you provide commercial products and services, call 408-974-4897 for information on the developer support programs available from Apple.For information of registering signatures, file types, Apple events, and other technical information, contactMacintosh Developer Technical SupportApple Computer, Inc.20525 Mariani Avenue, M/S 75-3TCupertino, CA 95014-6299IMPORTANTSee the section “Using Developer Services” beginning on page 189 in the Afterword for more information about Apple developer programs and services. <8bat\>sListing 1-0Table 1-0IntroductionContentsGetting Started3The Macintosh System Software6The Macintosh Toolbox7The Macintosh Operating System11Additional System Software Services12Text Handling12Interapplication Communication14QuickTime17Communications Toolbox18System Software Routines19The Sample Application21Conventions for Sample Code24    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>IntroductionWelcome inside. This chapter begins the discussion of programming for Macintosh computers by describing the general organization of the Macintosh system software, a collection of routines that you’ll use to simplify your development of Macintosh applications. The system software provides, among other things, routines that you can use to create and manage the essential parts of your application’s user interface. This chapter illustrates the organization and content of the system software by dissecting a very simple sample application.Getting StartedLet’s begin by looking at the source code for a simple application. Consider Listing 1-1.Listing 1-1    A simple Macintosh applicationPROGRAM GreetMe;VAR    gWindow:                WindowPtr;                            {pointer to a window record}    gString:                Str255;                            {the string to display}    gRect:                Rect;                            {the window’s rectangle}BEGIN    InitGraf(@thePort);                                            {initialize QuickDraw}    InitFonts;                                            {initialize Font Manager}    InitWindows;                                            {initialize Window Manager}    InitCursor;                                            {initialize the cursor to an arrow}                                                {set the position of the window}    SetRect(gRect, 100, 100, 400, 200);    gString := 'Hello, world!';                                            {set the greeting to be displayed}                                                {create a window}    gWindow := NewWindow(NIL, gRect, '', TRUE, dBoxProc, WindowPtr(-1),                                 FALSE, 0);    SetPort(gWindow);                                            {set the current drawing port}    WITH gWindow^.portRect DO                                            {set the position of the pen}        MoveTo(((right - left) DIV 2) - (StringWidth(gString) DIV 2),                    (bottom - top) DIV 2);    TextFont(systemFont);                                            {set the font}    DrawString(gString);                                            {draw the string}    REPEAT                                            {loop until the mouse button is pressed}    UNTIL Button;END.The application GreetMe defined by Listing 1-1 simply displays the window shown in Figure 1-1 and exits as soon as the user presses the mouse button.Figure 1-1    The window created by the simple applicationThis application is remarkably simple, but also quite revealing about some important aspects of Macintosh programming. Consider the call that creates the window in which the greeting is drawn:gWindow := NewWindow(NIL, gRect, '', TRUE, dBoxProc,                             WindowPtr(-1), FALSE, 0);This call to the NewWindow function creates a window at the specified location in front of any existing windows on the screen. The NewWindow function is a good example of the kind of routines provided by the system software. These routines greatly simplify the creation of the standard “look and feel” of Macintosh applications. By using these routines, you can ensure that your application conforms as closely as possible to the standard Macintosh user interface and hence that users find your application easy to learn and use.Let’s take a closer look at the call to NewWindow. The NewWindow function requires eight parameters, whose meanings are described in Table 1-1.Table 1-1    Parameters passed to NewWindow in Listing 1-1(continued)Parameter    Meaning    NIL    The address of a window record, a data structure that contains information about the new window. Specifying NIL as the address of this structure instructs the system software to allocate that required storage itself.    gRect    The window’s bounding rectangle. This is the rectangle that encloses the new window. The values of the desired rectangle are specified by the previous call to SetRect, which defines the upper-left and lower-right corners of the rectangle.    ''    The window’s title. The new window has no title bar, so this parameter is specified as the empty string.    TRUE    An indication of whether the new window should initially be visible or not. This parameter is set to TRUE to indicate that the window is indeed to be made visible.    dBoxProc    The type of window you want to create. The Macintosh user interface includes a great variety of window types for different purposes. For present purposes, the standard modal dialog box is appropriate. The constant dBoxProc identifies that type of window.    WindowPtr(-1)    The new window’s initial plane (or layer) relative to any other existing windows. This parameter is a window pointer to the window behind which you want the new window to appear. The system software recognizes two special values here. If you pass NIL in this parameter, the new window appears behind all other windows. If you pass –1, the new window appears in front of all other windows. Because the NewWindow function expects a window pointer in this parameter, you need to typecast the special value –1 as WindowPtr(–1).    FALSE    An indication of whether the window has a close box or not. This parameter is set to FALSE to indicate that no close box is desired.    0    An application-specific reference number. This number is put into a particular field of the new window record, and can be useful to you if the window has specific data associated with it. Because there is no such data associated with this window, this parameter is set to 0.    The NewWindow function returns a window pointer, which is the address in memory of a window record. The window record contains important information about the window (such as its current location on the screen and the current font and size of text that is to be drawn in the window). When you call a system software routine to perform some operation on a window, you’ll typically pass a window pointer as a parameter to that routine. For example, in Listing 1-1, the window pointer is passed to the SetPort procedure to set the new window as the current drawing window.IMPORTANTYou need to call SetPort before you do anything at all that affects the contents of a window, such as drawing graphics or text in the window, or even just erasing the contents of the window. <8bat\>sAnother notable element of Listing 1-1 is the DrawString procedure, which draws the specified string in the current font at the current drawing location. By default, the current drawing location in a new window is the upper-left corner. In this case, remaining at that location would make the greeting unreadable, because DrawString uses the vertical coordinate of the current point as the baseline of the text to be printed. Instead, GreetMe calls the MoveTo procedure to move the current pen location to a point that centers the greeting in the window:    WITH gWindow^.portRect DO                                            {set the position of the pen}        MoveTo(((right - left) DIV 2) - (StringWidth(gString) DIV 2),                    (bottom - top) DIV 2);The MoveTo procedure requires 2 parameters, the horizontal and vertical coordinates within the window of the new drawing position. The origin—point (0,0)—of a window is at its upper left corner. Horizontal coordinates increase as you move from left to right, and vertical coordinates increase as you move from top to bottom. The coordinates passed to MoveTo are calculated from the left, top, bottom, and right coordinates of the window (obtained from the portRect field of the window record).The Macintosh System SoftwareThe richness of the Macintosh user interface is closely matched by the richness of the Macintosh system software routines. There are currently several thousand system software routines that, like NewWindow, are available to application developers for use in writing applications for the Macintosh operating system. Fortunately, you don’t need to learn all of those routines before starting to develop applications for the Macintosh. The sample application defined in Listing 1-1 uses only a dozen or so system software routines. A typical application might directly call a few hundred of these routines.The entire collection of system software routines is logically divided into functional groups—usually known as managers—that handle specific tasks or user interface elements. For example, the NewWindow routine belongs to the Window Manager, the part of the Macintosh system software that allows you to create, move, hide, resize, and otherwise manipulate windows. Similarly, the parts of the system software that allow you to create and manipulate menus belong to the Menu Manager.Your application calls system software routines to create standard user interface elements and to coordinate its actions with other open applications. The main other application that your application needs to work with is the Finder, which is responsible for keeping track of files and managing the user’s desktop. Usually, the user launches your application by double-clicking its icon (or one of its document’s icons) in a Finder window. The Finder isn’t really part of the Macintosh system software, but it is such an important piece of the Macintosh graphic user interface that it’s sometimes difficult to tell where the Finder ends and the systems software begins. In fact, the system software provides a set of routines—known as the Finder Interface—that you can use to interact with the Finder.As shown in Figure 1-2, most of the system software routines are part of either the Macintosh Operating System or the Macintosh Toolbox.Figure 1-2    Overview of the system softwareThis section describes the division of the Macintosh system software into its logical parts. Understanding this division of system software into managers and other units is essential to understanding Macintosh programming, as well as the general organization of Inside Macintosh.The Macintosh ToolboxThe system software routines used in Listing 1-1 allow you to manage elements of the Macintosh user interface. These parts of the system software belong to the Macintosh Toolbox (sometimes also called the Macintosh User Interface Toolbox). By offering a common set of routines that every application can call to implement the user interface, the Toolbox not only ensures familiarity and consistency for the user, but also helps reduce your application’s code size and development time. At the same time, the Toolbox offers a great deal of flexibility; your application can, whenever appropriate, use its own code instead of Toolbox routines, and it can define its own types of windows, menus, and controls. In general, however, you should use the Toolbox routines to maximize compatibility with present and future versions of the system software.Figure 1-3 illustrates the main parts of the Macintosh Toolbox.Figure 1-3    Parts of the Macintosh ToolboxNoteFor historical reasons, some collections of system software routines are referred to as packages. One example is the Standard File Package (which allows you to present the standard file opening and saving dialog boxes). In general, the distinction between managers and packages is unimportant. Accordingly, the new Inside Macintosh has, whenever appropriate, adopted the practice of renaming packages as managers. For instance, the Disk Initialization Manager (described in the book Inside Macintosh: Files) was previously known as the Disk Initialization Package. <8bat\>uConsider the first few lines of Listing 1-1 on page 3:InitGraf(@thePort);                                            {initialize QuickDraw}InitFonts;                                            {initialize Font Manager}InitWindows;                                            {initialize Window Manager}InitCursor;                                            {initialize cursor to arrow}These lines of code perform standard initialization of some essential Toolbox managers. You need to initialize these managers in order to set up the drawing environment for your application and to prepare parts of the Toolbox for further use. The InitGraf procedure initializes QuickDraw, the part of the Macintosh Toolbox that handles drawing and other graphics operations. Because the Macintosh user interface is largely a graphic user interface, QuickDraw routines are called by virtually all the other Toolbox managers. For example, the Window Manager calls QuickDraw to draw the window frame and any other required parts of a window (for instance, the title bar). For this reason, you need to initialize QuickDraw before you initialize the other main Toolbox Managers.NoteQuickDraw gets its name from the fact that it’s designed to perform basic graphics operations exceptionally fast. This is important for a user interface that relies so heavily on graphics. <8bat\>uYour application will also call QuickDraw directly, usually to draw inside a window or to set up constructs (like rectangles) that you’ll need when making other Toolbox calls. QuickDraw provides a rich array of routines that let youn    change, hide, and display the cursorn    manipulate the current drawing portn    set characteristics of the drawing penn    draw textn    manage colorsn    define rectangles, ovals, arcs, and other basic geometric shapesn    define arbitrarily shaped regionsn    perform operations on shapes and regionsThe essential thing to keep in mind is that if you can see something on the screen, then QuickDraw is lurking somewhere behind it, either directly (you drew it there) or indirectly (you called a Toolbox routine that called QuickDraw to draw it there).The InitFonts procedure initializes the Font Manager, which supports the use of various character fonts when you draw text with QuickDraw. The TextFont routine sets the current font to that whose font number is passed as a parameter. GreetMe passes the special constant systemFont, which requests the font used by the system (for drawing menu titles and commands in menus, for example).The InitWindows procedure initializes the Window Manager, and the InitCursor procedure (which belongs to QuickDraw) sets the cursor to the standard arrow cursor. Every application needs to call these routines before creating windows or handling any user actions.Notice that Figure 1-3 depicts a number of other Toolbox managers that are not used by GreetMe. You’ll encounter many of these as you progress through this book. For now, take a look at Table 1-2 for a brief description of the most commonly used Macintosh Toolbox managers.Table 1-2    The Macintosh Toolbox(continued)Manager    Description    QuickDraw    Performs all screen display operations, including all drawing of graphics and text.    Window Manager    Allows you to create and manage windows of various types.    Dialog Manager    Allows you to create and manage dialog boxes, which are special kinds of windows. Typically you’ll use dialog boxes to alert the user to unusual situations or to solicit information from the user.    Control Manager    Allows you to create and manage controls, such as buttons, radio buttons, checkboxes, pop-up menus, scroll bars, and application-defined controls.    Menu Manager    Allows you to create and manage your application’s menu bar and the menus it contains. Also handles the drawing of menus and user actions within a menu.    Event Manager    Reports to your application events describing user actions and changes in the processing status of your application. Also allows you to communicate with other applications.    TextEdit    Provides simple text-formatting and text-editing capabilities, such as text input, selection, cutting, and pasting. Applications that are not primarily concerned with text processing can use TextEdit to handle most text manipulation.    Resource Manager    Allows your application to read and write resources. Any static data (such as menus, cursors, and windows) used by your application can usefully be stored as a resource. The system software provides a number of standard resources, and your application can define its own custom resources.    Finder Interface    Allows your application to interact with the Finder, the application that helps keep track of files and manages the user’s desktop display.    Scrap Manager    Allows your application to support cutting and pasting of information among applications.    Standard File Package    Provides the standard dialog boxes that allow the user to select a file to open or a location and name for a file to be saved.    Help Manager    Allows your application to provide Balloon Help on-line assistance, information that describes the actions, behaviors, and properties of elements of your application.    List Manager    Allows your application to create lists of items.    Sound Manager    Provides sound output capabilities.    Sound Input Manager    Provides sound input capabilities for Macintosh computers equipped with a sound input device such as a microphone.    The Macintosh Operating SystemThe Macintosh Operating System provides routines that allow you to perform basic low-level tasks such as file input and output, memory management, and process and device control. The Macintosh Toolbox is a level above the Operating System and, as you’ve seen, provides routines that help you implement the standard Macintosh user interface for your application. The Toolbox calls the Operating System to do low-level operations, and you’ll also need to call the Operating System directly yourself.The Macintosh Toolbox allows you to create and manage parts of your application’s user interface, and in some sense mediates your application and the user. By contrast, the Macintosh Operating System essentially mediates your application and the Macintosh hardware. For example, you’ll read and write files not by reading data directly from the medium on which they are stored, but rather by calling appropriate File Manager routines. The File Manager locates the desired data within the logical hierarchical structure of files and directories that it manages; then it calls another part of the Operating System, the Device Manager, to read or write the data on the actual physical device. The File Manager and the Device Manager thereby insulate your application from the low-level details of interacting with the available data-storage hardware.Similarly, the Memory Manager helps you allocate and dispose of memory within your application’s logical address space. The Memory Manager takes care of mapping that logical address space onto the physical address space provided by the available RAM. It also helps manage your application’s memory by moving allocated blocks of memory when necessary to create space for new blocks you want to allocate. Table 1-3 briefly describes the main parts of the Macintosh Operating System.Table 1-3    The Macintosh Operating System(continued)Manager    Description    Process Manager    Handles the launching, scheduling, and termination of applications. Also provides information about open processes.    Memory Manager    Manages the dynamic allocation and releasing of memory in your application’s memory partition.    continued        Virtual Memory Manager    Provides virtual memory services (the ability to have a logical address space that is larger than the total amount of available RAM).    File Manager    Provides access to the file system; allows applications to create, open, read, write, and close files.    Alias Manager    Helps you locate specified files, directories, or volumes.    Disk Initialization Manager    Manages the process of initializing disks.    Device Manager    Provides input from and output to hardware devices attached to the computer.    SCSI Manager    Controls the exchange of information between a Macintosh computer and peripheral devices attached through the Small Computer Standard Interface (SCSI).    Time Manager    Allows you to execute a routine periodically or after a specified time delay.    Vertical Retrace Manager    Allows you to synchronize the execution of a routine with the redrawing of the screen.    Shutdown Manager    Allows you to execute a routine while the computer is shutting down or restarting.    Additional System Software ServicesThe Macintosh system software includes a number of other parts that don’t historically belong to either the Macintosh Toolbox or the Macintosh Operating System. The system software provides an extremely powerful set of services you can use to handle text and to support the varying text-handling requirements of different languages and writing systems. Other system software components include the interapplication communications architecture, QuickTime, and the Communications Toolbox.Text HandlingText handling on the Macintosh has two basic aspects that make it so powerful. First, it is fundamentally graphic; text is drawn as a sequence of graphic elements; therefore the full power and flexibility of the Macintosh graphic interface is available for drawing text in sophisticated ways.Second, text handling is designed to function properly across multiple languages and writing systems. As you develop applications for worldwide markets, you need to consider differences in scripts, languages, and regions. The Macintosh system software presents one of the most flexible architectures for developing applications that can support more than one script.A script, such as Roman, Kanji, or Arabic, is a writing system for a human language such as English, Japanese, or Arabic. Scripts have different characteristics; for example, they can differ in the direction in which their characters and lines run and in the number of characters in their character sets. The way in which you need to input, display, render, and edit text may change depending on the script in use.A Macintosh script system is a set of system resources that support text input, manipulation, and display for a given writing system. The Macintosh script management system consists of system software managers and the WorldScript extensions, which together give your application the power to create and work with text of any script system. These are the essential text-handling managers:n    QuickDraw is the graphics manager of Macintosh system software. Your application makes QuickDraw calls to write text to the screen or to a printer. When QuickDraw draws text, it draws it according to the settings of the current window’s graphics port record, which includes the location information and complete font information. QuickDraw can draw text of any script system. Figure 1-4 shows some of QuickDraw’s text-drawing capabilities.Figure 1-4    A multiscript line of text drawn by QuickDrawn    The Font Manager supports QuickDraw by providing the fonts that QuickDraw needs, in the typefaces, sizes, and styles that QuickDraw requests. The Font Manager keeps track of all fonts available to an application, and supports fonts for all script systems.n    The Text Utilities are an integrated collection of routines for performing a variety of operations on text, ranging from sorting strings to formatting dates and times to finding word breaks. The Text Utilities work in conjunction with the Macintosh script management system and can take into account the differences in text handling among script systems. If you use these routines, you can handle text operations in a manner that is transportable to different parts of the world.n    The Script Manager is at the center of the Macintosh script management system. It initializes script systems, maintains important data structures, supports switching text input among different script systems, and provides several text-manipulation services.n    The Text Services Manager supports text service components such as input methods. If your application uses the Text Services Manager, it can support the special kinds of text input needed for 2-byte script systems such as Japanese, Chinese, and Korean. Figure 1-5 shows how you can use the Text Services Manager to convert Japanese text.Figure 1-5    Input and conversion of Japanese text using the Text Services ManagerYou can use the script management system to achieve any level of text-handling sophistication, from simple display of static text in one language to highly sophisticated multilanguage word processing and page layout. The simplest way to achieve basic worldwide flexibility in text handling is to use TextEdit, which provides simple text-handling capabilities for text of any script system, including multiscript text. TextEdit automatically handles text with more than one script, style, and direction. For example, TextEdit supports mixing English text (a left-to-right directional script) with Arabic text (a right-to-left directional script) in the same line (as you saw in Figure 1-4).NoteFor complete information on text handling, including multiscript text handling, see Inside Macintosh: Text. For information on individual script systems and how to localize your software for markets around the world, see Guide to Macintosh Software Localization. <8bat\>uInterapplication CommunicationThe interapplication communications (IAC) architecture provides a standard and extensible mechanism for communication among Macintosh applications. The IAC architecture includes these main parts:n    The Edition Manager allows applications to automate copy and paste operations between applications, so that data can be shared dynamically.n    The Apple Event Manager allows applications to send and respond to Apple events.n    The Event Manager allows applications to send and respond to high-level events other than Apple events.n    The Program-to-Program Communications (PPC) Toolbox allows applications to exchange blocks of data with each other by reading and writing low-level message blocks. It also provides a standard user interface that allows a user working in one application to select another application with which to exchange data.The parts of the IAC architecture depend upon each other in fairly straightforward ways. The Edition Manager uses the services of the Apple Event Manager to support dynamic data sharing. The Apple Event Manager, in turn, relies on the Event Manager to send Apple events as high-level events, and the Event Manager uses the services of the PPC Toolbox.If you want your application to exchange data with another application, you’ll probably use either the Edition Manager or the Apple Event Manager. The Edition Manager allows users to copy data from one application’s document to another application’s document, updating the information automatically when the data in the original document changes. Figure 1-6 shows how you can use the Edition Manager to create a poster whose elements (an illustration, a title, and some text) all originate in documents created by other applications. If, for example, the user changes the illustration in the original document, the copy of that illustration in the poster could be updated automatically.Figure 1-6    Sharing dynamic data with other applicationsThe Apple Event Manager allows you to send and receive Apple events, which are high-level events that conform to the Apple Event Interprocess Messaging Protocol. The Apple Event Registry: Standard Suites describes a standard vocabulary of Apple events that you can use to communicate with other open applications. Typically you use Apple events to request services and information from other applications, or to provide services and information in response to such requests.Communication between two applications that support Apple events is initiated by a client application, which sends an Apple event to request a service or information. For example, a client application might request services such as printing specific files, checking the spelling of a list of words, or performing a numerical calculation; or it might request information, such as one customer’s address or a list of names and addresses of all customers living in Ohio. The application providing the service or the requested information is called a server application. The client and server applications can reside on the same local computer or on remote computers connected to a network.Figure 1-7 shows the relationships among a client application, the Apple Event Manager, and a server application. The client application uses Apple Event Manager routines to create and send the Apple event, and the server application uses Apple Event Manager routines to interpret the Apple event and respond appropriately. If the client application so requests, the server application sends back a reply Apple event.Figure 1-7    Sending and responding to Apple eventsAs you might imagine, there are many predefined kinds of Apple events, corresponding to the many services one application might request of another. Apple events are grouped into standard suites or groups of related events. Usually, you implement all the events in a given suite at the same time. The standard Apple event suites include the following:n    The Required suite consists of four basic Apple events that your application must support if it supports any Apple events at all. These events are Open Documents, Open Application, Print Documents, and Quit Application. The Finder uses these events for launching and terminating applications.n    The Core suite consists of the basic Apple events that nearly all applications use to communicate, including Get Data, Set Data, Move, Delete, and Save. You should support all the Apple events in the Core suite that make sense for your application.n    A functional-area suite consists of a group of Apple events that support a related functional area. One example of a functional area is the Text suite, which includes events related to text processing.If an Apple event is one of these standard events, the client application can construct the event and the server application can interpret it according to the standard definition for that event. To ensure that your application can respond to Apple events sent by other applications, you should support the standard Apple events that are appropriate for your application.NoteSee the book Inside Macintosh: Interapplication Communication for complete details about the interapplication communications architecture. <8bat\>uQuickTimeQuickTime is a collection of managers and other system software components that allow your application to control time-based data. QuickTime allows you to integrate time-based data (such as video clips, animation sequences, sound sequences, or time-indexed scientific data) into your application and to let users manipulate it in the same easy, intuitive way that they manipulate other elements of the Macintosh user interface. With QuickTime, your application can allow users to display, edit, copy, and paste time-based data much as they do text and graphics.A movie is a collection of one or more streams of data, called tracks. Each track represents a stream of data of a particular type, such as video, sound, still images, or animation. Depending on the way the tracks are defined, one or more tracks can be active at certain times while the movie is playing.QuickTime consists mainly of these pieces:n    the Movie Toolboxn    the Image Compression Managern    a set of predefined componentsMany applications that incorporate QuickTime capabilities are interested only in playing movies. To do so, they call the Movie Toolbox, which provides routines that allow you to store, retrieve, and manipulate time-based data stored in QuickTime movies. Figure 1-8 illustrates the relationship between the various QuickTime managers and components.Figure 1-8    Playing a QuickTime movieNoteSee the books Inside Macintosh: QuickTime and Inside Macintosh: QuickTime Components for complete details about QuickTime. <8bat\>uCommunications ToolboxThe Communications Toolbox is a collection of system software managers that you can use to provide your application with basic networking and communications services. You’re likely to use the Communications Toolbox only if your application is specifically concerned with communication between computers. Examples of such applications include telecommunications packages and electronic bulletin board applications. By using the Communications Toolbox, you can insulate your application from the details of the actual physical connection between your computer and the remote computer.The Communications Toolbox consists of four managers:n    The Connection Manager, which you can use to create and maintain a network connection.n    The Terminal Manager, which you can use to emulate a particular terminal during a network connection.n    The File Transfer Manager, which you can use to transfer files between your computer and the remote computer to which you are connected.n    The Communications Resource Manager, which you can use to register and keep track of communications resources.NoteFor complete information about the Communications Toolbox, see the book Inside the Macintosh Communications Toolbox. <8bat\>uSystem Software RoutinesBy now, you might be wondering how these various system software routines are made available to your application. In traditional programming environments, you gain access to such special routines by linking a subroutine library—which contains the actual executable code of those routines—to your application. The code of the special routine is contained in your application, just like the code of any application-defined routine.One main drawback of such an approach is that it tends to result in very large applications. As you might imagine, the code comprising the thousands of system software routines takes up quite a bit of space. It would be impractical to link all that code, or whatever subset of it an application actually used, to each application.Another important drawback of the traditional approach is the difficulty of revising system software routines to provide new capabilities or to fix bugs. You would need to obtain a new subroutine library and then rebuild your application so that the new code is included in it.The original Macintosh system software circumvented these problems by adopting a fairly novel approach. The software routines that make up the Macintosh Toolbox and the Macintosh Operating System reside mainly in read-only memory (ROM), provided by special chips contained in every Macintosh computer. When your application calls a Toolbox routine like NewWindow, the Operating System intercepts the call and executes the appropriate code contained in ROM.This mechanism provides a simple way for the Operating System to substitute the code that is executed in response to a particular system software routine. Instead of executing the ROM-based code for some routine, the Operating System might choose to load some substitute code into the computer’s random-access memory (RAM); then, when your application calls the routine in question, the Operating System intercepts the call and executes that RAM-based code.RAM-based code that substitutes for ROM-based code is called a patch. Patches are usually stored in the System file, located in the System Folder. The System file also contains collections of static data, known as resources, that applications can use to help present the standard Macintosh user interface.The System file can also contain system software components that are not in a computer’s ROM. To make one of these components available to your application, the Operating System simply loads it into RAM. This is like a patch, except that the new routines aren’t replacing any existing ROM routines. Originally these sorts of RAM-based system software components were called packages; they were read into RAM only when some application called any one of the routines contained in them. However, because some of these packages have been included in later revisions of the ROM, the distinction between managers and packages has faded with time.The current method for adding capabilities to the system software is to include the executable code of the new routines as a system extension. Extensions are stored in a special location (namely, in the Extensions folder in the System Folder) and are loaded into memory at system startup time. QuickTime, for example, is currently distributed as an extension.When your application calls a system software routine, it doesn’t matter, in general, whether the code that is executed in response resides in ROM, is a patch in RAM loaded from the System file, or is part of a RAM-based extension. It is, however, important that the appropriate code exist in at least one of these locations, because your application will crash if you attempt to call a routine that isn’t defined anywhere. So, especially for code contained in extensions, you’ll need to make sure that the code is present in the current operating environment before trying to call it. You can use the Gestalt function to determine whether a particular part of system software is available. For details on calling Gestalt, see the chapter “Gestalt Manager” in Inside Macintosh: Operating System Utilities.There is one further twist in this picture that is worth mentioning. Some routines that are declared in your development system’s header files are provided by the development system itself, not by the system software. These routines, known as glue routines (or just glue), are constructed by modifying available system software routines in some way. Consider the Memory Manager function NewHandle, which allocates a new relocatable block of memory. A call to NewHandle compiles into an executable instruction word. When that instruction is executed, the ROM code (or its RAM patch, if one exists) reads several of the bits in that word to determine exactly what to do. If, for instance, bit 9 of the instruction word is set, the ROM code allocates a block of the requested size and then clears all the bytes in that block to 0.If you’re programming in assembly language, you can set the bits of an instruction word directly. However, if you’re programming in a high-level language like Pascal, you can’t do that. Instead, you need to call a glue routine, in this case NewHandleClear, that takes care of calling NewHandle and setting the appropriate bits in the instruction word. Essentially, NewHandleClear is nothing but NewHandle together with some assembly-language code to set a bit in the instruction word. This translation is handled automatically by your development system at the time your application is compiled.You’ll encounter several other kinds of glue routines. Some glue routines translate high-level routines into low-level routines. Most of the high-level File Manager routines are of this variety. There is, for example, no code in ROM or the System file corresponding to the FSpCreate function. Instead, calling FSpCreate invokes some glue code that creates a parameter block, fills out some of the fields appropriately, and then passes that parameter block to the low-level function PBHCreate.Some other glue routines are pure assembly-language instructions which don’t call any system software routines. You might use glue like this to move a function result or other data from a register onto the stack.You don’t usually need to know whether a particular routine is implemented as glue code, except when you’re doing low-level assembly-language debugging. For the time being, you can consider all the routines defined in Inside Macintosh as part of the Macintosh system software.The Sample ApplicationThe remainder of this book illustrates how to write a Macintosh application by gradually dissecting the source code of a very simple sample application, called Venn Diagrammer. This application allows the user to use Venn diagrams as a method of determining whether a given syllogism is valid (that is, whether the conclusion must be true if both premises are true). This section briefly describes the operation of the Venn Diagrammer application.IMPORTANTThe account of syllogisms and Venn diagrams given here is inadequate for a full understanding of these topics. Most programmers, however, have encountered Venn diagrams at some point in their lives. For a more complete account, consult a good textbook on introductory logic. <8bat\>sWhen the user launches the Venn Diagrammer application, it opens a Venn diagram window, shown in Figure 1-9.Figure 1-9    A typical Venn diagram windowThis window contains a number of distinct parts, shown in Figure 1-10.Figure 1-10    The parts of a Venn diagram windowThis window is designed to let the user select a syllogism and then assess the validity of the syllogism by appropriately modifying the Venn diagram (the five overlapping circles). The user graphs the information contained in the two premises in the three circles on the left and the information in the conclusion in the two circles on the right.As you can see, a syllogism is an argument containing two premises and one conclusion. These three statements must each be of one of four specific forms, known as the statement’s mood. The four moods are often designated by the letters A, E, I, and O, as follows:A    All philosophers are logicians.    E    No philosophers are logicians.    I    Some philosophers are logicians.    O    Some philosophers are not logicians.    Syllogisms are further classified by figure, which determines the order of the terms in the two premises. A syllogism is completely determined by the three terms involved, the moods of the three statements, and the figure.The user can graph the information in a syllogism by clicking in the overlapping regions in the circles. If a region is white, nothing is known about the region. If the region is shaded, it’s known that there is nothing in that region (that is, the region is empty). Finally, if an X appears in the region, it’s known that there is something in that region. A correctly graphed syllogism is shown in Figure 1-11.Figure 1-11    A correctly constructed Venn diagramAt the top of the window, just below the title bar, are a set of tool icons and an empty status area. The tool icons allow the user to perform various operations on the diagram without having to move out of the window. For instance, clicking the tool in the middle (the eraser) clears the Venn diagram. These same operations can also be invoked using the Venn menu, as shown in Figure 1-12.Figure 1-12    The Venn menuThe Venn Diagrammer application displays information in the window’s status area. For example, if the user clicks the leftmost tool icon (or chooses the Assess Validity menu command), the application determines whether the currently displayed syllogism is valid or invalid. If it’s valid, the application displays the message “The argument is valid.” in the status area; otherwise, it displays the message “The argument is invalid.”Conventions for Sample CodeThe sample code presented throughout this book follows a number of conventions to help you understand the code and to distinguish application-defined routines from system software routines. For the most part, the sample code listings presented throughout the Inside Macintosh suite of books follow these conventions as well.n    Constants defined by the Venn Diagrammer application begin with the letter k. For example, the number of tools in a Venn diagram window is specified by the constant kNumTools. There are, however, several exceptions to this rule:n    Constants specifying resource IDs begin with the letter r. For example, the resource ID of the menu bar is specified by the constant rMenuBar.n    Constants specifying menu resource IDs begin with the letter m. For example, the resource ID of the File menu is specified by the constant mFile.n    Constants specifying menu commands begin with the letter i. For example, the number of the Quit command in the File menu is specified by the constant iQuit.n    Constants specifying messages displayed to the user in a window’s status area begin with the letter e. For example, the message “The argument is valid.” is specified by the constant eArgIsValid.n    Application global variables have names beginning with the letter g. For example, the global variable that indicates whether the user wants to quit the application is called gDone. There are no exceptions to this rule.n    Application-defined routines have names beginning with either the prefix Do or the prefix My. For example, the routine that handles window updating is called DoUpdate. Similarly, the routine that returns a random number is called MyRandom. There is one exception to this rule:n    Application-defined routines that return Boolean values have names beginning with the prefix Is. For example, the routine that determines whether a window is a dialog box is called IsDialogWindow. Several system software routines have similar-sounding names. (For instance, the Dialog Manager provides the IsDialogEvent routine.)n    Application-defined data structures and types have names beginning with the prefix My. For example, the structure that holds information about a document window is called MyDocRec. A pointer to a record of type MyDocRec is of type MyDocRecPtr.n    Routine parameters and local variables have names beginning with the prefix my. For example, many of the routines in the Venn Diagrammer application require a window pointer as one of the parameters; this parameter is usually called myWindow. This convention has, however, many exceptions.IMPORTANTThese naming conventions are adopted in this book (and elsewhere in Inside Macintosh) solely for reasons of consistency and clarity. They might not be suitable for your purposes. <8bat\>sIt’s worth mentioning in advance that Venn Diagrammer takes a minimalist approach to error-handling: it tries to detect any errors that might adversely affect its further processing and to work around those errors in such a way as to avoid those adverse effects. In fact, this strategy is far too simple for most applications. Your application should provide far more extensive error detection and reporting to the user. See “Handling Errors” beginning on page 176 for some further discussion of error-handling techniques.    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>Listing 2-0Table 2-0MemoryContentsAbout Memory29The System Heap31The System Global Variables31Application Partitions32The Application Stack33The Application Heap34The Application Global Variables and A5 World37Memory Blocks38Nonrelocatable Blocks39Relocatable Blocks40Locking and Unlocking Relocatable Blocks42Purging and Reallocating Relocatable Blocks43Data Types44Pointers and Handles44Strings45Procedure Pointers46Type Coercion47    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>MemoryThis chapter provides a brief introduction to memory management on Macintosh computers. It describes the organization of the partition of memory assigned to your application when it is launched and explains the basic data types used by the Macintosh Toolbox and Operating System. This chapter also describes how you can allocate portions of that memory partition for specific purposes and how the Memory Manager helps to maintain an orderly partition.This chapter provides only the minimum information about memory that you’ll need to understand the rest of this book and to begin reading other Inside Macintosh books. For a more detailed description of basic memory management strategies, see the chapter “Introduction to Memory Management” in the book Inside Macintosh: Memory.About MemoryIn the cooperative multitasking environment provided by the Macintosh Operating System, your application can use only part of the total amount of RAM available on a computer. Some of the available RAM is reserved for use by the Operating System itself, and the remainder of the available memory is shared among all open applications.When the Operating System starts up, it divides the available RAM into two broad sections. It reserves for itself a zone or partition of memory known as the system partition. The system partition always begins at the lowest addressable byte of memory (memory address 0) and extends upward. The system partition consists of two main parts:n    a system heapn    a set of global variablesIn general, the memory in the system partition is for use by the Operating System alone. Your application probably won’t need to read or write that memory.All memory outside the system partition is available for allocation to applications or other software components. In the cooperative multitasking environment, the user can have multiple applications open at once. When an application is launched, the Operating System assigns it a section of memory known as its application partition. In general, an application uses only the memory contained in its own application partition.Figure 2-1 illustrates the organization of memory when several applications are open at the same time. The system partition occupies the lowest position in memory. Application partitions occupy some or all of the remaining space. Note that application partitions are loaded into the top part of memory first. An application partition consists of three main parts:n    an application heapn    a stackn    an A5 world, which includes the application’s global variablesFigure 2-1    Memory organization in the cooperative multitasking environmentThe System HeapThe main part of the system partition is an area of memory known as the system heap. In general, the system heap is reserved for exclusive use by the Operating System and other system software components, which load into it various items such as system resources, system code segments, and system data structures. All system buffers and queues, for example, are allocated in the system heap.The system heap is also used for code and other resources that do not belong to specific applications, such as code resources that add features to the Operating System or that provide control of special-purpose peripheral equipment. System patches and system extensions (stored as code resources of type 'INIT') are loaded into the system heap during the system startup process. Hardware device drivers (stored as code resources of type 'DRVR') are loaded into the system heap when the driver is opened.The System Global VariablesThe lowest part of memory is occupied by a collection of global variables called system global variables (or low-memory system global variables). The Operating System uses these variables to maintain different kinds of information about the operating environment. For example, the Ticks global variable contains the number of ticks (sixtieths of a second) that have elapsed since the system was most recently started up. Similar variables contain, for example, the height of the menu bar (MBarHeight) and pointers to the heads of various operating-system queues (DTQueue, FSQHdr, VBLQueue, and so forth). Most low-memory global variables are of this variety: they contain information that is generally useful only to the Operating System or other system software components.Other low-memory global variables contain information about the current application. For example, the ApplZone global variable contains the address of the first byte of the active application’s partition. The ApplLimit global variable contains the address of the last byte the active application’s heap can expand to include. The CurrentA5 global variable contains the address of the boundary between the active application’s global variables and its application parameters. Because these global variables contain information about the active application, the Operating System changes the values of these variables whenever a context switch occurs (that is, whenever an application takes control of the CPU from another application).In general, it is best to avoid reading or writing low-memory system global variables. Most of these variables are undocumented, and the results of changing their values can be unpredictable. Usually, when the value of a low-memory global variable is likely to be useful to applications, the system software provides a routine that you can use to read or write that value. For example, you can get the current value of the Ticks global variable by calling the TickCount function.Application PartitionsWhen your application is launched, the Operating System allocates for it a partition of memory called its application partition. That partition contains required segments of the application’s code as well as other data associated with the application. Figure 2-2 illustrates the general organization of an application partition.Figure 2-2    Organization of an application partitionYour application partition is divided into three major parts:n    the application stackn    the application heapn    the application global variables and A5 worldThe heap is located at the low-memory end of your application partition and always expands (when necessary) toward high memory. The A5 world is located at the high-memory end of your application partition and is of fixed size. The stack begins at the high-memory end of the A5 world and expands downward, toward the top of the heap.As you can see in Figure 2-2, there is usually an unused area of memory between the stack and the heap. This unused area provides space for the stack to grow without encroaching upon the space assigned to the application heap. In some cases, however, the stack might grow into space reserved for the application heap. If this happens, it is very likely that data in the heap will become corrupted.The ApplLimit global variable marks the upper limit to which your heap can grow. If you call the MaxApplZone procedure at the beginning of your program, the heap immediately extends all the way up to this limit. If you were to use all of the heap’s free space, the Memory Manager would not allow you to allocate additional blocks above ApplLimit. If you do not call MaxApplZone, the heap grows toward ApplLimit whenever the Memory Manager finds that there is not enough memory in the heap to fill a request. However, once the heap grows up to ApplLimit, it can grow no further. Thus, whether you maximize your application heap or not, you can use only the space between the bottom of the heap and ApplLimit.Unlike the heap, the stack is not bounded by ApplLimit. If your application uses heavily nested procedures with many local variables or uses extensive recursion, the stack could grow downward beyond ApplLimit. Because you do not use Memory Manager routines to allocate memory on the stack, the Memory Manager cannot stop your stack from growing beyond ApplLimit and possibly encroaching upon space reserved for the heap. However, an Operating System task checks approximately 60 times each second to see if the stack has moved into the heap. If it has, the task, known as the “stack sniffer,” generates a system error.The Application StackThe stack is an area of memory in your application partition that can grow or shrink at one end while the other end remains fixed. This means that space on the stack is always allocated and released in LIFO (last-in, first-out) order. The last item allocated is always the first to be released. It also means that the allocated area of the stack is always contiguous. Space is released only at the top of the stack, never in the middle, so there can never be any unallocated “holes” in the stack.By convention, the stack grows from high-memory addresses toward low-memory addresses. The end of the stack that grows or shrinks is usually referred to as the “top” of the stack, even though it’s actually at the lower end of memory occupied by the stack.Because of its LIFO nature, the stack is especially useful for memory allocation connected with the execution of functions or procedures. When your application calls a routine, space is automatically allocated on the stack for a stack frame. A stack frame contains the routine’s parameters, local variables, and return address. Figure 2-3 illustrates how the stack expands and shrinks during a function call. The leftmost diagram shows the stack just before the function is called. The middle diagram shows the stack expanded to hold the stack frame. Once the function is executed, the local variables and function parameters are popped off the stack. If the function is a Pascal function, all that remains is the previous stack with the function result on top.Figure 2-3    The application stackNoteDynamic memory allocation on the stack is usually handled automatically if you are using a high-level development language such as Pascal. The compiler generates the code that creates and deletes stack frames for each function or procedure call. <8bat\>uThe Application HeapAn application heap is the area of memory in your application partition in which space is dynamically allocated and released on demand. The heap begins at the low-memory end of your application partition and extends upward in memory. The heap contains virtually all items that are not allocated on the stack. For instance, your application heap contains the application’s code segments and resources that are currently loaded into memory. The heap also contains other dynamically allocated items such as window records, dialog records, document data, and so forth.You allocate space within your application’s heap by making calls to the Memory Manager, either directly (for instance, using the NewHandle function) or indirectly (for instance, using a routine such as the Window Manager’s NewWindow, which in turn calls Memory Manager routines). Space in the heap is allocated in blocks, which can be of any size needed for a particular object.The Memory Manager does all the necessary housekeeping to keep track of blocks in the heap as they are allocated and released. Because these operations can occur in any order, the heap doesn’t usually grow and shrink in an orderly way, as the stack does. Instead, after your application has been running for a while, the heap can tend to become fragmented into a patchwork of allocated and free blocks, as shown in Figure 2-4. This fragmentation is known as heap fragmentation.Figure 2-4    A fragmented heapOne result of heap fragmentation is that the Memory Manager might not be able to satisfy your application’s request to allocate a block of a particular size. Even though there is enough free space available, the space is broken up into blocks smaller than the requested size. When this happens, the Memory Manager tries to create the needed space by moving allocated blocks together, thus collecting the free space in a single larger block. This operation is known as heap compaction. Figure 2-5 shows the results of compacting the fragmented heap shown in Figure 2-4.Figure 2-5    A compacted heapHeap fragmentation is generally not a problem as long as the blocks of memory you allocate are free to move during heap compaction. There are, however, two situations in which a block is not free to move: when it is a nonrelocatable block, and when it is a relocatable block that is temporarily locked in place. To minimize heap fragmentation, you should use nonrelocatable blocks sparingly, and you should lock relocatable blocks only when absolutely necessary. See “Memory Blocks” starting on page 38 for a description of relocatable and nonrelocatable blocks.The Application Global Variables and A5 WorldYour application’s global variables are stored in an area of memory near the top of your application partition known as the application A5 world. The A5 world contains four kinds of data:n    application global variablesn    application QuickDraw global variablesn    application parametersn    the application’s jump tableEach of these items is of fixed size, although the sizes of the global variables and of the jump table vary from application to application. Figure 2-6 shows the standard organization of the A5 world.Figure 2-6    Organization of an application’s A5 worldNoteAn application’s global variables may appear either above or below the QuickDraw global variables. The relative locations of these two items are determined by your development system’s linker. In addition, part of the jump table might appear below the boundary pointed to by CurrentA5. <8bat\>uThe system global variable CurrentA5 points to the boundary between the current application’s global variables and its application parameters. For this reason, the application’s global variables are found as negative offsets from the value of CurrentA5. This boundary is important because the Operating System uses it to access the following information from your application: its global variables, its QuickDraw global variables, the application parameters, and the jump table. This information is known collectively as the A5 world because the Operating System uses the microprocessor’s A5 register to point to that boundary.Your application’s QuickDraw global variables contain information about its drawing environment. For example, among these variables is a pointer to the current graphics port.Your application’s jump table contains an entry for each of your application’s routines that is called by code in another segment. The Segment Manager uses the jump table to determine the address of any externally referenced routines called by a code segment. For more information on jump tables, see the chapter “Segment Manager” in Inside Macintosh: Processes.The application parameters are 32 bytes of memory located above the application global variables; they’re reserved for use by the Operating System. The first long word of those parameters is a pointer to your application’s QuickDraw global variables.Memory BlocksYou can use the Memory Manager to allocate two different types of blocks in your heap: nonrelocatable blocks and relocatable blocks. A nonrelocatable block is a block of memory whose location in the heap is fixed. In contrast, a relocatable block is a block of memory that can be moved within the heap (perhaps during heap compaction). The Memory Manager sometimes moves relocatable blocks during memory operations so that it can use the space in the heap optimally.The Memory Manager provides data types that reference both relocatable and nonrelocatable blocks. It also provides routines that allow you to allocate and release blocks of both types.Nonrelocatable BlocksTo reference a nonrelocatable block, you can use a pointer variable, defined by the Ptr data type.TYPE    SignedByte                     = –128..127;    Ptr                    = ^SignedByte;A pointer is simply the address of an arbitrary byte in memory, and a pointer to a nonrelocatable block of memory is simply the address of the first byte in the block, as illustrated in Figure 2-7. After you allocate a nonrelocatable block, you can make copies of the pointer variable. Because a pointer is the address of a block of memory that cannot be moved, all copies of the pointer correctly reference the block as long as you don’t dispose of it.Figure 2-7    A pointer to a nonrelocatable blockYou can allocate a nonrelocatable block of memory by calling the Memory Manager function NewPtr. The Venn Diagrammer application uses the following line of code to allocate a new window record each time the user creates a new document window:myPointer := NewPtr(sizeof(WindowRecord));Here, myPointer is of type Ptr. (To see this line of code in context, look at Listing 6-6 on page 117.)Relocatable BlocksTo reference relocatable blocks, the Memory Manager uses a scheme known as double indirection. The Memory Manager keeps track of a relocatable block internally with a master pointer, which itself is part of a nonrelocatable master pointer block in your application heap.NoteThe Memory Manager allocates one master pointer block (containing 64 master pointers) for your application at launch time, and you can call the MoreMasters procedure to request that additional master pointer blocks be allocated. <8bat\>uWhen the Memory Manager moves a relocatable block, it updates the master pointer so that it always contains the address of the relocatable block. You reference the block with a handle, defined by the Handle data type.TYPE    Handle                    = ^Ptr;A handle contains the address of a master pointer. The left side of Figure 2-8 shows a handle to a relocatable block of memory located in the middle of the application heap. If necessary (perhaps to make room for another block of memory), the Memory Manager can move that block down in the heap, as shown in the right side of Figure 2-8.Figure 2-8    A handle to a relocatable blockMaster pointers for relocatable objects in your heap are always allocated in your application heap. Because the blocks of master pointers are nonrelocatable, it is best to allocate them as low in your heap as possible. You can do this by calling the MoreMasters procedure when your application starts up.You can allocate a relocatable block of memory by calling the Memory Manager function NewHandle. The Venn Diagrammer application uses the following line of code to allocate a new document record each time the user creates a new document window:myHandle := MyDocRecHnd(NewHandleClear(sizeof(MyDocRec)));Here, myHandle is of type MyDocRecHnd. The NewHandleClear function is a variant of NewHandle that clears all bytes in the new block to 0. (To see this line of code in context, look at Listing 6-6 on page 117.)Whenever possible, you should allocate memory in relocatable blocks. This gives the Memory Manager the greatest freedom when rearranging the blocks in your application heap to create a new block of free memory. In some cases, however, you may be forced to allocate a nonrelocatable block of memory. When you call the Window Manager function NewWindow, for example, the Window Manager internally calls the NewPtr function to allocate a new nonrelocatable block in your application partition. You need to exercise care when calling Toolbox routines that allocate such blocks, lest your application heap become overly fragmented.Using relocatable blocks makes the Memory Manager more efficient at managing available space, but it does carry some overhead. As you have seen, the Memory Manager must allocate extra memory to hold master pointers for relocatable blocks. It groups these master pointers into nonrelocatable blocks. For large relocatable blocks, this extra space is negligible, but if you allocate many very small relocatable blocks, the cost can be considerable. For this reason, you should avoid allocating a very large number of handles to small blocks; instead, allocate a single large block and use it as an array to hold the data you need.As you have seen, a heap block can be either relocatable or nonrelocatable. The designation of a block as relocatable or nonrelocatable is a permanent property of that block. If relocatable, a block can be either locked or unlocked; if it’s unlocked, a block can be either purgeable or unpurgeable. These attributes of relocatable blocks can be set and changed as necessary. The following sections explain how to lock and unlock blocks, and how to mark them as purgeable or unpurgeable.Locking and Unlocking Relocatable BlocksOccasionally, you might need a relocatable block of memory to stay in one place. To prevent a block from moving, you can lock it, using the HLock procedure. Once you have locked a block, it won’t move. Later, you can unlock it, using the HUnlock procedure, allowing it to move again.In general, you need to lock a relocatable block only if there is some danger that it might be moved during the time that you read or write the data in that block. This might happen, for instance, if you dereference a handle to obtain a pointer to the data and (for increased speed) use the pointer within a loop that calls routines that might cause memory to be moved. If, within the loop, the block whose data you are accessing is in fact moved, then the pointer no longer points to that data; this pointer is said to dangle.Using locked relocatable blocks can, however, hinder the Memory Manager as much as using nonrelocatable blocks. The Memory Manager can’t move locked blocks. In addition, except when you allocate memory and resize relocatable blocks, it can’t move relocatable blocks around locked relocatable blocks (just as it can’t move them around nonrelocatable blocks). Thus, locking a block in the middle of the heap for long periods can increase heap fragmentation.Locking and unlocking blocks every time you want to prevent a block from moving can become troublesome. Fortunately, the Memory Manager moves unlocked, relocatable blocks only at well-defined, predictable times. In general, each routine description in Inside Macintosh indicates whether the routine could move or purge memory. If you do not call any of those routines in a section of code, you can rely on all blocks to remain stationary while that code executes.Purging and Reallocating Relocatable BlocksOne advantage of relocatable blocks is that you can use them to store information that you would like to keep in memory to make your application more efficient, but that you don’t really need if available memory space becomes low. For example, your application might, at the beginning of its execution, load user preferences from a preferences file into a relocatable block. As long as the block remains in memory, your application can access information from the preferences file without actually reopening the file. However, reopening the file probably wouldn’t take enough time to justify keeping the block in memory if memory space were scarce.By making a relocatable block purgeable, you allow the Memory Manager to free the space it occupies if necessary. If you later want to prohibit the Memory Manager from freeing the space occupied by a relocatable block, you can make the block unpurgeable. You can use the HPurge and HNoPurge procedures to change back and forth between these two states.IMPORTANTA block you create by calling NewHandle is initially unlocked and unpurgeable. As a result, you don’t have to worry about the block being purged unless you make the block purgeable. <8bat\>sOnce you make a relocatable block purgeable, you should subsequently check handles to that block before using them if you call any of the routines that could move or purge memory. If a handle’s master pointer is set to NIL, then the Operating System has purged its block. To use the information formerly in the block, you must reallocate space for it (perhaps by calling the ReallocateHandle procedure) and then reconstruct its contents (for example, by rereading the preferences file). Figure 2-9 illustrates the purging and reallocating of a relocatable block. When the block is purged, its master pointer is set to NIL. When it is reallocated, the handle correctly references a new block, but that block’s contents are initially undefined.Figure 2-9    Purging and reallocating a relocatable blockData TypesThis section describes some of the general-purpose data types that the Memory Manager defines. These data types are used throughout the Macintosh Toolbox and Operating System.Pointers and HandlesAs you’ve seen, the Memory Manager uses pointers and handles to reference nonrelocatable and relocatable blocks, respectively. The data types Ptr and Handle define pointers and handles as follows:TYPE    SignedByte                 = –128..127;                        {any byte in memory}    Byte                = 0..255;                        {an unsigned byte}    Ptr                = ^SignedByte;                        {address of a signed byte}    Handle                = ^Ptr;                        {address of a master pointer}        The SignedByte data type stands for an arbitrary byte in memory, just to give Ptr and Handle something to point to. The Byte data type is an alternative definition that treats byte-length data as an unsigned rather than a signed quantity.The Pascal language defines the special symbol NIL, which can be the value of any pointer type. You can assign NIL to any pointer (and hence to any handle) to indicate that the pointer has a defined value but does not point anywhere useful. Some system software routines return NIL as the value of a pointer or handle if the routine fails to perform the requested action. For example, the NewHandle routine returns NIL if the requested amount of memory is not available in the application heap.For C, the type declarations look like this:typedef char SignedByte;                                            /*any byte in memory*/typedef unsigned char Byte;                                            /*an unsigned byte*/typedef char *Ptr;                                            /*address of a signed byte*/typedef Ptr *Handle;                                            /*address of a master pointer*/Unlike Pascal, the C language does not contain a reserved symbol for a nil pointer. Most development systems, however, include definitions of both nil and NULL:#define NULL 0#define nil 0Because of C’s loose type conventions, you can assign the values nil and NULL to data types other than pointers and handles. In Pascal, the compiler generates an error if you try to assign the value NIL to an object whose data type is not defined as a pointer to some data type.StringsThe Macintosh system software uses strings in arrays of up to 255 characters, with the first byte of the array storing the length of the string. Some Toolbox routines allow you to pass such a string directly; others require that you pass a pointer or a handle to a string. The Memory Manager provides the following type definitions that define character strings in terms of the Pascal String data type:TYPE    Str15                    = String[15];    Str27                    = String[27];    Str31                    = String[31];    Str63                    = String[63];    Str255                    = String[255];    StringPtr                    = ^Str255;    StringHandle                    = ^StringPtr;The C language treats strings differently than Pascal does. In C, strings are of variable length, with the end of the string marked by a special delimiter, usually the null character (ASCII 0). If you are using C, you must make certain to pass Pascal-style strings to Toolbox routines or to use special versions of the Toolbox routines that accept C strings. Check the documentation for your development environment for complete details.Procedure PointersFor treating procedures and functions as data objects, the Memory Manager defines the ProcPtr data type:TYPE    ProcPtr                     = Ptr;                    {pointer to a procedure}For example, after the declarationsVAR    myProcPtr:                    ProcPtr;PROCEDURE MyProc;BEGIN    ...END;you can make myProcPtr reference the MyProc procedure by using Pascal’s @ operator, as follows:myProcPtr := @MyProc;With the @ operator, you can assign procedures and functions to variables of type ProcPtr, embed them in data structures, and pass them as arguments to other routines. Notice, however, that the data type ProcPtr technically points to an arbitrary byte, not an actual routine. As a result, there’s no way in Pascal to access the underlying routine via this pointer in order to call it. Only routines written in assembly language can actually call routines designated by pointers of type ProcPtr.NoteYou can’t use the @ operator to reference procedures or functions whose declarations are nested within other routines. <8bat\>uType CoercionBecause of Pascal’s strong typing rules, you can’t directly assign a pointer value to a variable of some other pointer type, or pass a pointer variable to a routine requesting some other pointer type. Instead, you have to coerce the pointer from one type to another.For example, you can call the HLock procedure to lock a relocatable block of memory. The HLock procedure requires a parameter of type Handle. If the block you want to lock isn’t referenced by a variable of type Handle, you must coerce the variable to the required type. Here’s an example:HLock(Handle(myData));Similarly, the GetDialogItem procedure returns in a VAR parameter a handle to an item in a dialog box. If you were to use the procedure to obtain the handle to a button in the variable itemHand of type Handle, you might need to access the button as a control. For example, you could access the button’s enclosing rectangle with the code:ControlHandle(itemHand)^^.contrlRect;You can use this same syntax to equate any two variables of the same length. For example:VAR    myChar:                Char;    myByte:                Byte;myByte := Byte(myChar);You can also use the functions ORD, ORD4, and POINTER to coerce variables of different length from one type to another. For example:VAR    myInteger:                Integer;    myLongInt:                LongInt;    myPointer:                Ptr;myInteger := ORD(myLongInt);                                            {two low-order bytes only}myInteger := ORD(myPointer);                                            {two low-order bytes only}myLongInt := ORD(myInteger);                                            {packed into high-order bytes}myLongInt := ORD4(myInteger);                                            {packed into low-order bytes}myLongInt := ORD(myPointer);myPointer := POINTER(myInteger);myPointer := POINTER(myLongInt);NoteAssembly-language and C language programmers don’t need to bother with type coercion. <8bat\>u    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>Listing 3-0Table 3-0ResourcesContentsAbout Resources51Resource Paths52Resource Types55Resource Structure56Using Standard Resources59Using Custom Resources60    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>ResourcesThis chapter describes how your application can use the Resource Manager to create and manage resources, collections of data stored in a file’s resource fork that have a defined structure or type. The Macintosh Operating System and the Macintosh Toolbox define a large number of resource types. You’ll need to include resources of some of these types in your application’s resource file to meet various requirements of the system software. In addition, the system software provides a number of resources (such as fonts, patterns, and icons) that you can use to help create the standard Macintosh user interface for your application.This chapter begins with a general description of resources. Then it shows how ton    use predefined system resourcesn    create resources of a standard typen    define your own custom resources and resource typesFor a complete description of the capabilities of the Resource Manager and for code samples illustrating more advanced resource-handling techniques, see the chapter “Resource Manager” in Inside Macintosh: More Macintosh Toolbox.About ResourcesAn experienced Macintosh programmer might cringe at several features of the GreetMe source code shown in Listing 1-1 on page 3. One of the main sins it commits is this line:gString := 'Hello, world!';The problem with this line is that it includes, as part of the source code of the application, the message string that is to be displayed in the output window. While such an intermixing of code and data might be standard in some programming environments, it’s definitely nonstandard in the Macintosh environment. To change the message, or to produce a version of the message in a different language, you’d need to change the source code and recompile the application. It would be better to isolate the changing data (the message string) from the application’s code.When you’re programming on the Macintosh, you can do this by creating a resource that contains the message string. A resource is any collection of data having a defined structure that is stored in a file designed to hold resources, known as a resource file. Then you can read the message string from the resource file using a call like this:GetIndString(gString, kMessages, kGreetingString);The GetIndString procedure reads the resource of type 'STR#' that has the resource ID kMessages in an open resource fork. This type of resource contains a string list, which is a sequential list of Pascal strings. Then GetIndString selects the string having the index kGreetingString. If there are at least that many strings in the string list, it puts the appropriate string into the first parameter (in this case, gString).NoteThe GetIndString procedure is not part of the Resource Manager, but it does call the Resource Manager. Many Toolbox and Operating System routines internally call the Resource Manager to retrieve information from resources. <8bat\>uThe resources used by an application can be created and changed separately from the application’s code. This separation is the main advantage to having resource files. A change in a simple greeting or in the title of a menu, for example, won’t require any recompilation of code, nor will translation to another language.IMPORTANTProperly written Macintosh applications should store all language- or location-sensitive data as resources, so that localization is largely a matter of editing the application’s resources. <8bat\>sResource PathsAt any given time during your application’s execution, there are usually two or more open resource files from which you can read information. The system resource file is opened by the Operating System at startup time. It contains standard resources, called system resources, shared by all applications. Among these are icons, fonts, sounds, and other collections of data. The system resource file also contains a number of code resources that you call indirectly to help create the standard Macintosh user interface. For example, the standard appearance and behavior of pull-down menus is governed by a menu-definition procedure, stored as a resource of type 'MDEF' in the system resource file. The system resource file also contains code resources that help you create standard windows and controls.Your application’s resource file is opened when your application is launched. You can call the CurResFile function early in your application’s execution to get the reference number of your application’s resource file.gAppsResourceFile := CurResFile;You need to keep track of your application’s resource file because the Resource Manager always looks for resources in the current resource file, which can change. Each time you open a resource file, it becomes the current resource file. You’re likely to open a number of different resource files at various points in your application’s execution. For instance, many applications store the user’s general preferences in a resource file in the Preferences folder in the System Folder. In addition, if your application supports document files, you’ll probably store some of the document’s settings in the document’s resource file. Table 3-1 summarizes the typical locations of resources used by an application.Table 3-1    Typical locations of resourcesResource file    Resources contained in file    System resource file    Standard elements of the Macintosh user interface (such as fonts, sounds, and icons) shared by all applications, and code resources that manage user interface elements (such as menus, controls, and windows)    Application resource file    Resources containing static data (such as menu titles, menu items, and text strings) used by the application    Application preferences file    Resources encoding the user’s global preferences for the application    Document resource file    Resources used only in this document, or resources that govern the appearance of the document’s window (such as its location on the screen)    When searching resource files, the Resource Manager generally begins with the most recently opened one. When you ask it to open a resource of a particular type and ID, it first looks in the current resource file. If the Resource Manager doesn’t find the specified resource there, it then looks in the resource file opened just before the current resource file. As long as the resource remains unfound, the Resource Manager continues until it reaches the last resource file in the chain, which is probably the system resource file. If the specified resource isn’t there either, the Resource Manager gives up and notifies your application that the resource can’t be found. Figure 3-1 illustrates a typical search path followed by the Resource Manager as it looks for a particular font.Figure 3-1    Searching for a resourceNoteUnlike the system resource file and your application’s resource file, a document’s resource file is not automatically opened when you open the document’s data fork. If you want to include a document’s resource fork in the chain of open resource files, you need to open it explicitly (for instance, using the HOpenResFile routine). <8bat\>uIn general it’s best not to rely too much on the Resource Manager’s ability to search through open resource files; instead, you should explicitly set the appropriate resource file as the current resource file (by calling SetResFile) before you read or write any resource data. In addition, you can restrict the Resource Manager’s search for a resource to the current resource file by using special Resource Manager routines. For example, instead of calling GetResource, you can call Get1Resource. This instructs the Resource Manager to look only in the first resource file in the chain of open resource files.Resource TypesAs indicated above, resources are grouped logically by function into resource types. You refer to a resource by passing the Resource Manager a resource specification, which consists of the resource type and an ID number or a name. Any resource type is valid, whether one of those recognized by the Toolbox as referring to a standard Macintosh resource (such as a pattern), or a custom type created for use by your application.NoteThe Resource Manager knows nothing about the formats of the individual types of resources. Only the routines in the other parts of the Toolbox and Operating System that call the Resource Manager have this knowledge. <8bat\>uA resource type can be any sequence of four alphanumeric characters, including the space character. You can create resource types for your application, provided that they consist of all uppercase letters and do not conflict with the standard resource types already created. A resource type is defined by the ResType data type:TYPE ResType = PACKED ARRAY[1..4] OF CHAR;IMPORTANTUppercase letters are distinguished from their lowercase counterparts in resource types. In addition, Apple reserves for its own use all resource types that include any lowercase letters. If you create custom resource types for use by your application, make sure that the type includes all uppercase letters. <8bat\>sTable 3-2 lists the names and uses of some of the standard resource types used by the Macintosh system software. Uppercase resources are listed first.Table 3-2    Some standard resource types(continued)Resource type    Meaning    'ALRT'    Alert box template    'CODE'    Application code segment    'CURS'    Cursor    'DITL'    Item list in a dialog or alert box    'DLOG'    Dialog box template    'FONT'    Bitmapped font    'ICON'    Icon    'MBAR'    Menu bar    'MENU'    Menu    'PAT '    Pattern (The space in the resource type is required.)    continued        'PICT'    QuickDraw picture    'SIZE'    Size of an application’s partition and other information    'STR '    String (The space in the resource type is required.)    'STR#'    String list    'WIND'    Window template    'hdlg'    Help for dialog box or alert box items    'sfnt'    Outline font    'snd '    Sound (The space in the resource type is required.)    You pick out a particular resource by specifying its type together with a resource name or a resource ID number. In general, it’s best to use resource IDs because they’re guaranteed to be unique within any given resource file. By contrast, it’s possible to have two different resources of the same type with the same name.Resource StructureA resource file consists of a number of individual resources together with a resource map, an indication of where in the resource file the data for a given resource is to be found. You usually don’t need to know about the structure—or even the existence—of the resource map. The Resource Manager uses it to keep track of a resource file’s resources. If you lengthen or shorten a resource, or remove one from the resource file entirely, the Resource Manager takes care of modifying the resource map accordingly.Often, you don’t even need to know about the structure of the individual resources you access in a resource fork. Sometimes you just need to open a resource and pass the handle you receive from the Resource Manager to some Toolbox routine. Here’s an example:FOR count := 1 TO 4 DO    gEmptyPats[count] := GetPattern(kEmptyID + (count - 1));FillRgn(myRegion, gEmptyPats[gEmptyIndex]^^);At application startup time, the Venn Diagrammer application reads the four available emptiness patterns from the application’s resource file. Later, when it is drawing the current contents of the Venn diagram, it might fill a specified region with the current pattern. The application itself knows nothing about the actual structure of a pattern.Sometimes, however, you do need to know about the structure of the individual resources you want to use in your application. This is certainly true for any resources your application defines itself. Occasionally, you also need to know how the data in a system resource is structured. Inside Macintosh uses two general methods for displaying the structure of a resource’s data: resource descriptions and resource diagrams.The first method used in Inside Macintosh to describe the structure of a resource involves specifying a description in the Rez resource description language. Listing 3-1 shows the Rez input for a sample dialog box.Listing 3-1    Rez input for the Preferences dialog boxresource 'DLOG' (rVennDPrefsDial, purgeable) {                                                                        /*dialog resource*/    {84, 82, 264, 362},                                    /*rectangle for dialog box*/    noGrowDocProc,                                    /*window definition ID for modeless dialog*/    visible,                                    /*display this dialog box immediately*/    goAway,                                    /*draw a close box*/    0x0,                                    /*initial refCon value of zero*/    rVennDPrefsDial,                                    /*use item list with res ID rVennDPrefsDial*/    "Venn Diagram Preferences",                                    /*window title*/    noAutoCenter                                    /*don't automatically center the window*/};Rez is a resource compiler: it takes a resource description like the one shown in Listing 3-1 and produces a compiled resource. As you can see, the Rez description includes information about the desired dialog box, including the box’s rectangle, window definition ID, and initial window title.Rez is provided as part of the Macintosh Programmer’s Workshop (MPW) and as part of some third-party development environments. If you prefer, you can create and edit resources using tools like ResEdit, a graphic resource editor provided by Apple Computer, Inc. Using ResEdit, you’ll create and modify resources in a slightly more friendly atmosphere, by manipulating windows like the one shown in Figure 3-2.Figure 3-2    The ResEdit version of the Preferences dialog boxResEdit uses an internal resource compiler to turn this graphic representation of a resource into a compiled resource.NoteFor most purposes, and especially for programmers new to the Macintosh environment, ResEdit is a perfectly adequate tool for creating and editing resources. For information about using ResEdit to create resources, see ResEdit Reference. For complete information about using Rez to compile resource descriptions into resources, see Macintosh Programmer’s Workshop Reference. <8bat\>uWhether you use Rez or ResEdit’s internal resource compiler to create resources, the compiled resource will have the same structure. This structure is sometimes depicted in Inside Macintosh using a resource diagram, as illustrated in Figure 3-3.Figure 3-3    A resource diagramUsing Standard ResourcesIn general, you’ll need to create resources describing the standard user interface elements used by your application, includingn    dialog boxesn    dialog box item listsn    menusn    windowsn    controlsFor standard user interface elements, the Macintosh Toolbox provides special routines you can use to open the appropriate resources. For instance, you can call the Dialog Manager function GetNewDialog to read a dialog box resource (of type 'DLOG') and the corresponding item list (of type 'DITL') from your application’s resource fork.myDialog := GetNewDialog(myKind, myPointer, WindowPtr(-1));Similarly, you can call the Window Manager routine GetNewWindow to open a window description resource (of type 'WIND'). Internally, these routines call Resource Manager routines such as GetResource to read the resource data from the resource file.Some Toolbox routines are simply loosely disguised Resource Manager calls. For example, the code shown on page 56 which uses GetPattern to open four available emptiness patterns could be replaced by this functionally equivalent code:FOR count := 1 TO 4 DO    gEmptyPats[count] := GetResource('PAT ', kEmptyID + (count - 1));Most Resource Manager routines that open resources return a handle to the specified resource data. You can pass that handle to other Resource Manager routines, or doubly dereference it to get at the resource data.Using Custom ResourcesIn addition to using system resources to help create the standard Macintosh user interface for your application and standard resource types to help isolate its localizable data, you’ll probably also want to create custom resources. This section illustrates how to define a custom resource type and how to create and manage resources of that type. The source code provided here shows how to handle a preferences file. This file stores the user’s global preferences, and your application can retrieve them each time it is launched. When it starts up, the Venn Diagrammer application tries to open a preferences file, which contains a single resource with the following type and ID:CONST    kPrefResType                        = 'PRFN';                {type of preferences resource}    kPrefResID                        = 259;                {ID of preferences resource}As you’ve seen earlier in this book, the preferences file needs to contain information about the user’s Venn diagram preferences, as displayed in the Preferences dialog box shown in Figure 3-4.Figure 3-4    The Preferences dialog boxHere, there are six pieces of information that need to be tracked. To maintain this information, the Venn Diagrammer application defines a data structure of type MyPrefsRec (defined in Listing 3-2).Listing 3-2    The structure of a resource containing Venn diagram preferencesTYPE    MyPrefsRec = RECORD        autoDiag:                Boolean;                {do we automatically fix the diagram?}        showName:                Boolean;                {do we show names of valid arguments?}        isImport:                Boolean;                {do subjects have existential import?}        isRandom:                Boolean;                {do we select next setting randomly?}        emptyInd:                Integer;                {index of the desired emptiness pattern}        existInd:                Integer;                {index of the desired existence symbol}    END;    MyPrefsPtr = ^MyPrefsRec;    MyPrefsHnd = ^MyPrefsPtr;When it is first launched, the Venn Diagrammer application calls the application-defined routine DoReadPrefs (defined in Listing 3-3) to read the user’s existing preferences settings. First, DoReadPrefs determines the name of the preferences file by reading a resource in the application’s resource file that contains that name. By convention, the name of the preferences file consists of the name of the application followed by the string “ Preferences”, for instance, Venn Diagrammer Preferences.Listing 3-3    Reading a user’s preferencesPROCEDURE DoReadPrefs;    VAR        myVRefNum:                Integer;        myDirID:                LongInt;        myName:                Str255;                {name of this application}        myPrefs:                Handle;                {handle to actual preferences data}        myResNum:                Integer;                {reference number of opened resource file}        myResult:                OSErr;    CONST        kNameID = 4000;                                {resource ID of 'STR#' with filename}BEGIN    {Determine the name of the preferences file.}    GetIndString(myName, kNameID, 1);    {Figure out where the preferences file is.}    IF IsFindFolder THEN        myResult := FindFolder(kOnSystemDisk, kPreferencesFolderType,                                         kDontCreateFolder, myVRefNum, myDirID)    ELSE        myResult := -1;    IF myResult <> noErr THEN        BEGIN            myVRefNum := 0;                                {use default volume}            myDirID := 0;                                {use default directory}        END;    {Open the preferences resource file.}    myResNum := HOpenResFile(myVRefNum, myDirID, myName, fsCurPerm);            {If no preferences file successfully opened, create one }    { by copying default preferences in app's resource file.}    IF myResNum = -1 THEN        myResNum := DoCreatePrefsFile(myVRefNum, myDirID, myName);                IF myResNum <> -1 THEN                                        {if we successfully opened the file...}        BEGIN            UseResFile(myResNum);                                {make the new resource file current one}            myPrefs := Get1Resource(kPrefResType, kPrefResID);            IF myPrefs = NIL THEN                exit(DoReadPrefs);            WITH MyPrefsHnd(myPrefs)^^ DO                BEGIN                            {read the preferences settings}                    gAutoAdjust := autoDiag;                    gShowNames := showName;                    gGiveImport := isImport;                    gStepRandom := isRandom;                    gEmptyIndex := emptyInd;                    gExistIndex := existInd;                END;            {Make sure some preferences globals make sense.}            IF NOT (gExistIndex IN [1..4]) THEN                gExistIndex := 1;            IF NOT (gEmptyIndex IN [1..4]) THEN                gEmptyIndex := 1;            {Reinstate the application's resource file.}            UseResFile(gAppsResourceFile);        END;    gPreferencesFile := myResNum;                                                    {remember its resource ID}END;After determining the name of the preferences file, DoReadPrefs calls the application-defined utility IsFindFolder to see whether the operating environment supports the FindFolder function. (See Listing 9-6 on page 179 for a definition of IsFindFolder.) If it does, DoReadPrefs calls FindFolder to find the location of the Preferences folder. The FindFolder function returns the volume reference number and the directory ID of that folder, if it can be found. If FindFolder isn’t available or if it cannot find the Preferences folder, DoReadPrefs looks in the default directory on the default volume.IMPORTANTJust looking in the default directory when you cannot find the Preferences folder isn’t really the best thing to do. Your application would probably want to look in the System Folder to see if your preferences file is there. <8bat\>sOnce the target folder is successfully located, DoReadPrefs calls the HOpenResFile function to try to open a file having the required name in that folder. If no such file can be opened (as indicated by a returned reference number of –1), DoReadPrefs calls the application-defined function DoCreatePrefsFile to attempt to create a new preferences file. (See Listing 3-4 for a definition of DoCreatePrefsFile.) If the existing or newly created preferences file is successfully opened, then DoReadPrefs calls UseResFile to make that file the current resource file. Then it reads the resource of type kPrefResType and ID kPrefResID from that file. If all goes well, DoReadPrefs reads the current settings from that resource and assigns them to the appropriate global variables:WITH MyPrefsHnd(myPrefs)^^ DO    BEGIN                            {read the preferences settings}        gAutoAdjust := autoDiag;        gShowNames := showName;        gGiveImport := isImport;        gStepRandom := isRandom;        gEmptyIndex := emptyInd;        gExistIndex := existInd;    END;Finally, DoReadPrefs ensures that the values of the two index variables are within acceptable limits and then restores the application’s resource file as the current resource file by calling UseResFile once again. Notice that the preferences resource file is left open; this way, the Venn Diagrammer application need not reopen the file if the user wants to change the stored preferences settings.The DoCreatePrefsFile function that is called by DoReadPrefs is defined in Listing 3-4. Essentially, DoCreatePrefsFile creates a resource file in the appropriate location and with the appropriate name; then it copies into that new resource file an existing set of preferences (stored in the application’s resource fork).Listing 3-4    Creating a preferences fileFUNCTION DoCreatePrefsFile (myVRefNum: Integer; myDirID: LongInt;                                         myName: Str255): Integer;    VAR        myResNum:                Integer;        myResult:                OSErr;        myID:                Integer;                {resource ID of resource in app's res fork}        myHandle:                Handle;                {handle to resource in app's res fork}        myType:                ResType;                {ignored; used for GetResInfo}BEGIN    myResult := noErr;    HCreateResFile(myVRefNum, myDirID, myName);    IF ResError = noErr THEN        BEGIN            myResNum := HOpenResFile(myVRefNum, myDirID, myName, fsCurPerm);            IF myResNum <> -1 THEN                BEGIN                    UseResFile(gAppsResourceFile);                    myHandle := Get1Resource(kPrefResType, kPrefResID);                    IF ResError = noErr THEN                        BEGIN                            GetResInfo(myHandle, myID, myType, myName);                            myResult := DoCopyResource(kPrefResType, myID,                                                         gAppsResourceFile, myResNum);                        END                    ELSE                        BEGIN                            CloseResFile(myResNum);                            myResult := HDelete(myVRefNum, myDirID, myName);                            myResNum := -1;                        END;                END;            DoCreatePrefsFile := myResNum;        END;END;To copy the existing resource from the application’s resource file to the new preferences resource file, DoCreatePrefsFile calls the application-defined routine DoCopyResource. A version of DoCopyResource is shown in Listing 3-5.Listing 3-5    Copying a resource from one resource file to anotherFUNCTION DoCopyResource (rType: ResType; rID: Integer; source: Integer;                                     dest: Integer): OSErr;    VAR        myHandle:                Handle;                            {handle to resource to copy}        myName:                Str255;                            {name of resource to copy}        myAttr:                Integer;                            {resource attributes}        myType:                ResType;                            {ignored; used for GetResInfo}        myID:                Integer;                            {ignored; used for GetResInfo}        myResult:                OSErr;        myCurrent:                Integer;                                {current resource file on entry}BEGIN    myCurrent := CurResFile;                                                    {remember current resource file}    UseResFile(source);                                                    {set the source resource file}    myHandle := Get1Resource(rType, rID);                                                    {open the source resource}    IF myHandle <> NIL THEN        BEGIN            GetResInfo(myHandle, myID, myType, myName);                                                            {get res name}            myAttr := GetResAttrs(myHandle);                                                            {get res attributes}            DetachResource(myHandle);                                            {so we can copy the resource}            UseResFile(dest);                                            {set destination resource file}            IF ResError = noErr THEN                AddResource(myHandle, rType, rID, myName);            IF ResError = noErr THEN                SetResAttrs(myHandle, myAttr);                                        {set res attributes of copy}            IF ResError = noErr THEN                ChangedResource(myHandle)                        ;                {mark resource as changed}            IF ResError = noErr THEN                WriteResource(myHandle);                                        {write resource data}        END;    DoCopyResource := ResError;                                                    {return result code}    ReleaseResource(myHandle);                                                    {get rid of resource data}    UseResFile(myCurrent);                                                    {restore original resource file}END;As you can see, DoCopyResource opens the resource to be copied. It copies that resource into the destination resource file by making the destination file the current resource file and then calling the Resource Manager routine AddResource. However, before calling AddResource, you need to disassociate the source resource from its resource file. Because AddResource requires a handle to some data in memory that is not a handle to an existing resource, you need to call the DetachResource procedure to cut the link between the resource data and its original resource file.You can determine whether a Resource Manager call succeeded by calling the function ResError, which returns the result code from the most recently executed Resource Manager routine. The DoCopyResource function calls ResError repeatedly to make sure that the resource data was successfully added, that the resource attributes were successfully copied, that the destination resource was successfully marked as changed, and that the data was successfully written out to disk.It’s easy to see how to save a set of preferences to the user’s preferences file. In essence, you simply need to reverse the strategy employed in reading the preferences. Listing 3-6 defines the DoSavePrefs procedure, which the Venn Diagrammer application calls whenever the user wants to save the current preferences settings. The DoSavePrefs procedure assumes that the application’s preferences file is already open.Listing 3-6    Saving current preferences settingsPROCEDURE DoSavePrefs;    VAR        myPrefData:                Handle;                {handle to new resource data}        myHandle:                Handle;                {handle to resource to replace}        myName:                Str255;                {name of resource to copy}        myAttr:                Integer;                {resource attributes}        myType:                ResType;                {ignored; used for GetResInfo}        myID:                Integer;                {ignored; used for GetResInfo}BEGIN    {Make sure we have an open preferences file.}    IF gPreferencesFile = -1 THEN                exit(DoSavePrefs);    myPrefData := NewHandleClear(sizeof(MyPrefsRec));    HLock(myPrefData);    WITH MyPrefsHnd(myPrefData)^^ DO        BEGIN            autoDiag := gAutoAdjust;            showName := gShowNames;            isImport := gGiveImport;            isRandom := gStepRandom;            emptyInd := gEmptyIndex;            existInd := gExistIndex;        END;    UseResFile(gPreferencesFile);                                                                {use preferences file}    myHandle := Get1Resource(kPrefResType, kPrefResID);    IF myHandle <> NIL THEN        BEGIN            GetResInfo(myHandle, myID, myType, myName);                                                            {get res name}            myAttr := GetResAttrs(myHandle);                                                            {get res attributes}            RmveResource(myHandle);            IF ResError = noErr THEN                AddResource(myPrefData, kPrefResType, kPrefResID, myName);            IF ResError = noErr THEN                WriteResource(myPrefData);        END;    HUnlock(myPrefData);    ReleaseResource(myPrefData);    UseResFile(gAppsResourceFile);                                                        {restore app's resource file}END;The DoSavePrefs procedure creates a new preferences record and fills in the fields as appropriate. Then it removes the existing preferences resource from the preferences file and adds a new resource. To make sure that the new resource data is written out to disk, DoSavePrefs calls the WriteResource procedure. Finally, DoSavePrefs restores the application’s resource file as the current resource file.    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>Listing 4-0Table 4-0EventsContentsAbout Events71Initializing an Application74Receiving Events75Handling Events Outside the Main Event Loop79    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>EventsThis chapter describes how you can use the Event Manager to receive information about user actions and to receive notice of changes in the processing status of your application. One of the key elements of a well-written Macintosh application is its “user-centered” design. This means, among other things, that instead of carrying out a sequence of steps in a predetermined order, the application is driven primarily by user actions (such as moving the mouse, pressing the mouse button, and typing characters) whose order cannot in general be predicted. This chapter describes how the Macintosh system software reports user actions to your application and shows how to structure your application to facilitate the implementation of user-centered design.This chapter begins by describing some of the features of a good user-centered design and some general ways to implement them. Then it shows how ton    initialize the basic Toolbox managersn    receive information from the Event Manager about user actionsn    respond to user actionsFor a complete description of the capabilities of the Event Manager, see the chapter “Event Manager” in Inside Macintosh: Macintosh Toolbox Essentials. For the complete story on the features of a good user interface, see Macintosh Human Interface Guidelines.About EventsProbably the most distinctive aspect of a well-written Macintosh application is that it puts users in control of the application, not the other way around. To be in control, the user should be able to perform, at any particular time, any of a wide array of actions. These actions might include pulling down one of your application’s menus, choosing a menu command, typing some characters, moving a window, and so forth. A key concept here is that users should feel that your application is always ready to do something for them.Even when your application is busy performing some lengthy operation (for instance, saving a document to disk) and you need to prevent the user from doing other things, you should provide some safe way for the user to cancel the operation and regain control. Typically you accomplish this by displaying a dialog box indicating that a lengthy operation is underway; the dialog box should indicate some safe way for the user to stop the operation.The essence of this user-centered design is the use of an event-driven programming model. In other words, the system software breaks up the user’s actions into their component events, which are passed one by one to your application for handling. For example, when the user presses a key on the keyboard, the system software sends your application information about that event. This information includes which key was pressed, when the key was pressed, whether any modifier keys (for instance, the Command key) were being held down at the time of the keypress, and so forth. Your application responds to the event by performing whatever actions are appropriate.Your application can receive many types of events. Events are usually divided into three categories:n    low-level eventsn    operating-system eventsn    high-level eventsThe Event Manager returns low-level events to your application for occurrences such as the user pressing the mouse button, releasing the mouse button, pressing a key on the keyboard, or inserting a disk. The Event Manager also returns low-level events to your application if your application needs to activate a window (that is, make changes to a window based on whether it is in front or not) or update a window (that is, redraw the window’s contents). When your application requests an event and there are no other events to report, the Event Manager returns a null event.The Event Manager returns operating-system events to your application when the processing status of your application is about to change or has changed. For example, if a user brings your application to the foreground, the Process Manager sends an event through the Event Manager to your application. Some of the work of reactivating your application is done automatically, both by the Process Manager and by the Window Manager; your application must take care of any further processing needed as a result of your application being reactivated.The Event Manager returns high-level events to your application as a result of communication directed to your application from another application or process.NoteLow-level events, except for update events and null events, are always directed to the foreground process. Operating-system events are also always directed to the foreground process. High-level events, update events, and null events can be directed to the foreground process or background processes. <8bat\>uFigure 4-1 illustrates the various sources of events that can be passed to your application. As you can see, events originate from a number of different sources: the Operating System Event Manager, Window Manager, Process Manager, and PPC Toolbox.Figure 4-1    Sources of events sent to your applicationThe Event Manager maintains, for each open application, an event stream containing those events that are available to that application. Your general strategy is to retrieve an event, process it, retrieve the next event, process it, and so on indefinitely. You stop this process only when the user elects to quit your application.Initializing an ApplicationWhen your application first starts up, and even before you begin to receive and process events describing the user’s actions, you need to do some initial setting up. As you’ve already seen (page 3), you need to initialize some of the Macintosh Toolbox managers. You also need to set up your menu bar and menus, and perform some other standard initialization. Listing 4-1 shows the code executed by the Venn Diagrammer application when it first starts up.Listing 4-1    Initializing your applicationDoInitManagers;                                            {initialize Toolbox managers}DoSetupMenus;                                            {initialize menus}gDone := FALSE;                                            {initialize global variables}gNumDocWindows := 0;                                            {initialize count of open doc windows}gPrefsDialog := NIL;                                            {initialize ptr to Preferences dialog}gAppsResourceFile := CurResFile;                                            {get refnum of the app's resource file}gPreferencesFile := -1;                                            {initialize res ID of preferences file}DoReadPrefs;                                            {read the user's preference settings}DoVennInit;DoMainEventLoop;                                            {and then loop forever...}The first thing the Venn Diagrammer application does is call the application-defined routine DoInitManagers to set up its application partition and initialize several Toolbox managers. Then it calls DoSetupMenus to create its menu bar and menus. (See Listing 8-1 on page 155 for the definition of DoSetupMenus.)After its menu bar has been created, Venn Diagrammer initializes several global variables and reads the user’s current preferences from a preferences file. Then the application calls another routine, DoVennInit, to handle any other initialization. This includes defining the rectangles and regions in a Venn diagram window and displaying a window.NoteThe DoVennInit procedure is not defined in this book. <8bat\>uOnce the application has initialized itself, it starts executing its main event loop by calling the DoMainEventLoop procedure. In the main event loop, the application calls the Event Manager to get an event, responds to the event, then loops back to repeat the process. See Listing 4-4 on page 77 for a sample event loop.Listing 4-2 defines the DoInitManagers routine. It begins by calling two Memory Manager routines to expand the heap zone to its limit and to create an additional block of master pointers.Listing 4-2    Initializing the main Toolbox ManagersPROCEDURE DoInitManagers;BEGIN    MaxApplZone;                                        {extend heap zone to limit}    MoreMasters;                                        {get 64 more master pointers}    InitGraf(@thePort);                                        {initialize QuickDraw}    InitFonts;                                        {initialize Font Manager}    InitWindows        ;                                {initialize Window Manager}    InitMenus;                                        {initialize Menu Manager}    TEInit;                                        {initialize TextEdit}    InitDialogs(NIL);                                        {initialize Dialog Manager}    FlushEvents(everyEvent, 0);                                        {clear event queue}    InitCursor;                                        {initialize cursor to arrow}END;Then DoInitManagers calls the standard Toolbox initialization routines. Finally, it clears the event queue and calls the QuickDraw routine InitCursor to make sure that the cursor is the standard arrow cursor.Receiving EventsYou receive events by calling an Event Manager routine, usually WaitNextEvent. When you ask for an event, the Event Manager returns the next available event according to its event priority. The Event Manager returns events in this order of priority:    1.    activate events    2.    mouse-down, mouse-up, key-down, key-up, and disk-inserted events in FIFO (first-in, first-out) order    3.    auto-key events    4.    update events (in front-to-back order of windows)    5.    operating-system events (suspend, resume, mouse-moved)    6.    high-level events    7.    null eventsTo retrieve an event, you pass the WaitNextEvent function an event record, defined by the EventRecord data type:TYPE EventRecord =    RECORD        what:                    Integer;                    {event code}        message:                    LongInt;                    {event message}        when:                    LongInt;                    {ticks since startup}        where:                    Point;                    {mouse location}        modifiers:                    Integer;                    {modifier flags}    END;On return from WaitNextEvent, the what field of the event record contains an integer that specifies the type of event received. The Event Manager uses this set of predefined constants to indicate the event type:CONST    nullEvent                        = 0;                    {no other pending events}    mouseDown                        = 1;                    {mouse button pressed}    mouseUp                        = 2;                    {mouse button released}    keyDown                        = 3;                    {key pressed}    keyUp                        = 4;                    {key released}    autoKey                        = 5;                    {key held down}    updateEvt                        = 6;                    {a window needs updating}    diskEvt                        = 7;                    {disk inserted}    activateEvt                        = 8;                    {activate/deactivate window}    osEvt                        = 15;                    {operating-system event}    kHighLevelEvent                        = 23;                    {high-level event}The message field of the event record contains additional information about the event. The interpretation of this field depends on the type of event you’ve received. For some events (such as null events, mouse-up, and mouse-down events), the value in the message field is undefined. For keyboard events, the message field indicates which key was pressed. For activate and update events, the message field contains a window pointer to the affected window. For disk-inserted events, the message field contains the drive number in the low-order word and the result code of the File Manager’s attempt to mount that disk in that drive. Listing 4-3 illustrates how an application reads parts of the message field while handling disk-inserted events.Listing 4-3    Handling disk-inserted eventsPROCEDURE DoDiskEvent (myEvent: EventRecord);    VAR        myResult:                Integer;        myPoint:                Point;BEGIN    IF HiWord(myEvent.message) <> noErr THEN        BEGIN            SetPt(myPoint, 100, 100);            myResult := DIBadMount(myPoint, myEvent.message);        END;END;If the disk was not successfully mounted (that is, if the high-order word of the message field does not contain noErr), then DoDiskEvent calls the system software routine DIBadMount to inform the user and allow the disk to be ejected or reformatted. (See the chapter “Disk Initialization Manager” in Inside Macintosh: Files for more information about handling disk-inserted events.)The where field of the event record contains, for low-level events, the location of the cursor at the time the event was posted. You can use this information to determine where on the screen a mouse-down event occurred, for instance.The modifiers field contains information about the state of the modifier keys and the mouse button at the time the event was posted. For activate events, this field also indicates whether the window should be activated or deactivated. (In System 7, it also indicates whether a mouse-down event caused your application to switch to the foreground.)To handle an event, you simply take whatever action is appropriate for the kind of event it is. Listing 4-4 shows one way to structure an event-handling routine.Listing 4-4    An event loopPROCEDURE DoMainEventLoop;    VAR        myEvent:                EventRecord;        gotEvent:                Boolean;                                {is returned event for me?}BEGIN    REPEAT        gotEvent := WaitNextEvent(everyEvent, myEvent, 15, NIL);        IF NOT DoHandleDialogEvent(myEvent) THEN            IF gotEvent THEN                BEGIN                    CASE myEvent.what OF                        mouseDown:                             DoMouseDown(myEvent);                                                    {see page 120}                        keyDown, autoKey:                             DoKeyDown(myEvent);                                                    {see page 160}                        updateEvt:                             DoUpdate(WindowPtr(myEvent.message));                                                    {see page 124}                        diskEvt:                             DoDiskEvent(myEvent);                                                    {see page 77}                        activateEvt:                             DoActivate(WindowPtr(myEvent.message),                                             myEvent.modifiers);                                    {see page 126}                        osEvt:                             DoOSEvent(myEvent);                                                    {see page 171}                        keyUp, mouseUp:                             ;                        nullEvent:                             DoIdle(myEvent);                                                    {see page 173}                        OTHERWISE                            ;                    END; {CASE}                END            ELSE                DoIdle(myEvent);    UNTIL gDone;                                                {loop until user quits}END;The event loop defined in Listing 4-4 repeatedly calls the WaitNextEvent function to retrieve the next available event. This function returns a value of FALSE if there are no events of the desired type (other than null events) pending for your application. Otherwise, WaitNextEvent returns TRUE.After the next available event is retrieved, the DoMainEventLoop procedure calls the application-defined function DoHandleDialogEvent (defined in Listing 7-5 on page 141) to determine whether the event applies to a dialog box. The DoHandleDialogEvent function returns TRUE if it handled the event and FALSE otherwise.NoteDialog boxes receive special treatment because the system software automatically handles many user actions in dialog boxes. For example, the Dialog Manager handles update events for dialog boxes, and it calls the Control Manager to handle user actions affecting any controls in the dialog box. <8bat\>uIf the event retrieved does not apply to a dialog box, and if it isn’t a null event, then DoMainEventLoop branches into a Pascal CASE statement in which the labels are simply the predefined constants for each event type. As you can see, the event loop calls an application-defined routine to handle each particular kind of event. These routines are defined throughout this book.Handling Events Outside the Main Event LoopYou’ll notice that some types of events—for example, keyUp and mouseUp—are simply ignored by the main event loop defined in Listing 4-4. Key-up events are ignored because most applications don’t need to know that a key was released, only that it was pressed. Similarly, you usually don’t need to know when the mouse button was released, because you’re more interested in knowing whether (and where) the mouse button was pressed. In certain cases, however, you will be interested in a mouse-up event. For example, if the user presses the mouse button while the cursor is in a window’s close box but then moves the cursor outside the close box before releasing the mouse button, you don’t want to handle the mouse-down event. (This is another good example of user-centered design: allowing users to change their minds.)It might appear that a problem is lurking, because the main event loop defined in Listing 4-4 ignores mouse-up events. How, then, can your application determine that the user released the mouse button when the cursor was outside of the close box? The answer is simple: the system software provides a routine, TrackGoAway, that you call in response to a user click in the close box. The TrackGoAway function tracks user actions involving the close box; it returns the Boolean value TRUE if the cursor is still inside the close box when the button is released and FALSE otherwise. Listing 4-5 illustrates how to call TrackGoAway.Listing 4-5    Tracking mouse events in the close boxPROCEDURE DoGoAwayBox (myWindow: WindowPtr; mouseloc: Point);BEGIN    IF TrackGoAway(myWindow, mouseloc) THEN        DoCloseWindow(myWindow);END;The TrackGoAway function exits only when the mouse button is released. Because it determines internally when that happens, your application doesn’t need to.The system software provides routines to handle the three main cases in which you need to track the mouse and determine if the cursor is in a particular location when the button is released. Here are the main routines you’ll use:Mouse-tracking routine    Action    TrackBox    Track the cursor in a window’s zoom box    TrackControl    Track the cursor within a control    TrackGoAway    Track the cursor in a window’s close box    For various purposes, you might need to perform similar tracking on an arbitrary rectangle in a window. The function DoTrackRect defined in Listing 4-6 shows one way to define such a function.NoteVenn Diagrammer calls DoTrackRect to handle mouse-down events in the tool icons. See Listing 6-9 beginning on page 121. <8bat\>uListing 4-6    Tracking the cursor in an arbitrary rectangleFUNCTION DoTrackRect (myWindow: WindowPtr; myRect: Rect): Boolean;    VAR        myIgnore:                LongInt;        myPoint:                Point;BEGIN    InvertRect(myRect);                                        {invert the rectangle}    REPEAT        Delay(kVisualDelay, myIgnore)    UNTIL NOT StillDown;                                        {until mouse is released}    InvertRect(myRect);    GetMouse(myPoint);                                        {get mouse location}    DoTrackRect := PtInRect(myPoint, myRect);END;The DoTrackRect function inverts the specified rectangle and keeps it inverted until the user releases the mouse button. The Event Manager function StillDown looks in your application’s event queue for a mouse-up event; if none is found, StillDown returns TRUE; otherwise, StillDown returns FALSE. Note that DoTrackRect loops until StillDown returns FALSE, indicating that the corresponding mouse-up event has been found. The call to the Delay procedure within the loop is to ensure that the rectangle is inverted for some minimum, user-perceptible amount of time.CONST    kVisualDelay                            = 6;            {wait 6 ticks (one-tenth second)}The DoTrackRect function loops until StillDown detects the appropriate mouse-up event and then returns the specified rectangle to its original state by inverting it again. Next, DoTrackRect calls the Event Manager function GetMouse to determine the current position of the cursor. If, when the mouse button is released, the cursor is still inside the specified rectangle (as determined by the QuickDraw routine PtInRect), then DoTrackRect returns TRUE.As you can see, you sometimes want to call Event Manager routines from outside your main event loop, most often to monitor mouse movements and button states once the user has clicked in some particular part of a window.    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>Listing 5-0Table 5-0DrawingContentsAbout QuickDraw85Points86Rectangles87Regions89Bit Images91Ports and Windows92Drawing Shapes94Drawing Bit Images99Drawing Text101    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>DrawingThis chapter shows how you can draw simple graphics and text inside of windows using QuickDraw, the part of the Macintosh Toolbox that performs graphics operations on the user’s screen. All Macintosh applications use QuickDraw indirectly whenever they call other Toolbox managers to create and manage the basic graphic user interface elements (such as windows, controls, and menus). Most applications also call QuickDraw directly to define areas in a window and to draw appropriate graphic elements in those areas. The Venn Diagrammer application, for instance, calls QuickDraw to draw the overlapping circles, the tool icons, and the figure and mood selection icons. It also calls QuickDraw to draw all the text displayed in a window.This chapter begins with a description of QuickDraw, its basic drawing model, and some of the data structures QuickDraw uses. Then it shows how ton    define and draw simple objects such as lines, rectangles, and circlesn    define complex graphic objects by combining simple objectsn    outline and fill graphic objectsn    draw static (that is, noneditable) text in a windowFor a complete description of the drawing capabilities of QuickDraw, see the chapter “QuickDraw Drawing” in Inside Macintosh: Imaging. For a complete description of the text capabilities of QuickDraw, see the chapter “QuickDraw Text” in Inside Macintosh: Text. To learn how to handle editable text, see the chapter “TextEdit” in Inside Macintosh: Text.About QuickDrawQuickDraw allows you to draw many types of objects on the Macintosh display screen. Some of these objects are illustrated in Figure 5-1.Figure 5-1    Samples of QuickDraw’s abilitiesAs you can see, you can use QuickDraw to drawn    text characters and strings in a number of fonts, sizes, and stylesn    straight lines of any length, width, and patternn    a variety of simple shapes, including rectangles, rounded-corner rectangles, circles, and ovalsn    polygonsn    arcs of ovals, or wedge-shaped sections filled with a patternn    any other arbitrary shape or collection of shapesn    bit images, such as icons, cursors, and patternsThis section explains the basic mathematical model employed by QuickDraw and shows how you can define several of these sorts of objects.PointsQuickDraw measures location and movement in terms of coordinates on a very large plane. The plane is a two-dimensional grid, with integer coordinates ranging from –32767 to 32767, as illustrated in Figure 5-2.Figure 5-2    The coordinate planeThe intersection of a horizontal and a vertical grid line marks a point on the coordinate plane. Because all coordinates are limited to simple integers, there are 4,294,836,224 unique points in the QuickDraw plane.You can store the coordinates of a point into a Pascal variable of type Point, defined by QuickDraw as a record of two integers:TYPE    VHSelect = (v,h);    Point =    RECORD        CASE INTEGER OF            0:    (v:        Integer;                    {vertical coordinate}                 h:        Integer);                    {horizontal coordinate}            1:    (vh:        ARRAY[VHSelect] OF Integer);    END;The variant part of this record lets you access the vertical and horizontal coordinates of a point either individually or as an array. This book will always use the first way of specifying the coordinates. So, for example, the vertical coordinate of the variable myPoint is accessed as myPoint.v.RectanglesAny two points can define the upper-left and lower-right corners of a rectangle on the coordinate plane, as shown in Figure 5-3.Figure 5-3    A rectangleYou can describe a rectangle using a data structure of type Rect, which consists of four integers or two points.TYPE Rect =    RECORD        CASE INTEGER OF            0:    (top:                Integer;                    {top coordinate}                 left:                Integer;                    {left coordinate}                 bottom:                Integer;                    {bottom coordinate}                 right:                Integer);                    {right coordinate}            1:    (topLeft:                Point;                    {upper-left point}                 botRight:                Point);                    {lower-right point}    END;Once again, the record variant allows you to access a variable of type Rect either as four boundary coordinates or as two diagonally opposite corner points. This book will always use the first way of specifying a rectangle. So, for example, the top coordinate of the variable myRect is accessed as myRect.top. NoteIf the bottom coordinate of a rectangle is less than or equal to the top coordinate, or if the right coordinate is less than or equal to the left coordinate, the rectangle is treated as an empty rectangle (that is, one that has no area). <8bat\>uA pixel is a physical dot on the screen and corresponds to a rectangle in the QuickDraw coordinate plane that has sides one coordinate long, as shown in Figure 5-4. (This, of course, is the smallest possible rectangle.)Figure 5-4    Pixels and rectanglesYou can think of a pixel as corresponding to the point at the top left of the rectangle. There are many more points in the QuickDraw coordinate plane than there are pixels on the screen. As a result, you’ll associate small parts of the coordinate plane with areas on the screen. In general, you don’t need to worry about where in that large coordinate plane you’re working, because QuickDraw always forces you to work with a particular graphics port, which has its own local coordinate system. (A graphics port is a complete drawing environment that defines where and how graphics operations will take place; see page 92 for more information on graphics ports.)To draw a line, you can simply move to the desired starting point of the line and draw to the desired end. For example, to draw a line in the current graphics port from point (100,150) to the point (200,250), you could do this:MoveTo(100, 150);LineTo(200, 250);To draw a rectangle, you need to proceed in a slightly different manner. You first need to define the rectangle in the coordinate plane and then perform some graphical operation on the rectangle. Here’s an example:SetRect(myRect, 100, 200, 300, 400);FrameRect(myRect);These two lines of code define a rectangle and then frame it (that is, draw its outline). Instead of just drawing the rectangle’s outline, you could also fill the rectangle with the current pattern (by calling PaintRect) or with some other pattern (by calling FillRect).NoteCoordinates are passed to SetRect in the order left, top, right, bottom (which is different from the order in the Rect data type). The word litterbug is a useful mnemonic; it contains the letters l, t, r, and b in the correct order. <8bat\>uQuickDraw does not contain data types that describe circles or ovals. Instead, you draw an oval by defining a rectangle and then asking QuickDraw to draw the oval that fits inside of the rectangle. The oval is completely enclosed within the rectangle, and never includes any pixels lying outside the boundary. If the rectangle is a square, then the oval is a circle.RegionsOne of QuickDraw’s most powerful capabilities is the ability to work with regions of arbitrary size, shape, and complexity. You define a region by drawing its boundary with QuickDraw operations. The boundary can be any set of lines and shapes (even including other regions) forming one or more closed loops. A region can be concave or convex, can consist of one connected area or many separate ones, and can even have holes in the middle. In Figure 5-5, the region on the left has a hole in it, and the region on the right consists of two disjoint areas.Figure 5-5    Two regionsQuickDraw describes a region using a data structure of type Region. This structure contains two fixed-length fields followed by a variable-length field.TYPE Region =    RECORD        rgnSize:                    Integer;                    {size in bytes}        rgnBBox:                    Rect;                    {enclosing rectangle}        {more data if not rectangular}    END;    RgnPtr                = ^Region;    RgnHandle                = ^RgnPtr;The rgnSize field contains the size, in bytes, of the region variable. The rgnBBox field contains a rectangle that completely encloses the region. In general, however, you’ll treat the Region data structure like a “black box”; you shouldn’t need to read the two named fields except in special circumstances.The Venn Diagrammer application uses a number of regions to pick out the areas defined by the overlapping circles. See “Drawing Shapes” beginning on page 94 for details.Bit ImagesPoints, rectangles, and regions are mathematical models—data types that QuickDraw uses for defining areas on the screen—but they can also be graphic elements that actually appear on the screen. A rectangle, for example, can mathematically define a particular visible area, but it can also be an object to be framed, painted, or filled. QuickDraw also defines a number of other graphic elements, including icons, bitmaps, patterns, and other bit images, that have only a direct graphic interpretation. An icon, for instance, defines an image not by mapping an abstract mathematical representation onto the screen pixels but by directly indicating which pixels in a given area are to be black and which are to be white.IMPORTANTThe discussion in this section applies only to black-and-white bit images, which are the simplest cases. For complete information on color bit images (such as color icons), see Inside Macintosh: Imaging. <8bat\>sThe Macintosh user interface uses bit images extensively, so QuickDraw contains a number of additional data types describing such direct entities and routines to draw them. The Venn Diagrammer application uses two kinds of bit images: bitmaps and patterns.A bitmap is a data structure that defines a physical bit image in terms of the coordinate plane. A bitmap has three parts: a pointer to a rectangular collection of bits, the row width of that rectangular collection, and a boundary rectangle that gives the bitmap both its dimensions and a coordinate system.The structure of a bitmap is defined by the BitMap data type:TYPE BitMap =    RECORD        baseAddr:                    Ptr;                    {pointer to bit image}        rowBytes:                    Integer;                    {row width}        bounds:                    Rect;                    {boundary rectangle}    END;Figure 5-6 shows how these three pieces of information define a particular bitmap.Figure 5-6    A bitmapThe baseAddr field is a pointer to the beginning of the bit image in memory. The rowBytes field is the row width, in bytes. (Both baseAddr and rowBytes must contain even values.) The bounds field is the bitmap’s bounding rectangle. See “Drawing Bit Images” beginning on page 99 for a description of how to display a bitmap.Ports and WindowsAll drawing takes place in a controlled drawing environment known as a graphics port. The graphics port defines a number of drawing parameters, such as the current drawing location, the current font and size used for drawing characters, and so forth. In general, you can think of a graphics port as the window within which you’re currently drawing.A graphics port is defined by the GrafPort data structure.TYPE GrafPort =    RECORD        device:                    Integer;                {device-specific information}        portBits:                    BitMap;                {GrafPort's bit map}        portRect:                    Rect;                {GrafPort's rectangle}        visRgn:                    RgnHandle;                {visible region}        clipRgn:                    RgnHandle;                {clipping region}        bkPat:                    Pattern;                {background pattern}        fillPat:                    Pattern;                {fill pattern}        pnLoc:                    Point;                {pen location}        pnSize:                    Point;                {pen size}        pnMode:                    Integer;                {pen's transfer mode}        pnPat:                    Pattern;                {pen pattern}        pnVis:                    Integer;                {pen visibility}        txFont:                    Integer;                {font number for text}        txFace:                    Style;                {text's character style}        txMode:                    Integer;                {text's transfer mode}        txSize:                    Integer;                {font size for text}        spExtra:                    Fixed;                {extra space}        fgColor:                    LongInt;                {foreground color}        bkColor:                    LongInt;                {background color}        colrBit:                    Integer;                {color bit}        patStretch:                    Integer;                {used internally}        picSave:                    Handle;                {picture being saved}        rgnSave:                    Handle;                {region being saved}        polySave:                    Handle;                {polygon being saved}        grafProcs:                    QDProcsPtr;                {low-level drawing routines}    END;    GrafPtr = ^GrafPort;The fields of a GrafPort data structure are maintained by QuickDraw, and you should never write directly into those fields. You can, and often must, read the fields of a GrafPort structure. For example, it’s often useful to read the portRect field of a variable of type GrafPort, because it gives the rectangle around the content area of a window. (That information was used in Listing 1-1 on page 3 to center a text string.)QuickDraw always performs drawing operations on the current graphics port. As a result, you should explicitly set the graphics port before doing any drawing. A safe strategy is to save and later restore the original graphics port upon entry to any routine that affects the screen. Listing 5-1 shows an example.Listing 5-1    Saving and restoring the current graphics portPROCEDURE DrawInPort(thePort: GrafPtr);    VAR        origPort:                GrafPtr;BEGIN    GetPort(origPort);    SetPort(thePort);    {Do your drawing (erasing, etc.) here.}    SetPort(origPort);END;Notice that QuickDraw uses the GrafPtr data type to refer to graphics ports. For historical reasons, the GrafPort data structure is one of the few objects in the Macintosh system software that’s referred to by a pointer rather than a handle.Drawing ShapesAs you’ve seen, you can draw circles by calling FrameOval. The Venn Diagrammer application uses code like this to draw the outlines of the five circles:FOR count := 1 TO 5 DO    FrameOval(gGeometry^^.circleRects[count]);The rectangles defining the circles are stored in an array of rectangles that is one of the fields of an application-defined data structure of type MyGeometryRec. Venn Diagrammer allocates just one of these records when the application first starts up. The global variable gGeometry is a handle to that record.VAR    gGeometry:                MyGeometryHnd;                            {handle to a geometry record}Listing 5-2 shows part of the structure of this record.Listing 5-2    The structure of a record describing a document window’s geometryTYPE MyGeometryRec =    RECORD        circleRects:                     ARRAY[1..5] OF Rect;                                    {squares for the 5 circles}        circleRgns:                    ARRAY[1..5] OF RgnHandle;                                    {regions for the 5 circles}        premiseRgns:                    ARRAY[1..8] OF RgnHandle;                                    {regions for premises}        concRgns:                    ARRAY[1..4] OF RgnHandle;                                    {regions for conclusion}        {other fields omitted}    END;    MyGeometryPtr = ^MyGeometryRec;    MyGeometryHnd = ^MyGeometryPtr;This record contains all the information needed to perform graphics operations on the Venn diagram in a document window. The fields are initialized at application launch time by the application-defined routine DoInitGeometry, shown in Listing 5-3.Listing 5-3    Initializing the geometry recordPROCEDURE DoInitGeometry;BEGIN    {Allocate the memory needed to hold the diagram's geometry.}    gGeometry := MyGeometryHnd(NewHandleClear(sizeof(MyGeometryRec)));    IF gGeometry = NIL THEN                                                        {make sure we have the memory}        DoBadError(eNotEnoughMemory);                                                    {see Listing 9-5 on page 178}    {Set up the rectangles that define the circles.}    FOR count := 1 TO 5 DO        gGeometry^^.circleRects[count] := MyGetIndCircleRect(count);    {Set up the regions that the circles define.}    DoSetupCircleRegions;    {Set up the overlapping regions within the circles.}    DoSetupOverlapRegions;END;The DoInitGeometry procedure allocates a geometry record and calls other application-defined routines to initialize the fields of that record. First, it calls MyGetIndCircleRect to determine the rectangle bounding each of the five circles.NoteThe MyGetIndCircleRect function is not defined in this book. You could define such a function in many ways. You could determine in advance where in the window the five rectangles should be and then hard-code that information in constants. Alternatively, you could calculate desirable positions dynamically at run time. The Venn Diagrammer application uses the first method, for speed. <8bat\>uThen DoInitGeometry calls two other application-defined routines to set up a number of regions in the window. The first, DoSetupCircleRegions, defined in Listing 5-4, creates regions corresponding to the area inside each of the five circles. These regions are used in turn by the DoSetupOverlapRegions procedure to calculate the regions of intersection.Listing 5-4    Defining circular regionsPROCEDURE DoSetupCircleRegions;VAR    count:            Integer;BEGIN    FOR count := 1 TO 5 DO    BEGIN        gGeometry^^.circleRgns[count] := NewRgn;        OpenRgn;        FrameOval(gGeometry^^.circleRects[count]);        CloseRgn(gGeometry^^.circleRgns[count]);    END;END;You create a new region by calling the NewRgn function, which allocates storage in your application heap for a structure of type Region and returns a handle (of type RgnHandle) to that region. The newly created region is empty. To add to the region, you call the OpenRgn procedure and then draw the outline of the area you want enclosed by the region. As you can see, DoSetupCircleRegions indicates the desired area by calling the FrameOval procedure on a circle’s defining rectangle. When you’re done drawing that outline, you call the CloseRgn procedure, passing it a handle to the region to close.If you simply want to create a region that’s empty, you can call NewRgn, OpenRgn, and CloseRgn without doing any drawing.myRegion := NewRgn;                                            {create an empty region}OpenRgn;CloseRgn(myRegion);The DoSetupOverlapRegions procedure, defined in Listing 5-5, uses the circular regions defined by DoSetupCircleRegions to define the regions corresponding to the areas defined by the overlapping circles.Listing 5-5    Defining noncircular regionsPROCEDURE DoSetupOverlapRegions;VAR    myRegion:                RgnHandle;                            {a scratch region}    count:                Integer;BEGIN    FOR count := 1 TO 8 DO                                            {create new, empty regions}        BEGIN            gGeometry^^.premiseRgns[count] := NewRgn;            OpenRgn;            CloseRgn(gGeometry^^.premiseRgns[count]);        END;    myRegion := NewRgn;                                            {create a scratch region}    OpenRgn;    CloseRgn(myRegion);    {Calculate the overlap regions in the premises diagram.}    HLock(Handle(gGeometry));                                                {lock the handle}    WITH gGeometry^^ DO        BEGIN            DiffRgn(circleRgns[1], circleRgns[2], myRegion);            DiffRgn(myRegion, circleRgns[3], premiseRgns[1]);            SectRgn(circleRgns[1], circleRgns[2], myRegion);            DiffRgn(myRegion, circleRgns[3], premiseRgns[2]);            DiffRgn(circleRgns[2], circleRgns[1], myRegion);            DiffRgn(myRegion, circleRgns[3], premiseRgns[3]);            SectRgn(circleRgns[1], circleRgns[3], myRegion);            DiffRgn(myRegion, circleRgns[2], premiseRgns[4]);            SectRgn(circleRgns[1], circleRgns[2], myRegion);            SectRgn(myRegion, circleRgns[3], premiseRgns[5]);            SectRgn(circleRgns[2], circleRgns[3], myRegion);            DiffRgn(myRegion, circleRgns[1], premiseRgns[6]);            DiffRgn(circleRgns[3], circleRgns[1], myRegion);            DiffRgn(myRegion, circleRgns[2], premiseRgns[7]);        END;    HUnlock(Handle(gGeometry));                                            {unlock the handle}    DisposeRgn(myRegion);                                            {dispose scratch region}END;The DoSetupOverlapRegions procedure is remarkably straightforward. It initializes the regions in the premises diagram and also creates a temporary scratch region. Then it calculates the seven regions of overlap in that diagram by calling SectRgn and DiffRgn on the circular regions defined in Listing 5-4. The SectRgn procedure takes the intersection of two regions and places it into a third region. The DiffRgn procedure takes the portion of the first region that is outside the second region and places it into the third region. Figure 5-7 shows how the overlap regions are defined by taking intersections and unions of the three circles.Figure 5-7    Calculating the overlap regions of a Venn diagramNoteThe definition of DoSetupOverlapRegions given in Listing 5-5 is not complete. It omits calculations of the conclusion regions and of the fields omitted from the MyGeometryRec data structure defined in Listing 5-2. <8bat\>uNow that the Venn Diagrammer application has defined the various regions in the Venn diagram, it’s easy to draw in those regions. For instance, to shade the very center of the diagram, you could call the FillRgn procedure, as follows:FillRgn(gGeometry^^.premiseRgns[5], gEmptyPats[gEmptyIndex]^^);This fills the specified region with the current emptiness pattern.Drawing Bit ImagesThe Venn Diagrammer application uses bit images to draw several parts of a document window, includingn    the tool symbols at the top of a document windown    the figure and mood symbols at the bottom of a windown    the existence symbol within the Venn diagram itselfFigure 5-8 shows the location of these items.Figure 5-8    Bit images in a document windowThe standard way to draw a bit image is to read into memory the appropriate bit data and then call the CopyBits routine to move the data into the desired position in the destination window. The Venn Diagrammer application stores the bit data in resources of type 'ICON'. Then it calls its own application-defined routine DoPlotIcon to move the appropriate portion of the icon into a document window. Notice that none of the bit images in a document window is actually as large as an icon (which is 32 pixels by 32 pixels). Venn Diagrammer uses this strategy because ResEdit provides a simple way to create and edit 'ICON' resources.When Venn Diagrammer starts up, it reads the necessary icon resources into memory using the code in Listing 5-6.Listing 5-6    Reading 'ICON' resources into memory{Get handles to tool icons.}FOR count := 1 TO kNumTools DO    gToolsIcons[count] := GetResource('ICON', kToolsIconStart + (count - 1));{Get handles to available existence-indicating icons.}FOR count := 1 TO 4 DO    gExistIcons[count] := GetResource('ICON', kExistID + (count - 1));{Get handles to mood icons.}FOR count := 1 TO 4 DO    gMoodIcons[count] := GetResource('ICON', kMoodIconStart + (count - 1));{Get handles to figure icons.}FOR count := 1 TO 4 DO    gFigureIcons[count] := GetResource('ICON', kFigIconStart + (count - 1));As you can see, the icons in each group are given contiguous resource IDs in the resource file. The handles to each icon are stored in the appropriate array, accessed by global variables.IMPORTANTAs always, you should make certain that none of the returned handles has the value NIL. For brevity, this check is not shown in Listing 5-6. <8bat\>sTo draw the tools area of a window, for example, Venn Diagrammer uses the code shown in Listing 5-7.Listing 5-7    Drawing the tools area of a document window{Redraw the tool area in the window.}FOR count := 1 TO kNumTools DO    BEGIN        SetRect(myRect, kToolWd * (count - 1), 0, kToolWd * count, kToolHt);        DoPlotIcon(myRect, gToolsIcons[count], myWindow, srcCopy);    END;This code fragment calls the application-defined routine DoPlotIcon to draw the appropriate portion of the icon in the specified rectangle. The DoPlotIcon procedure is defined in Listing 5-8.Listing 5-8    Drawing a portion of an iconPROCEDURE DoPlotIcon (myRect: Rect; myIcon: Handle; myWindow: WindowPtr;                                             myMode: Integer);    VAR        myBitMap:                    BitMap;BEGIN    myBitMap.baseAddr := myIcon^;    myBitMap.rowBytes := 4;    myBitMap.bounds := myRect;    CopyBits(myBitMap, myWindow^.portBits, myRect, myRect, myMode, NIL);END;The DoPlotIcon procedure plots a portion of an icon by defining a bitmap that includes the desired portion of the icon. (The desired portion of the icon is specified by the myRect parameter.) Then DoPlotIcon calls the QuickDraw routine CopyBits to copy the appropriate bits from their location in memory to the desired location in the specified window.The CopyBits procedure transfers a bit image between two existing bit maps. In this case, the two bitmaps are the bitmapped portion of the icon and the bits in the destination window (which are specified by the portBits field of the window’s graphics port; see Listing 6-1 on page 112 for details). The myRect parameter specifies the rectangle to copy; it’s passed to DoPlotIcon from the calling routine so that DoPlotIcon can be used to plot different parts of the source icon. Finally, DoPlotIcon is passed a transfer mode, which indicates how the bits are to be drawn in the existing bit image of the destination rectangle. The constant srcCopy is passed in Listing 5-7 to indicate that the source bitmap is to overwrite the destination bitmap.Drawing TextIn addition to the many routines it provides for defining and drawing both simple and complex graphic elements, QuickDraw also provides support for drawing text. You can use QuickDraw to draw characters, words, or other textual elements at any desired size and in any available font. It might seem odd that QuickDraw handles these operations, until you realize that text, like graphics, permeates the Macintosh user interface. Windows, menus, and some controls (for instance, buttons) have titles, which are essential to the user’s understanding and manipulation of the application. As a result, it makes sense to treat text fundamentally as a graphic object and to assign basic text-drawing responsibilities to QuickDraw, which manages all graphics within the Macintosh system software.Although QuickDraw is ultimately responsible for drawing text on the screen, you might need to use other Toolbox managers for other text-handling needs. For example, if you want the user to be able to input and edit some small amount of text, you can use TextEdit. TextEdit provides basic text-editing capabilities, such as cutting, copying, pasting, and entering words and characters. TextEdit calls QuickDraw to display the editable text. Similarly, if your application allows the user to display text in a variety of fonts, you might need to use the Font Manager. The Font Manager supports QuickDraw by providing the character bitmaps it needs to draw text in a specified font, size, and style. For a complete description of TextEdit and the Font Manager, see Inside Macintosh: Text.The Venn Diagrammer application has very minimal text-handling requirements. It does not support any text entry or editing by the user. Instead, it obtains all the text it needs from resources stored in its resource fork. As a result, the Venn Diagrammer application can use basic QuickDraw text-drawing routines to display its text. For example, the Venn Diagrammer application draws the message in a window’s status area by calling the application-defined routine DoStatusMesg, defined in Listing 5-9.Listing 5-9    Retrieving a status message from a resourcePROCEDURE DoStatusMesg (myWindow: WindowPtr; myMessageID: Integer);    VAR        myText:                Str255;BEGIN    GetIndString(myText, rVennD, myMessageID);    DoStatusText(myWindow, myText);END;As you can see, the DoStatusMesg routine takes two parameters, a window pointer specifying the window whose status area is to be filled in and an integer specifying the index into an 'STR#' resource. Then DoStatusMesg retrieves the appropriate message text and calls the application-defined procedure DoStatusText to print the message in the window.Venn Diagrammer calls DoStatusMesg whenever it needs to display a message in the status area. For instance, when the user wants to determine if a syllogism is valid or not, Venn Diagrammer checks the syllogism’s validity and then executes the code in Listing 5-10.Listing 5-10    Informing the user of an argument’s validity or invalidityIF valid THEN    BEGIN        IF gShowNames THEN                                {show names of valid syllogisms?}            BEGIN                GetIndString(myMesg, rVennD, eArgIsValid);                DoGetName(myWindow, myName);                myMesg := concat(myMesg, ' (', myName, ')');                DoStatusText(myWindow, myMesg);            END        ELSE            DoStatusMesg(myWindow, eArgIsValid);    ENDELSE    DoStatusMesg(myWindow, eArgNotValid);This code fragment illustrates why the Venn Diagrammer application defines two different routines, DoStatusMesg and DoStatusText. The first, DoStatusMesg, retrieves the desired message text from a resource and calls the second, DoStatusText, to display it on the screen. The application also calls DoStatusText at other times, for instance, when it needs to add something to the resource-based message string. In the example shown in Listing 5-10, the application needs to get the name of the valid syllogism, if the user has indicated that this should be done.The DoStatusText procedure is defined in Listing 5-11. Its job is to display the text passed as a parameter in the status area of the specified window.Listing 5-11    Displaying a status messagePROCEDURE DoStatusText (myWindow: WindowPtr; myText: Str255);    VAR        myRect:                Rect;        origSize:                Integer;        origFont:                Integer;        myHandle:                MyDocRecHnd;    CONST        kSlop = 4;        kSize = 9;        kFont = applFont;BEGIN    IF myWindow <> NIL THEN        BEGIN            SetPort(myWindow);            origSize := myWindow^.txSize;                                            {remember original size and font}            origFont := myWindow^.txFont;            TextSize(kSize);                                            {set desired size and font}            TextFont(kFont);            SetRect(myRect, kToolWd * kNumTools, 0,                                     myWindow^.portRect.right, kToolHt);            EraseRect(myRect);            IF length(myText) > 0 THEN                BEGIN                    MoveTo(myRect.left + kSlop, myRect.bottom - kSlop);                    DrawString(myText);                END;            TextSize(origSize);                                            {restore original size and font}            TextFont(origFont);            {Remember the last message printed in this window.}            myHandle := MyDocRecHnd(GetWRefCon(myWindow));            myHandle^^.statusText := myText;        END;END;The DoStatusText procedure first remembers the graphics port’s existing font and size, so that it can change and then later restore those values. Then DoStatusText sets the desired font and size of the status message by calling the QuickDraw routines TextFont and TextSize. You should always use these routines—instead of changing the fields of the grafPort record—whenever you want to change a graphics port’s font and size.IMPORTANTAlthough you should never change the fields of a graphics port directly, you sometimes need to read those fields directly. In Listing 5-11, the original font and size are determined by reading the appropriate fields (txFont and txSize) of the graphics port record. This is necessary because QuickDraw doesn’t provide routines to read that information from a graphics port record. <8bat\>sOnce it’s set the desired font and size, the DoStatusText procedure calls SetRect to define the rectangle into which the text is to be drawn. Then, DoStatusText erases that rectangle by calling EraseRect. If the string to be displayed consists of at least one character, DoStatusText moves to the appropriate spot in the status area and calls the QuickDraw routine DrawString, which draws the specified string at the current drawing location in the window.Finally, DoStatusText restores the graphics port’s original font and size, and then copies the string just drawn into the statusText field of the window’s document record. The Venn Diagrammer application needs to remember each window’s latest status message so that it can redraw the message whenever necessary (for example, if the message is covered up by another window and then later revealed).Venn Diagrammer uses similar techniques for all other text drawing it requires. Remember that this application supports only static text (that is, text that cannot be edited) stored in the application’s resource fork. To allow the user to enter and edit some text, you need to use more powerful text-handling tools. See Inside Macintosh: Text for information about using system software services like the Font Manager and TextEdit to handle editable text. See Inside Macintosh: Files for information on storing text and other data in files. Finally, see the chapter “Dialog Manager” in Inside Macintosh: Macintosh Toolbox Essentials for information on handling text entry and editing in a dialog box.    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>Listing 6-0Table 6-0WindowsContentsAbout Windows109Window Parts110Window Records112Window Types113Creating Windows115Handling Window Events119Mouse Events119Update Events123Activate Events125Closing Windows128    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>WindowsThis chapter describes how your application can use the Window Manager to create and manage windows. Windows delineate the space within which the user enters or views information, and every Macintosh application that has a user interface should use windows to communicate with the user. Any piece of information that your application presents to the user should be displayed in a window. Similarly, any piece of information that your application solicits from the user should involve the user performing appropriate actions (such as typing or clicking) in a window.There are two general kinds of windows: document windows and dialog boxes. Document windows are used primarily to allow the user to enter and manipulate information, such as text, graphics, or other data. Often, but not always, the information in a document window can be stored in a file, from which the user can later retrieve it. Dialog boxes are used for many other purposes, such as alerting the user of unusual occurrences, soliciting information from the user, and displaying various application settings or user preferences.This chapter focuses on techniques for handling windows in general, with particular emphasis on document windows. It shows how ton    determine the type of a windown    create and display windowsn    handle events in windowsn    close and remove windowsFor specific information about dialog windows, see the chapter “Dialog Boxes” later in this book. For a complete description of the capabilities of the Window Manager and for code samples illustrating more advanced window-handling techniques, see the chapter “Window Manager” in Inside Macintosh: Macintosh Toolbox Essentials.About WindowsA window is a user interface element that delimits an area on the screen in which the user can enter or view information. Here “information” is intended quite broadly; for example, an application that draws mazes and allows the user to trace a path through the maze by moving the cursor can reasonably be thought of as displaying information (the maze) and allowing the user to enter information (the desired path through the maze). As a result, virtually any interaction with the user that happens outside the menu bar and menus should occur within a window.The system software provides a wide array of types of window to accommodate the many uses they can have. Window types are distinguished by their appearance and behavior. Some windows have title bars and others do not. Some windows can be moved around on the screen by the user and others cannot. In your choice of a window type, you should be guided by the behavior your application supports in that window.NoteYou can, if necessary, define your own custom types of windows, with an appearance and behavior unlike the windows provided by the system software. For compatibility reasons, however, this practice is generally discouraged. <8bat\>uAs indicated earlier in this chapter, the many types of windows are divided loosely into document windows and dialog boxes. The distinction between windows and dialog boxes is to some degree arbitrary, but in general, you use the Dialog Manager to create and manage dialog boxes and the Window Manager to create and manage document windows. The Dialog Manager essentially just provides a “front-end” to other Toolbox managers, including the Window Manager, the Control Manager, the Event Manager, and TextEdit. The Dialog Manager makes it very easy to create and handle user actions in windows containing controls, text boxes, and other dialog items. However, because dialog boxes are also windows, you might need to use some Window Manager routines as well to manipulate dialog boxes. For example, you can hide a dialog box by calling the HideWindow routine (there is no HideDialog routine).When you are designing your application, you need to decide whether to use the Dialog Manager or the Window Manager to create and manage any particular window. For some types of windows, the decision is obvious. For document windows that can contain variable amounts of data and therefore probably require scroll bars and a size box, you’ll want to use the Window Manager. For simple windows that contain a message and possibly a few buttons, you’ll probably want to use the Dialog Manager. As a dialog box becomes more and more complex, however, you’ll want to consider using the Window Manager and other Toolbox managers instead. The Window Manager provides the greatest control over the appearance and behavior of a window. In particular, any time you need to do moderately complex drawing in the window, you should probably use the Window Manager (and QuickDraw) instead of the Dialog Manager.NoteFor a more detailed list of factors that can effect the decision whether to use the Dialog Manager or the Window Manager (and other Toolbox managers) to manage a window, see the chapter “Dialog Manager” in Inside Macintosh: Macintosh Toolbox Essentials. <8bat\>uWindow PartsThe Window Manager defines and supports a set of standard window elements through which the user can manipulate windows. It’s important that your application follow the standard conventions for drawing, moving, resizing, and closing windows. By presenting the standard interface, you make experienced users instantly familiar with many aspects of your application, allowing them to focus on learning its unique features.The Venn Diagrammer application supports two kinds of windows, a single dialog box for setting general preferences and an unlimited number of document windows for evaluating categorical syllogisms. A sample document window is shown in Figure 6-1.Figure 6-1    A Venn diagram windowThis window contains only two special elements defined by the Window Manager, a title bar and a close box. The title bar displays the name of the window and indicates whether it’s active or not. The Window Manager displays the title of the window in the center of the title bar, in the system font and system font size. If the system font is in the Roman script system, the title bar is 20 pixels high.The close box offers the user a quick way to close a window. If the user clicks the close box, your application should react exactly as if the user had chosen the Close command from the File menu.NoteVenn Diagrammer’s use of standard window elements is purposely restricted to the title bar and close box. Your application’s windows should include as many of the standard window elements as are appropriate. <8bat\>uThe window shown in Figure 6-1 also contains a number of elements that are defined and managed by the Venn Diagrammer application. Immediately under the title bar is a row of five tools, which allow the user to manipulate the Venn diagram without leaving the window. To the right of the tools is a status area, where the Venn Diagrammer application displays information and other feedback to the user. In Figure 6-1, the status area contains a message indicating that the syllogism under consideration is valid; the status area also shows the traditional name of that valid syllogism (Ferio).Underneath the tools area and the status area, the document window contains two sets of overlapping circles, which show the Venn diagram for the syllogism’s premises and conclusion. The user can alter the contents of any region of overlap by clicking in that area. Shading indicates that the region is known to be empty; an X indicates that the region is known to contain something; the lack of either shading or an X indicates that the contents of the region are unknown.The user can alter the syllogism under consideration by changing the figure of the syllogism and the mood of any of the three statements in the syllogism. Any changes in the figure or mood are instantly reflected in the syllogism shown in the bottom center of the window.Window RecordsYou’ve already seen, in skeletal form at least, how to create a window by calling NewWindow (see Listing 1-1 on page 3). When you call NewWindow, the Window Manager creates in your application heap a new window record that contains information about the new window. The Window Manager defines a window record using the WindowRecord data structure, shown in Listing 6-1.Listing 6-1    The WindowRecord data structureTYPE        WindowRecord =     RECORD            port:                    GrafPort;                    {window's graphics port}        windowKind:                    Integer;                    {class of the window}        visible:                    Boolean;                    {visibility}        hilited:                    Boolean;                    {highlighting}        goAwayFlag:                    Boolean;                    {presence of close box}        spareFlag:                    Boolean;                    {presence of zoom box}        strucRgn:                    RgnHandle;                    {handle to structure region}        contRgn:                    RgnHandle;                    {handle to content region}        updateRgn:                    RgnHandle;                    {handle to update region}        windowDefProc:                    Handle;                    {handle to window definition }                                                { function}        dataHandle:                    Handle;                    {handle to window state }                                                { data record}        titleHandle:                    StringHandle;                    {handle to window title}        titleWidth:                    Integer;                    {title width in pixels}        controlList:                    ControlHandle;                    {handle to control list}        nextWindow:                    WindowPeek;                    {pointer to next window }                                                { record in window list}        windowPic:                    PicHandle;                    {handle to optional picture}        refCon:                     LongInt;                    {storage available to your }                                                { application}    END;As you can see, a window record consists of numerous fields that contain information about the window. The first field (port) contains the window’s graphics port, a drawing environment with its own coordinate system. The graphics port in turn contains information about that drawing environment, such as the location of the port on the screen, the default size and font of any text that is to be drawn in the port, and so forth.Because many of the operations you’ll perform on windows are in reality operations on the window’s graphics port, the Window Manager defines the data type WindowPtr as a pointer to the window’s graphics port.TYPE        WindowPtr                = GrafPtr;For example, each time you want to draw in a window, you need to make sure that the window is the current drawing port. To do so, you can simply pass the window pointer to the QuickDraw routine SetPort.SetPort(myWindow);You can do this because a window pointer is simply a pointer to a graphics port, which is the first field in a window record. Similarly, you can determine the location of the window on the screen by inspecting the portRect field of the graphics port. Recall that Listing 1-1 on page 3 centers the text within the window as follows:WITH gWindow^.portRect DO                                            {set the position of the pen}    MoveTo(((right - left) DIV 2) - (StringWidth(gString) DIV 2),                (bottom - top) DIV 2);Usually you don’t need to access or directly modify fields in a window record. If you do need to examine the fields of the window record (other than those contained in the window’s graphics port), you can use the WindowPeek data type:TYPE        WindowPeek                = ^WindowRecord;A WindowPeek data type is a pointer to a window record.NoteDon’t get confused here. A window pointer is a pointer to the window’s graphics port, not a pointer to the window record. The WindowPeek data type is so called because it lets you “peek” into the fields of the window record beyond the graphics port. <8bat\>uWindow TypesThe windowKind field of a window record indicates the type of window that the window record describes. Your application can, if necessary, read the value in that field to determine how to handle a particular window.When the Window Manager creates a new window for a desk accessory, it places a negative value (in particular, the reference ID of the desk accessory) in the windowKind field of the window. In all other cases, the Window Manager puts one of two constants into that field:CONST    dialogKind                = 2;                {dialog or alert window}    userKind                = 8;                {window created by an application}You can rely on this behavior to determine what kind of window a given window pointer picks out. Listing 6-2 defines a function IsAppWindow that returns TRUE if the application created the specified window by calling a Window Manager routine directly. In the case of the Venn Diagrammer application, this means that the window is a document window.Listing 6-2    Determining if a window is a document windowFUNCTION IsAppWindow (myWindow: WindowPtr): Boolean;BEGIN    IF myWindow = NIL THEN        IsAppWindow := FALSE    ELSE        IsAppWindow := WindowPeek(myWindow)^.windowKind = userKind;END;Notice that IsAppWindow coerces the window pointer myWindow to the type WindowPeek before dereferencing it to examine the windowKind field.You can define similar functions to identify dialog boxes and desk accessory windows. Listing 6-3 defines a function IsDialogWindow that returns TRUE if your application created the specified window by calling a Dialog Manager routine.Listing 6-3    Determining if a window is a dialog boxFUNCTION IsDialogWindow (myWindow: WindowPtr): Boolean;BEGIN    IF myWindow = NIL THEN        IsDialogWindow := FALSE    ELSE        IsDialogWindow := WindowPeek(myWindow)^.windowKind = dialogKind;END;Finally, Listing 6-4 defines a function IsDAccWindow that returns TRUE if the specified window was created by a desk accessory.Listing 6-4    Determining if a window is a desk accessory windowFUNCTION IsDAccWindow (myWindow: WindowPtr): Boolean;BEGIN    IF myWindow = NIL THEN        IsDAccWindow := FALSE    ELSE        IsDAccWindow := WindowPeek(myWindow)^.windowKind < 0;END;These three functions are used extensively throughout the code samples in the remainder of this chapter.NoteThe IsDAccWindow function is provided to help maintain compatibility with previous system software versions. When your application is running in System 7, it receives events only for its own windows and for windows belonging to desk accessories that were launched in its partition. <8bat\>uCreating WindowsThe Venn Diagrammer application allows the user to have multiple document windows (that is, multiple Venn diagram windows) on the desktop at the same time. Each different document window probably displays a different syllogism. As a result, the application needs some way to keep track of each window’s current settings.A standard way to do this is to make use of the refCon field in the window record. The refCon field is reserved specifically for use by applications, which can set the field (using the SetWRefCon procedure) to any 4-byte value. Often, applications store a handle to an application-defined data structure that describes the window. This data structure is often known as a document record. Given the window pointer, you can retrieve that handle by calling the GetWRefCon function.The sample code in this book uses a document record of type MyDocRec (shown in Listing 6-5) to store information about the current contents of a Venn diagram window.Listing 6-5    The structure of a document record for the Venn Diagrammer applicationTYPE MyDocRec =                                 {information for a document window}    RECORD        figure:                        Integer;                                {the figure of the syllogism}        mood:                        ARRAY[1..3] OF Integer;                                {the moods of the statements}        terms:                        ARRAY[1..3] OF Str31;                                {the three terms}        statusText:                        Str255;                                {most recent status message}        userSolution:                        MyDiagramState;                                {user's diagram state}        realSolution:                        MyDiagramState;                                {answer's diagram state}        isAnswerShowing:                        Boolean;                                {is the answer showing?}        isExistImport:                        Boolean;                                {stmts imply exists subject?}        needsAdjusting:                        Boolean;                                {diagram needs adjusting?}    END;    MyDocRecPtr = ^MyDocRec;    MyDocRecHnd = ^MyDocRecPtr;As you can see, the document record used by the Venn Diagrammer application contains fields that describe the current settings of the syllogism in the window, including the figure of the syllogism, the mood of each statement in the syllogism, and the terms used in those statements. The document record also contains fields that maintain information about the current appearance of the window, such as the status message most recently displayed in the window’s status area (statusText field) and a Boolean value that indicates whether the answer is visible in the window (isAnswerShowing field). The Venn Diagrammer application uses that Boolean value to determine how to fill in the regions in the overlapping circles. If the value of isAnswerShowing is TRUE, the application displays the correct answer (encoded in the realSolution field); otherwise, the application displays the user’s current answer (encoded in the userSolution field).NoteThe structure of the MyDiagramState data type is not shown in this book. <8bat\>uThe MyDocRec data structure also contains two other fields containing Boolean values. These specify whether the statements that make up the syllogism are to be interpreted as having existential import or not, and whether the window needs to be checked for automatic adjustment.IMPORTANTIf a Venn diagram window contained TextEdit fields or controls (such as radio buttons or scroll bars), the document record could be expanded to include handles to those items. Also, if a file were associated with the window, you’d want the document record to include information about that file. In a nutshell, the document record can contain all relevant information about the window that isn’t contained in the window record. <8bat\>sThe Venn Diagrammer application creates a document record every time it creates a document window, and it stores a handle to the document record in the refCon field of the window record. Listing 6-6 shows the DoCreateWindow routine, which creates a new document window. This function is called when the application is first launched and whenever the user chooses the New command from the File menu.Listing 6-6    Creating a new Venn diagram windowFUNCTION DoCreateWindow: WindowPtr;    VAR        myPointer:                Ptr;        myWindow:                WindowPtr;        myHandle:                MyDocRecHnd;BEGIN    myPointer := NewPtr(sizeof(WindowRecord));    IF myPointer = NIL THEN        exit(DoCreateWindow);    myWindow := GetNewWindow(rVennD, myPointer, WindowPtr(-1));    IF myWindow <> NIL THEN        BEGIN            SetPort(myWindow);            myHandle := MyDocRecHnd(NewHandleClear(sizeof(MyDocRec)));            IF myHandle <> NIL THEN                BEGIN                    HLockHi(Handle(myHandle));                                        {lock the data high in the heap}                    SetWRefCon(myWindow, LongInt(myHandle));                                                                        {attach handle to window record}                    DoSetWindowTitle(myWindow)                ;                        {set the window title}                    {Define initial window settings.}                    WITH myHandle^^ DO                        BEGIN                            figure := 1;                            mood[1] := 1;                            mood[2] := 1;                            mood[3] := 1;                            isAnswerShowing := FALSE;                            isExistImport := gGiveImport;                        END;                    DoGetRandomTerms(myWindow);                    DoCalcAnswer(myWindow);                    {Position the window and display it.}                    DoPositionWindow(myWindow);                    ShowWindow(myWindow);                END {IF myHandle <> NIL}            ELSE                BEGIN                                        {couldn't get a data record}                    CloseWindow(myWindow);                                    DisposePtr(Ptr(myWindow));                                            myWindow := NIL;                                    {so pass back NIL}                END;        END;    DoCreateWindow := myWindow;END;The DoCreateWindow function first attempts to allocate space in the heap for a window record by calling the Memory Manager’s NewPtr function. If no space is available, DoCreateWindow exits and returns NIL to indicate that no new window was created. Otherwise, DoCreateWindow creates the new window, whose size and type are defined in a window resource of type rVennD.CONST    rVennD                = 131;                    {resource ID of document window}If the new window is successfully created, DoCreateWindow next tries to allocate space for a document record. Once again, if the space isn’t available, DoCreateWindow takes care to dispose of the new window and return NIL to the calling routine. Otherwise, DoCreateWindow locks the handle to the document record high in the heap and attaches the document record to the window record by calling SetWRefCon.NoteThe document record data is locked at the top of the heap to help prevent heap fragmentation. See the chapter “Introduction to Memory Management” in Inside Macintosh: Memory for a discussion of when you need to lock data in the heap. <8bat\>uThe DoCreateWindow function next sets up the window’s title (by calling the application-defined procedure DoSetWindowTitle) and initializes some of the fields in the document record. Then DoCreateWindow calls two further application-defined procedures (DoGetRandomTerms and DoCalcAnswer) to initialize the terms field and the realSolution field of the document record. (As for the userSolution field, the NewHandleClear function, which sets all bytes in the block to 0, automatically initializes it to encode an empty diagram, according to a clever scheme.)The application-defined procedure DoPositionWindow sets the original position of the new window according to the user’s expectations and good human interface design. Then DoCreateWindow calls the Window Manager procedure ShowWindow to display the window. The ShowWindow procedure generates and update event for the newly displayed window, thereby causing the Venn Diagrammer application to draw the content region of the window.NoteThe procedure DoPositionWindow is not defined in this book. For a discussion of how to determine the position of a new window, see the chapter “Window Manager” in Inside Macintosh: Macintosh Toolbox Essentials. <8bat\>uHandling Window EventsYour application must be prepared to handle two kinds of window-related events:n    mouse and keyboard events in your application’s windows, which are reported by the Event Manager in direct response to user actionsn    activate and update events, which are generated by the Window Manager and the Event Manager as an indirect result of user actionsBecause Venn Diagrammer does not support text entry, the only relevant keyboard events it needs to handle are keyboard equivalents of menu commands. See the chapter “Menus” in this book for a description of how to handle those events.This section shows how to handle mouse events as well as update and activate events.Mouse EventsWhen your application is active, it receives notice of all mouse-down events in the menu bar, in one of its windows, or in any windows belonging to desk accessories that were launched in its partition. When it receives a mouse-down event, your application should call FindWindow to determine where the cursor was when the mouse button was pressed. The FindWindow function returns a part code that indicates the location of the cursor. These constants define the available part codes:CONST        inDesk                = 0;        {none of the following}        inMenuBar                = 1;        {in menu bar}        inSysWindow                = 2;        {in desk accessory window}        inContent                = 3;        {anywhere in content region except size }                                { box if window is active, }                                { anywhere including size box if window }                                { is inactive}        inDrag                = 4;        {in drag (title bar) region}        inGrow                = 5;        {in size box (active window only)}        inGoAway                = 6;        {in close box}        inZoomIn                = 7;        {in zoom box (window in standard state)}        inZoomOut                = 8;        {in zoom box (window in user state)}In addition to returning a part code as its function result, FindWindow also returns in its second parameter a pointer to a window, if the user presses the mouse button while the cursor is in a window. Listing 6-7 show how the Venn Diagrammer application handles mouse-down events.Listing 6-7    Handling mouse-down eventsPROCEDURE DoMouseDown (myEvent: EventRecord);    VAR        myPart:                Integer;        myWindow:                WindowPtr;BEGIN    myPart := FindWindow(myEvent.where, myWindow);    CASE myPart OF        inMenuBar:             BEGIN                DoMenuAdjust;                DoMenuCommand(MenuSelect(myEvent.where));            END;        InSysWindow:             SystemClick(myEvent, myWindow);        inDrag:             DoDrag(myWindow, myEvent.where);        inGoAway:             DoGoAwayBox(myWindow, myEvent.where);        inContent:             BEGIN                IF myWindow <> FrontWindow THEN                    SelectWindow(myWindow)                ELSE                    DoContentClick(myWindow, myEvent);            END;        OTHERWISE            ;    END;END;If the user clicks in the menu bar, DoMouseDown adjusts the menus and calls the application-defined routine DoMenuCommand to handle whatever menu command the user might choose. See the chapter “Menus” in this book for details on handling menu choices.The FindWindow function returns the part code inSysWindow only when the user presses the mouse button while the cursor is in a window that belongs to a desk accessory launched in your application’s partition. You can then call the SystemClick procedure, passing it the event record and window pointer. The SystemClick procedure makes sure that the event is handled by the appropriate desk accessory. For more information about SystemClick, see the chapter “Event Manager” in Inside Macintosh: Macintosh Toolbox Essentials.If the user clicks in a window’s drag region (identified by the part code inDrag), DoMouseDown calls the application-defined routine DoDrag, defined in Listing 6-8. The DoDrag procedure calls the Window Manager procedure DragWindow, which displays an outline of the window, moves the outline as long as the user continues to drag the window, and calls MoveWindow to draw the window in its new location when the user releases the mouse button.Listing 6-8    Dragging a windowPROCEDURE DoDrag (myWindow: WindowPtr; mouseloc: Point);    VAR        dragBounds:                Rect;BEGIN    dragBounds := GetGrayRgn^^.rgnBBox;    DragWindow(myWindow, mouseloc, dragBounds);END;If the user clicks a window’s close box (identified by the part code inGoAway), you can call an application-defined procedure to close that window. See “Closing Windows” beginning on page 128 for a discussion of how to close windows.Finally, the DoMouseDown procedure defined in Listing 6-7 handles all user clicks in a window’s content region either by selecting the window if it isn’t already the frontmost window or by calling the routine DoContentClick defined in Listing 6-9.Listing 6-9    Handling clicks in a window’s content regionPROCEDURE DoContentClick (myWindow: WindowPtr; myEvent: EventRecord);    VAR        myRect:                Rect;                                {temporary rectangle}        count:                Integer;BEGIN    IF NOT IsAppWindow(myWindow) THEN        exit(DoContentClick);                                            {make sure it's a document window}    SetPort(myWindow);                                                {set port to our window}    GlobalToLocal(myEvent.where);    {See if the click is in the tools area.}    SetRect(myRect, 0, 0, kToolWd * kNumTools, kToolHt);    IF PtInRect(myEvent.where, myRect) THEN        BEGIN                                {if so, determine which tool was clicked}            FOR count := 1 TO kNumTools DO                BEGIN                    SetRect(myRect, (count - 1) * kToolWd, 0,                                     count * kToolWd, kToolHt);                    IF PtInRect(myEvent.where, myRect) THEN                        Leave;                {we found the right tool, so stop looking}                END;            IF DoTrackRect(myWindow, myRect) THEN                DoMenuCommand(BitShift(mVennD, 16) +                             ((kNumTools + 1) - count));                                        {handle tools selections}            exit(DoContentClick);        END;    {See if the click is in the status area.}    SetRect(myRect, kToolWd * kNumTools, 0,                         myWindow^.portRect.right, kToolHt);    IF PtInRect(myEvent.where, myRect) THEN        BEGIN            exit(DoContentClick);                                    END;    {The click must be in somewhere in the rest of the window.}    DoVennClick(myWindow, myEvent.where);END;The general strategy employed in the DoContentClick procedure is to check each part of the content area that is meaningful to the application and determine whether the mouse click occurred there. Then DoContentClick reacts appropriately.After setting the current drawing port to the specified window, DoContentClick calls the GlobalToLocal procedure to convert the mouse click location from global coordinates to local coordinates. Then DoContentClick checks whether the click occurred in the tools area of the window. If so, DoContentClick handles the tool selection by invoking the corresponding menu command and then exiting.If the mouse click was in the status area of a window, DoContentClick simply exits. Otherwise, the user must have clicked somewhere in the content area below the tools and status area. In that case, DoContentClick calls the application-defined function DoVennClick to handle the event.NoteThe DoVennClick function is not defined in this book, but it’s quite simple. It merely checks whether the click occurred in the figure icons, mood icons, or some part of the overlapping circles and, if so, changes the window’s document record accordingly and invalidates any affected part of the screen. A portion of DoVennClick is shown in Listing 6-10. <8bat\>uUpdate EventsThe Event Manager sends your application an update event when part or all of your window’s content region needs to be redrawn. Specifically, the Event Manager checks each window’s update region every time your application calls WaitNextEvent and generates an update event for every window whose update region is not empty.The Window Manager typically triggers update events when the moving and relayering of windows on the screen requires that one or more windows be redrawn. If the user moves a window that covers part of an inactive window, for example, the Window Manager first redraws the window frame. It then adds the newly exposed area to the window’s update region, triggering an update event. In response, your application updates the content region.NoteYour application can receive update events when it is in either the foreground or the background. In general, however, it doesn’t matter whether your update routine is executed in the foreground or the background. <8bat\>uYour application can also trigger update events itself by manipulating the update region. You can add areas to a window’s update region by calling the Window Manager procedures InvalRect (to add a rectangle to the update region) and InvalRgn (to add an arbitrary region to the update region). For example, when the Venn Diagrammer application detects a mouse click in a figure icon, it reacts as shown in Listing 6-10.Listing 6-10    Handling a click in a figure iconFOR count := 1 TO 4 DO    BEGIN        IF PtInRect(myPoint, gFigureRects[count]) THEN            IF myHandle^^.figure <> count THEN                                                    {new rect differ from prev?}                BEGIN                    InvalRect(gFigureRects[myHandle^^.figure]);                    myHandle^^.figure := count;                    InvalRect(gFigureRects[myHandle^^.figure]);                    InvalRect(gTextBoxes[1]);                                            {invalidate premises}                    InvalRect(gTextBoxes[2]);                    DoCalcAnswer(myWindow);                                            {update the current answer}                    DoStatusText(myWindow, '');                                            {remove any existing message}                END;    END;Your general strategy should be to isolate all drawing that occurs in a document window into your application’s update routine. Then, within any other routines, you redraw parts of the window, whenever necessary, by invalidating those parts to add them to the window’s update region. Listing 6-11 shows the update routine for Venn Diagrammer.Listing 6-11    Handling update eventsPROCEDURE DoUpdate (myWindow: WindowPtr);    VAR        myHandle:                MyDocRecHnd;        myRect:                Rect;                        {tool rectangle}        origPort:                GrafPtr;        origPen:                PenState;        count:                Integer;BEGIN    GetPort(origPort);                                            {remember original drawing port}    SetPort(myWindow);    BeginUpdate(myWindow);                                            {clear update region}    EraseRect(myWindow^.portRect);    IF IsAppWindow(myWindow) THEN        BEGIN            {Draw two lines separating tools area from work area.}            GetPenState(origPen);                                    {remember original pen state}            PenNormal;                                    {reset pen to normal state}            WITH myWindow^ DO                BEGIN                    MoveTo(portRect.left, portRect.top + kToolHt);                    Line(portRect.right, 0);                    MoveTo(portRect.left, portRect.top + kToolHt + 2);                    Line(portRect.right, 0);                END;            {Redraw the tools area in the window.}            FOR count := 1 TO kNumTools DO                BEGIN                    SetRect(myRect, kToolWd * (count - 1), 0, kToolWd * count,                                 kToolHt);                    DoPlotIcon(myRect, gToolsIcons[count], myWindow, srcCopy);                END;            {Redraw the status area in the window.}            myHandle := MyDocRecHnd(GetWRefCon(myWindow));            DoStatusText(myWindow, myHandle^^.statusText);            {Draw the rest of the content region.}            DoVennDraw(myWindow);                                        SetPenState(origPen)                        ;                {restore previous pen state}        END; {IF IsAppWindow}    EndUpdate(myWindow);    SetPort(origPort);                                                {restore original drawing port}END;In response to an update event, your application calls BeginUpdate, draws the window’s contents, and then calls EndUpdate. The BeginUpdate procedure limits the visible region to the intersection of the visible region and the update region. Your application can then update either the visible region or the entire content region—because QuickDraw limits drawing to the visible region, only the parts of the window that actually need updating are drawn. The BeginUpdate procedure also clears the update region. After you’ve updated the window, you call EndUpdate to restore the visible region in the graphics port to the full visible region.As you can see in Listing 6-11, the Venn Diagrammer application draws the two lines separating the upper portion of the window’s content region and redraws the tools icons. Then it redraws the most recently displayed status message (which it has saved in the window’s document record). Finally, DoUpdate calls the application-defined routine DoVennDraw to draw the remainder of the content area (the overlapping circles, the figure and mood icons, the term labels on the circles, and the syllogism itself).NoteThe DoVennDraw routine is not shown in this book, but you’ve already seen portions of it in the chapter “Drawing” earlier in this book. <8bat\>uActivate EventsThe window in which the user is currently working is the active window. It’s always the frontmost window on the desktop (unless your application supports “floating” windows) and is easily identified by the “racing stripes” in the title bar.Your application activates and deactivates windows in response to activate events, which are generated by the Window Manager to inform your application that a window is becoming active or inactive. Each activate event specifies the window to be changed and the direction of the change (that is, whether it is to be activated or deactivated).Your application also triggers activate events itself by calling the SelectWindow procedure. When it receives a mouse-down event in an inactive window, for example, your application calls SelectWindow, which brings the selected window to the front, removes the highlighting from the previously active window, and adds highlighting to the selected window (see Listing 6-7 on page 120). The SelectWindow procedure then generates two activate events: the first one tells your application to deactivate the previously active window; the second, to activate the newly active window.When you receive the event for the previously active window, you need to do whatever is appropriate to make the window’s contents appear inactive. Depending on the design of you application, you might need ton    hide the controls and size boxn    remove or alter any highlighting of selections in the windowWhen you receive the event for the newly active window, youn    draw the controls and size boxn    restore the content area as necessary, adding the insertion point in its former location and highlighting any previously highlighted selectionsIf the newly activated window also needs updating, your application also receives an update event, as described in the previous section, “Update Events.”NoteA switch to one of your application’s windows from a different application is handled through suspend and resume events, not activate events. See the chapter “Processes” in this book for a description of how your application can handle suspend and resume events. <8bat\>uListing 6-12 illustrates the application-defined procedure DoActivate, which handles activate events.Listing 6-12    Handling window activations and deactivationsPROCEDURE DoActivate (myWindow: WindowPtr; myModifiers: Integer);    VAR        myState:                Integer;                            {activation state}        myControl:                ControlHandle;BEGIN    myState := BAnd(myModifiers, activeFlag);    IF IsDialogWindow(myWindow) THEN        BEGIN            myControl := WindowPeek(myWindow)^.controlList;            WHILE myControl <> NIL DO                BEGIN                    HiliteControl(myControl, myState + 255 mod 256);                    myControl := myControl^^.nextControl;                END;        END;END;The DoActivate procedure is passed a window pointer and the modifiers field from the event record corresponding to the activate event. The modifiers field contains a bit (defined by the activeFlag constant) that indicates whether the event specifies window activation or deactivation.Notice that DoActivate does nothing to Venn Diagrammer’s document windows, because those windows contain no controls, text, or other items whose visual state might depend on the activation state. For document windows belonging to Venn Diagrammer, the Window Manager handles all the necessary activation and deactivation.NoteIf your application’s document windows contain controls (such as scroll bars), your application does need to activate them appropriately. For more information, see the chapter “Control Manager” in Inside Macintosh: Macintosh Toolbox Essentials. <8bat\>uHowever, the Preferences dialog box supported by the Venn Diagrammer application does contain controls, so the DoActivate procedure needs to inactivate those controls when the window is deactivated and then reactivate them when the window is activated. The DoActivate procedure checks the window’s control list and calls the Control Manager procedure HiliteControl to perform the necessary activation or deactivation. (The head of the window’s control list is stored in the controlList field of the window record.) Figure 6-2 shows the Preferences dialog box in its inactive state.Figure 6-2    An inactive window containing controlsClosing WindowsThe user closes a window either by clicking the window’s close box (in the upper-left corner of the window) or by choosing the Close command from the File menu. To determine which window to close, you’ll proceed in slightly different ways for these two cases. When the user clicks a window’s close box, you can get a window pointer for that window by calling the FindWindow function in response to the mouse-down event. When the user chooses a menu command, however, you can’t do that; instead, you can call the FrontWindow function to retrieve a pointer to the frontmost window on the screen.NoteYou’ll also want to close any windows that might be on the desktop when the user quits your application. You can do that by repeatedly calling FrontWindow until it returns NIL. See Listing 9-4 on page 175. <8bat\>uWhen the user presses the mouse button while the cursor is in the close box, your application should call the TrackGoAway function to track mouse movement until the user releases the button, as illustrated in Listing 6-13.Listing 6-13    Handling clicks in the close boxPROCEDURE DoGoAwayBox (myWindow: WindowPtr; mouseloc: Point);BEGIN    IF TrackGoAway(myWindow, mouseloc) THEN        DoCloseWindow(myWindow);END;If TrackGoAway returns FALSE, the user released the button while the cursor was outside the close box, and your application should do nothing. If TrackGoAway returns TRUE, your application should invoke its own procedure for closing a window.Listing 6-14 illustrates an application-defined function that closes a window. Notice that the effect of this function varies according to which kind of window it’s being asked to close. If the user wants to close a dialog window, DoCloseWindow simply hides the window; this strategy leaves the data structures associated with the dialog box in memory, in expectation that the user might open the dialog box again. If the user wants to close a desk accessory window, DoCloseWindow calls the Desk Manager routine CloseDeskAcc to close that desk accessory.Listing 6-14    Closing a windowPROCEDURE DoCloseWindow (myWindow: WindowPtr);BEGIN    IF myWindow <> NIL THEN        IF IsDialogWindow(myWindow) THEN                                                    {this is a dialog window}            HideWindow(myWindow)        ELSE IF IsDAccWindow(myWindow) THEN                                                    {this is a DA window}            CloseDeskAcc(WindowPeek(myWindow)^.windowKind)        ELSE IF IsAppWindow(myWindow) THEN                                                    {this is a document window}            DoCloseDocWindow(myWindow);END;If the window to be closed is a document window, DoCloseWindow calls the application-defined procedure DoCloseDocWindow defined in Listing 6-15 to deallocate the document record, close the window, and then deallocate the window record. Listing 6-15    Closing a Venn diagram windowPROCEDURE DoCloseDocWindow (myWindow: WindowPtr);    VAR        myHandle:                MyDocRecHnd;BEGIN    IF myWindow = NIL THEN        exit(DoCloseDocWindow)                                                {ignore NIL windows}    ELSE        BEGIN            myHandle := MyDocRecHnd(GetWRefCon(myWindow));            DisposeHandle(Handle(myHandle));            CloseWindow(myWindow)                ;                            {close the window}            DisposePtr(Ptr(myWindow));                                            {and release the storage}        END;END;The DoCloseDocWindow procedure retrieves a handle to the document record from the window record. Then it calls DisposeHandle to free the memory occupied by the document record. Next DoCloseDocWindow closes the window by calling the Window Manager procedure CloseWindow and deallocates the window record by calling DisposePtr.NoteWhen you create a window, if you allow the Window Manager to allocate memory for the window record (by passing NIL as the second parameter to GetNewWindow), then you should call the DisposeWindow procedure to close the window, instead of calling CloseWindow and DisposePtr. <8bat\>u    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>Listing 7-0Table 7-0Dialog BoxesContentsAbout Dialog Boxes133Using Modeless Dialog Boxes137Creating a Modeless Dialog Box137Setting Up Application-Defined Items139Handling User Actions in a Modeless Dialog Box141Using Modal Dialog Boxes144Displaying a Modal Dialog Box145Defining a Modal Dialog Filter Function146    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>Dialog BoxesThis chapter describes how your application can use the Dialog Manager to create and manage dialog boxes. You can use dialog boxes to alert the user to unusual situations or to solicit information from the user. The Venn Diagrammer application uses one modeless dialog box and two modal dialog boxes.This chapter shows how ton    create resources describing dialog boxes and the items in dialog boxesn    open those resources to display a dialog boxn    define application-specific dialog itemsn    handle events associated with both modeless and modal dialog boxesMost Macintosh applications support a number of dialog boxes and provide more complete event handling in those dialog boxes than is illustrated in this chapter. For example, the dialog boxes supported by the Venn Diagrammer application do not contain text fields. For a complete description of the capabilities of the Dialog Manager and for code samples illustrating more advanced dialog handling, see the chapter “Dialog Manager” in Inside Macintosh: Macintosh Toolbox Essentials.About Dialog BoxesA dialog box is a window that’s used for some special, limited purpose. In the simplest case, you can use a dialog box just to display information to the user. The information might be a report of some error, a greeting, or a progress bar showing what percentage of some operation has completed. Figure 7-1 shows a simple modal dialog box of this ilk; this is the box Venn Diagrammer displays when the user chooses the About Venn Diagrammer command from the Apple menu.Figure 7-1    An About boxThis kind of dialog box is said to be modal: it puts the user in the state or “mode” of being able to work only inside the dialog box. To dismiss the dialog box, the user must click one or the other of the two buttons.The system software distinguishes a special category of modal dialog boxes, called alert boxes. You’ll use alert boxes to report errors or to give warnings to the user. Figure 7-2 shows an alert box. (Venn Diagrammer displays this alert box if it cannot read the resources it uses to create menus; see Listing 8-1 on page 155.)Figure 7-2    An alert boxOther types of dialog boxes both display information to the user and allow the user to enter or change information. You might, for instance, use a dialog box of this sort in an application that allows users to specify a word to be searched for. The Venn Diagrammer application displays the modeless dialog shown in Figure 7-3 when the user chooses the Preferences command from the Venn menu.Figure 7-3    A Preferences dialog boxThis modeless dialog box contains a button, four checkboxes, and eight radio buttons. It also contains eight application-defined items—the icons used to show the available existence symbols and emptiness patterns.In contrast to the modal dialog boxes shown in Figure 7-1 and Figure 7-2, the dialog box shown in Figure 7-3 is said to be modeless: the user can switch to another window or perform other actions without dismissing the dialog box. The user doesn’t have to change any preferences settings or click any buttons to be able to switch to a document window or pull down a menu. Moreover, clicking a button in the modeless dialog box should not dismiss it; instead, the dialog box should remain on the desktop so that the user can continue to see the information displayed in it or repeat any actions it permits.IMPORTANTTo give users maximum control and minimum frustration, you should, whenever possible, implement your dialog boxes as modeless dialog boxes. <8bat\>sThe distinctive feature of dialog boxes—as opposed to windows—is that they are very easy to create and manage. The Dialog Manager looks in dialog resources to find descriptions of the dialog box and the items in it. Then the Dialog Manager draws the dialog box and handles user actions in the dialog box accordingly. This can be especially useful for managing dialog boxes that contain editable text fields. The Dialog Manager calls TextEdit to handle all the standard text-editing operations such as cutting, pasting, and copying.To create a dialog box, you first need to define a dialog resource and a dialog item list. The dialog resource specifies, among other things, the rectangle on the screen in which the dialog box is drawn, a window definition ID indicating the type of dialog box to draw, and a resource ID of the dialog item list. A dialog resource is of type 'DLOG'. See Figure 3-2 on page 58 for the ResEdit form of a dialog resource and Listing 3-1 on page 57 for the Rez form of the same dialog resource. Both of these correspond to the dialog box in Figure 7-3.One of the main pieces of information in a dialog resource is the resource ID of a dialog item list (a resource of type 'DITL'). The item list specifies the items—such as buttons and static text—to display in an alert box or a dialog box. (Once again, you can specify an item list graphically using a utility like ResEdit or textually in the Rez resource description language.) The Dialog Manager uses the item list both to draw the dialog box and also to handle user actions in dialog boxes. It reports user actions to your application by specifying the item number of the relevant item. An item’s number is simply its rank in the item list. In Listing 7-1, the Venn Diagrammer application defines a number of constants to keep track of the numbers of the items in its Preferences dialog box.Listing 7-1    Dialog item numbersiEmpty1Radio                                = 1;iEmpty2Radio                                = 2;iEmpty3Radio                                = 3;iEmpty4Radio                                = 4;iEmpty1Icon                                = 5;iEmpty2Icon                                = 6;iEmpty3Icon                                = 7;iEmpty4Icon                                = 8;iExist1Radio                                = 9;iExist2Radio                                = 10;iExist3Radio                                = 11;iExist4Radio                                = 12;iExist1Icon                                = 13;iExist2Icon                                = 14;iExist3Icon                                = 15;iExist4Icon                                = 16;iGetNextRandomly                                = 19;iAutoAdjust                                = 20;iShowSchoolNames                                = 21;iUseExistImport                                = 22;iSaveVennPrefs                                = 23;NoteNotice that several item numbers (namely, 17 and 18) are missing from this list. They are the item numbers of the two text labels “Emptiness Pattern” and “Existence Symbol.” Venn Diagrammer ignores those item numbers because clicking them has no effect. <8bat\>uDialog boxes can contain various sorts of items, such controls (buttons, checkboxes, and radio buttons) and fields for entering and editing text. The Dialog Manager recognizes these constants for dialog box items:CONST    ctrlItem                    = 4;        {add this to the next four constants}    btnCtrl                    = 0;        {standard button control}    chkCtrl                    = 1;        {standard checkbox control}    radCtrl                    = 2;        {standard radio button}    resCtrl                    = 3;        {control defined in a control resource}    helpItem                     = 1;        {help balloons}    statText                    = 8;        {static text}    editText                    = 16;        {editable text}    iconItem                    = 32;        {icon}    picItem                    = 64;        {QuickDraw picture}    userItem                    = 0;        {application-defined item}Several Dialog Manager routines return these constants to your application. For instance, you can get information about a particular dialog item by calling the GetDialogItem routine:GetDialogItem(myDialog, itemNum, myType, myHand, myRect);Suppose, for example, that itemNum has the value specified by the constant iSaveVennPrefs. Then on return from the procedure call, myType will contain the value ctrlItem+btnCtrl, indicating that the specified item is a standard button control.As you can see, a dialog box can contain standard user interface elements like buttons, checkboxes, icons, and even arbitrary pictures. If you need to include other kinds of elements in a dialog box, you can create application-defined items. Because the Dialog Manager uses the constant userItem to designate these items, they’re often called user items. The Venn Diagrammer application employs eight user items in the Preferences dialog box, to draw the four emptiness patterns and the four existence symbols.When you use any application-defined user items in a dialog box, your application needs to tell the Dialog Manager how to draw the items and what to do in response to user selections of those items. See “Setting Up Application-Defined Items” beginning on page 139 for instructions on implementing user items in a dialog box.NoteMost dialog boxes don’t need to contain user items. The Venn Diagrammer application uses them because it needs to draw bit images (not entire icons) in the dialog box. <8bat\>uUsing Modeless Dialog BoxesTo display a modeless dialog box, you can create the dialog box by calling GetNewDialog. Then you can respond to user actions in the dialog box by intercepting dialog-related events in your main event loop and handling those events. The Dialog Manager calls the Control Manager to draw any controls you’ve put in the dialog box and handle user actions in them. If the dialog box contains any application-defined user items, you need to provide the Dialog Manager with a drawing procedure so that it knows how to draw the items. You also need to handle user actions for any such application-defined items yourself.Creating a Modeless Dialog BoxYou can create a modeless dialog box by calling GetNewDialog and passing it the resource ID of an appropriate 'DLOG' resource. The Venn Diagrammer application supports only one modeless dialog box, in which the user can set various application preferences. Venn Diagrammer displays that dialog box after the user chooses the Preferences command from the Venn menu.iGetVennPrefs:     DoModelessDialog(rVennDPrefsDial, gPrefsDialog);As you can see, Venn Diagrammer simply calls the application-defined procedure DoModelessDialog, passing it a resource ID specifying the dialog box to open and a global variable in which to return the dialog pointer created by GetNewDialog. Listing 7-2 defines the DoModelessDialog procedure.Listing 7-2    Creating a modeless dialog boxPROCEDURE DoModelessDialog (myKind: Integer; VAR myDialog: DialogPtr);    VAR        myPointer:                Ptr;BEGIN    IF myDialog = NIL THEN                                                    {the dialog box doesn't exist yet}        BEGIN            myPointer := NewPtr(sizeof(DialogRecord));            IF myPointer = NIL THEN                exit(DoModelessDialog);            myDialog := GetNewDialog(myKind, myPointer, WindowPtr(-1));            IF myDialog <> NIL THEN                BEGIN                    DoSetupUserItems(myKind, myDialog);                                                    {set up user items}                    DoSetupCtrlValues(myDialog)                            ;                        {set up initial values}                END;        END    ELSE        BEGIN            ShowWindow(myDialog);            SelectWindow(myDialog);            SetPort(myDialog);        END;END;The DoModelessDialog procedure first determines whether the specified dialog box has already been created, by checking the value of the global variable passed to it. If the variable contains any value other than NIL, the dialog box already exists (but is perhaps hidden or obscured by other windows). If so, DoModelessDialog simply makes the dialog box visible (by calling ShowWindow), makes it the active window (by calling SelectWindow), and establishes it as the current graphics port (by calling SetPort).If, however, the specified dialog box doesn’t exist yet, then DoModelessDialog allocates memory for a new dialog record and (if successful) calls GetNewDialog, passing it the appropriate resource ID. If GetNewDialog returns successfully (as indicated by a returned dialog pointer whose value isn’t NIL), DoModelessDialog then calls two application-defined routines, DoSetupUserItems and DoSetupCtrlValues, to tell the Dialog Manager how draw the user items in the dialog box and to set the correct initial values for the dialog box’s radio buttons and checkboxes.Setting Up Application-Defined ItemsWhenever a modeless dialog box contains application-defined user items, you need to tell the Dialog Manager how to draw them. You do this by calling the Dialog Manager procedure SetDialogItem for each application-defined item in the dialog box. Listing 7-3 shows the DoSetupUserItems procedure called by DoModelessDialog (defined in Listing 7-2).Listing 7-3    Setting up application-defined dialog itemsPROCEDURE DoSetupUserItems (myKind: Integer; VAR myDialog: DialogPtr);    VAR        myType:                Integer;        myHand:                Handle;        myRect:                Rect;        count:                Integer;        origPort:                GrafPtr;BEGIN    GetPort(origPort);    SetPort(myDialog);    CASE myKind OF        rVennDPrefsDial:             FOR count := 1 TO kVennPrefsItemCount DO                IF count IN [iExist1Icon..iExist4Icon,                                     iEmpty1Icon..iEmpty4Icon] THEN                BEGIN                    GetDialogItem(myDialog, count, myType, myHand, myRect);                    SetDialogItem(myDialog, count, myType, @DoUserItem, myRect);                END;        OTHERWISE            ;    END;    SetPort(origPort);END;The DoSetupUserItems procedure simply selects the relevant application-defined items, retrieves information about each item (by calling GetDialogItem), and then calls SetDialogItem to associate a particular application-defined drawing procedure with each item. As you can see, the drawing procedure (DoUserItem) is the same for each user item in the Preferences dialog box. This is possible because the Dialog Manager passes the drawing procedure the dialog pointer and item number when it wants a particular item to be drawn. Listing 7-4 defines the Venn Diagrammer procedure that draws user items.Listing 7-4    Drawing application-defined dialog itemsPROCEDURE DoUserItem (myDialog: DialogPtr; myItem: Integer);    VAR        myType:                Integer;        myHand:                Handle;        myRect:                Rect;        origPort:                GrafPtr;BEGIN    GetPort(origPort);    SetPort(myDialog);    GetDialogItem(myDialog, myItem, myType, myHand, myRect);    IF myDialog = gPrefsDialog THEN        CASE myItem OF            iExist1Icon..iExist4Icon:                 BEGIN                    DoPlotIcon(myRect, GetIcon(kExistID + myItem - iExist1Icon),                                    myDialog, srcCopy);                END;            iEmpty1Icon..iEmpty4Icon:                 BEGIN                    DoPlotIcon(myRect, GetIcon(kEmptyID + myItem - iEmpty1Icon),                                    myDialog, srcCopy);                    FrameRect(myRect);                END;            OTHERWISE                ;        END; {CASE}    SetPort(origPort);                                        {restore original port}END;The DoUserItem procedure is also fairly simple. It makes sure that the dialog pointer passed to it picks out the Preferences dialog box. Then it calls the application-defined procedure DoPlotIcon (defined in Listing 5-8 on page 101) to draw the appropriate part of an icon in the item rectangle. If the emptiness patterns are being drawn, DoUserItem also draws a box around the pattern (by calling FrameRect).Handling User Actions in a Modeless Dialog BoxThe Venn Diagrammer application calls its DoHandleDialogEvent function for each event it retrieves from the Event Manager. Its strategy is to determine if the returned event applies to a dialog box. If so, DoHandleDialogEvent handles the event and returns TRUE to indicate that it did so; otherwise, DoHandleDialogEvent just returns FALSE to indicate that it didn’t handle the event. Listing 7-5 defines DoHandleDialogEvent. (See Listing 4-4 on page 77 to see when DoHandleDialogEvent is called.) Listing 7-5    Handling events in a modeless dialog boxFUNCTION DoHandleDialogEvent (myEvent: EventRecord): Boolean;    VAR        eventHandled:                        Boolean;                    {did we handle the event?}        myDialog:                        DialogPtr;        myItem:                        Integer;BEGIN    eventHandled := FALSE;    IF FrontWindow <> NIL THEN        IF IsDialogEvent(myEvent) THEN            IF DialogSelect(myEvent, myDialog, myItem) THEN                BEGIN                    eventHandled := TRUE;                    SetPort(myDialog);                    IF myDialog = gPrefsDialog THEN                        BEGIN                            CASE myItem OF                                iEmpty1Radio..iEmpty4Radio:                                     gEmptyIndex := myItem;                                iEmpty1Icon..iEmpty4Icon:                                     gEmptyIndex := myItem - 4;                                iExist1Radio..iExist4Radio:                                     gExistIndex := myItem - iEmpty4Icon;                                iExist1Icon..iExist4Icon:                                     gExistIndex := myItem - (iEmpty4Icon + 4);                                iGetNextRandomly:                                     gStepRandom := NOT gStepRandom;                                iAutoAdjust:                                     gAutoAdjust := NOT gAutoAdjust;                                iShowSchoolNames:                                     gShowNames := NOT gShowNames;                                iUseExistImport:                                     gGiveImport := NOT gGiveImport;                                iSaveVennPrefs:                                     DoSavePrefs;                                OTHERWISE                                    ;                            END;                            DoSetupCtrlValues(myDialog);                                                {update values}                        END;                END;    DoHandleDialogEvent := eventHandled;END;The DoHandleDialogEvent function calls the Dialog Manager’s IsDialogEvent function to determine whether at the time of the event the frontmost window is a dialog box. If not, then DoHandleDialogEvent just exits and returns the value FALSE. If, however, the event did occur while a dialog box was active, then the event might apply to that dialog box. To determine whether it does apply, DoHandleDialogEvent calls the Dialog Manager’s DialogSelect function, which handles most of the events relating to a dialog box. For example, if the event is an update or activate event for the dialog box, DialogSelect updates or activates the dialog box and returns FALSE (to indicate that no further processing is required by the calling application).If the event involves an enabled item in the dialog box, DialogSelect returns a function result of TRUE. In the myItem parameter, it returns the item number of the item selected by the user. In the myDialog parameter, it returns a pointer to the dialog record for the dialog box where the event occurred. In all other cases, the DialogSelect function returns FALSE. When DialogSelect returns TRUE, you should do whatever is appropriate as a response to the event involving that item in that particular dialog box; when it returns FALSE, you should do nothing.The DoHandleDialogEvent function uses a very simple technique for handling user selections of items in the Preferences dialog box. As you can see, it sets the appropriate application global variables for clicks of the radio buttons, and it toggles the appropriate global variables for clicks of the checkboxes. Then DoHandleDialogEvent calls the application-defined procedure DoSetupCtrlValues to change the values of those controls, turning the radio buttons and checkboxes off or on, as appropriate. Listing 7-6 gives the definition of DoSetupCtrlValues.Listing 7-6    Setting the state of radio buttons and checkboxesPROCEDURE DoSetupCtrlValues (myDialog: DialogPtr);    VAR        count:                Integer;        myType:                Integer;        myHand:                Handle;        myRect:                Rect;        origPort:                GrafPtr;BEGIN    IF myDialog = NIL THEN        exit(DoSetupCtrlValues);    GetPort(origPort);                                            {save the current graphics port}    SetPort(myDialog);                                            {always do this before drawing}    ShowWindow(myDialog);        IF myDialog = gPrefsDialog THEN        BEGIN            FOR count := 1 TO kVennPrefsItemCount DO                BEGIN                    GetDialogItem(myDialog, count, myType, myHand, myRect);                    IF myType = ctrlItem + radCtrl THEN                        CASE count OF                            iExist1Radio..iExist4Radio:                                 SetCtlValue(ControlHandle(myHand),                                    ORD(gExistIndex = count - (iExist1Radio - 1)));                            iEmpty1Radio..iEmpty4Radio:                                 SetCtlValue(ControlHandle(myHand),                                    ORD(gEmptyIndex = count - (iEmpty1Radio - 1)));                        OTHERWISE                            ;                        END;                    IF myType = ctrlItem + chkCtrl THEN                        CASE count OF                            iGetNextRandomly:                                 SetCtlValue(ControlHandle(myHand),                                                 ORD(gStepRandom = TRUE));                            iShowSchoolNames:                                 SetCtlValue(ControlHandle(myHand),                                                  ORD(gShowNames = TRUE));                            iUseExistImport:                                 SetCtlValue(ControlHandle(myHand),                                                 ORD(gGiveImport = TRUE));                            iAutoAdjust:                                 SetCtlValue(ControlHandle(myHand),                                                 ORD(gAutoAdjust = TRUE));                        OTHERWISE                            ;                        END;                END;        END;    SetPort(origPort);                                            {restore the previous graphics port}END;The DoSetupCtrlValues procedure simply calls the Control Manager procedure SetCtlValue to set the value of each control in the dialog box according to the value of some global variable. This makes it easy to toggle checkboxes and to group radio buttons in such a way that exactly one radio button in each group is on.IMPORTANTThe strategy for handling dialog box events described in this section might not be the best or most efficient strategy for your application. For a more complete discussion of handling dialog box events, see the chapter “Dialog Manager” in Inside Macintosh: Macintosh Toolbox Essentials. <8bat\>sUsing Modal Dialog BoxesRemember that a modal dialog box puts the user into the state or “mode” of being able to work only inside the dialog box. The user cannot move the dialog box and can dismiss it only by clicking its buttons (perhaps after supplying some necessary information).NoteThe Dialog Manager also provides movable modal dialog boxes; these are modal dialog boxes that contain a title bar so that the user can drag the dialog box. You should use movable modal dialog boxes whenever the user might need to move a modal dialog box to see what it obscures or whenever you want allow the user to switch to another application while the dialog box is displayed. <8bat\>uIn general, it’s easier to create and handle simple modal dialog boxes than it is to create and handle modeless dialog boxes. The reason is that the Dialog Manager provides special routines that you can call to display alerts and other simple dialog boxes. The Dialog Manager also provides the ModalDialog procedure, which you can call to manage all user actions in modal dialog boxes.IMPORTANTEase of implementation is not a sufficient reason for using modal dialog boxes instead of modeless ones. You should avoid using modal dialog boxes except when absolutely necessary. <8bat\>sDisplaying a Modal Dialog BoxListing 7-7 shows a standard way to display a modal dialog box. It defines the procedure DoAboutBox, which is called after the user chooses the About Venn Diagrammer command from the Apple menu.Listing 7-7    Displaying a modal dialog boxPROCEDURE DoAboutBox (myWindow: WindowPtr);    VAR        myWindow:                WindowPtr;        myDialog:                DialogPtr;        myItem:                Integer;BEGIN    myWindow := FrontWindow;    IF myWindow <> NIL THEN        DoActivate(myWindow, 1 - activeFlag);                    myDialog := GetNewDialog(rAboutDial, NIL, WindowPtr(-1));    IF myDialog <> NIL THEN        BEGIN            SetPort(myDialog);            DoDefaultButton(myDialog);            REPEAT                ModalDialog(@MyModalFilter, myItem);            UNTIL myItem = iOK;            DisposeDialog(myDialog);            SetPort(myWindow);        END;END;When you display a modal dialog box, you should first deactivate any existing front window. The DoAboutBox procedure retrieves a window pointer to the front window and passes that pointer to the application-defined activate routine DoActivate. Then DoAboutBox calls GetNewDialog to open the dialog box specified by the resource ID rAboutDial:CONST    rAboutDial = 7000;                                    {resource ID of About dialog}If GetNewDialog returns a dialog pointer whose value is not NIL, then DoAboutBox calls SetPort to establish the new dialog box as the current drawing port. Then it calls the application-defined procedure DoDefaultButton (defined in Listing 7-8) to draw a thick border around the default button. This indicates that the user can dismiss the dialog box by pressing the Return key or the Enter key.Listing 7-8    Outlining the default button of a modal dialog boxPROCEDURE DoDefaultButton (myDialog: DialogPtr);    VAR        myType:                Integer;        myHand:                Handle;        myRect:                Rect;BEGIN    GetDialogItem(myDialog, iOK, myType, myHand, myRect);    DoOutlineControl(myHand);END;The DoDefaultButton procedure simply calls the application-defined procedure DoOutlineControl to outline the dialog item whose item number is 1 (identified by the constant iOK). See page 200 for a definition of DoOutlineControl.At this point, the modal dialog box is displayed on the screen. The DoAboutBox procedure loops indefinitely, repeatedly calling ModalDialog until the user clicks the OK button. The ModalDialog procedure handles all mouse, keystroke, and update events that occur inside the dialog box until an event involving an enabled dialog item occurs. When that happens, ModalDialog exits and returns the dialog item number in the second parameter. Your application can then do whatever is appropriate in response to an event in that item. In DoAboutBox, ModalDialog is called repeatedly until a click in the OK button occurs. At that time, the modal dialog is removed from the screen, and DoAboutBox calls SetPort to reinstate the original drawing port.Defining a Modal Dialog Filter FunctionThe actions of ModalDialog are guided by the modal dialog filter function whose address is passed in its first parameter. If you pass NIL as the first parameter to the ModalDialog procedure, you’ll get the standard event filtering provided by the Dialog Manager. The standard event filter function returns TRUE and causes ModalDialog to return item number 1 (the number of the default button) when the user presses the Return or the Enter key.For most modal dialog boxes, the standard modal dialog filter function is too simple. Your application should define a modal dialog filter function that performs the following tasks:n    return TRUE and the item number for the default button if the user presses the Return key or the Enter keyn    return TRUE and the item number for the Cancel button if the user presses the Escape key or the Command-period combinationn    allow background applications to receive update events and return FALSE when they don    return FALSE for all other events that your event filter doesn’t handleListing 7-9 defines a modal dialog filter function that accomplishes these tasks. In addition, the filter function MyModalFilter handles any disk-inserted events that occur while the modal dialog box is displayed.Listing 7-9    A modal dialog filter functionFUNCTION MyModalFilter (myDialog: DialogPtr; VAR myEvent: EventRecord;                                     VAR myItem: Integer): Boolean;    VAR        myType:                Integer;        myHand:                Handle;        myRect:                Rect;        myKey:                Char;        myIgnore:                LongInt;BEGIN    MyModalFilter := FALSE;                                                {assume we don't handle the event}    CASE myEvent.what OF        updateEvt:             BEGIN                IF WindowPtr(myEvent.message) <> myDialog THEN                    DoUpdate(WindowPtr(myEvent.message));                                                            {update the window behind}            END;        keyDown, autoKey:             BEGIN                myKey := char(BAnd(myEvent.message, charCodeMask));                {if Return or Enter pressed, do default button}                IF (myKey = kReturn) OR (myKey = kEnter) THEN                    BEGIN                        GetDialogItem(myDialog, iOK, myType, myHand, myRect);                        HiliteControl(ControlHandle(myHand), 1);                                        {make button appear to have been pressed}                        Delay(kVisualDelay, myIgnore);                        HiliteControl(ControlHandle(myHand), 0);                        MyModalFilter := TRUE;                                                myItem := iOK;                    END;                {if Escape or Cmd-. pressed, do Cancel button}                IF (myKey = kEscape)                    OR ((myKey = kPeriod)                            AND (BAnd(myEvent.modifiers, CmdKey) <> 0)) THEN                    BEGIN                        GetDialogItem(myDialog, iCancel, myType, myHand, myRect);                        HiliteControl(ControlHandle(myHand), 1);                                            {make button appear to have been pressed}                        Delay(kVisualDelay, myIgnore);                        HiliteControl(ControlHandle(myHand), 0);                        MyModalFilter := TRUE;                        myItem := iCancel;                    END;            END;        diskEvt:             BEGIN                DoDiskEvent(myEvent);                MyModalFilter := TRUE;                                        {show we've handled the event}            END;        OTHERWISE            ;    END; {CASE}END;An interesting part of MyModalFilter is the way it intercepts key-down events and translates them into button clicks. When, for instance, it detects that the Return key was pressed, it calls GetDialogItem to retrieve a handle to the first item in the item list (by convention, the OK button). Then MyModalFilter calls HiliteControl to invert the state of the button, waits for a specified number of ticks, and then calls HiliteControl once again to restore the button to its original state. Finally, it sets the function result and the variable parameter myItem, thus informing the calling routine that the event was handled.    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>Listing 8-0Table 8-0MenusContentsAbout Menus151Creating Menus152Creating a Menu Resource152Creating a Menu Bar Resource154Setting Up the Menu Bar and Menus154Handling Menu Choices156Handling Keyboard Equivalents160Adjusting Menus161    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>MenusThis chapter describes how your application can use the Menu Manager to create and manage menus. Menus provide a simple and standard method for the user to view or choose from a list of commands and settings that your application provides. Every Macintosh application that has a user interface should support pull-down menus (that is, menus that the user “pulls down” by pressing the mouse button when the cursor is over the menu title in the menu bar).This chapter shows how ton    create menu and menu bar resourcesn    open those resources to display the menu barn    handle user clicks in the menu barn    handle user choices of menu itemsn    handle keyboard equivalents of menu commandsn    enable and disable menu itemsMost Macintosh applications provide more menu handling than is illustrated in this chapter. For example, you might want to use pop-up menus in a window or dialog box. For a complete description of the capabilities of the Menu Manager and for code samples illustrating more advanced menu-handling techniques, see the chapter “Menu Manager” in Inside Macintosh: Macintosh Toolbox Essentials.About MenusA menu is a user interface element that your application can create to allow the user to view or choose an item from a list of commands and options that your application provides. For example, the sample application Venn Diagrammer provides a menu (shown in Figure 8-1) that contains a list of commands for manipulating Venn diagrams.Figure 8-1    A typical pull-down menuThis kind of menu is known as a pull-down menu, because the user “pulls down” the menu by clicking the menu title (the word “Venn” in the menu bar). A pull-down menu always has associated with it one or more menu items, rectangles containing text and other characteristics that identify a command that the user can choose to perform an action. The menu shown in Figure 8-1 contains six menu items and one divider (the gray line used to separate the first five items from the last one). In addition, four of the menu items in that menu have keyboard equivalents associated with them. The user can invoke the menu command by pressing the appropriate combination of characters on the keyboard. For example, the user can make the Preferences dialog box appear by pressing the combination Command-Y.NoteThis chapter shows how to create and handle pull-down menus only. The word “menu” should therefore be understood to mean “pull-down menu.” <8bat\>uThe Menu Manager provides routines that allow you to create your application’s menu bar and menus, and to handle user actions in the menu bar and in individual menus. You’ll call these routines when you detect that a mouse-down event has occurred in the menu bar or when you detect that the user has typed a keyboard equivalent of a menu command. You’ll also call the Menu Manager to perform other operations on menus, such as changing menu item text or enabling and disabling menu items.All Macintosh applications should support at least three standard menus: the Apple menu, the File menu, and the Edit menu. In addition, you’ll want to support other menus that contain commands and options specific to your application. The Venn Diagrammer application supports only one application-specific menu along with the three standard menus.Creating MenusThe easiest way to define menu titles and commands is to use a resource editor like ResEdit to create resources describing your application’s menu bar and the individual menus. It’s also possible to define your menu bar and menu items internally in your application, but you can make your application significantly easier to localize by isolating that information in resources.NoteAs you learned in the chapter “Resources,” you can also create resources using the Rez resource-description language and a resource compiler. This chapter shows how to use ResEdit to create menu-related resources. <8bat\>uCreating a Menu ResourceYou can define the menu title and characteristics of each individual menu item in a menu resource (a resource of type 'MENU'). Figure 8-2 shows the appearance of ResEdit’s 'MENU' resource editor.Figure 8-2    Defining a 'MENU' resourceAs you can see, the menu title is currently selected. ResEdit allows you to change the menu title text or to designate this menu as the Apple menu. This window also lets you set the menu as initially enabled or disabled. In most cases, you’ll want to have your menus initially enabled. The Venn Diagrammer application, however, disables the Edit menu because it does not support any text editing.To edit the text of a menu command, you can click it. ResEdit highlights the selected command and changes the controls in the right side of the window, as shown in Figure 8-3.Figure 8-3    Editing a menu commandYou can use the controls in the right side of the window to change the menu item text, the keyboard equivalent, the menu’s mark, and several other items. You can also designate the menu item as initially enabled or disabled. Once again, you’ll probably want most items to be initially enabled. You can disable and reenable menu items dynamically during your application’s execution; see “Handling Menu Choices” beginning on page 156 for details.Creating a Menu Bar ResourceYou can define the order and resource IDs of the menus in your application in a menu bar resource (a resource of type 'MBAR'). You should define your 'MBAR' resource in such a way that the Apple menu is the first menu in the menu bar. You should define the next two menus as the File and Edit menus, followed by any other menus that your application uses. You do not need to define the Keyboard, Help, or Application menus in your 'MBAR' resource; the Menu Manager automatically adds them to your application’s menu bar if your application calls the GetNewMBar function and your menu bar includes an Apple menu or if your application inserts the Apple menu into the current menu list using the InsertMenu procedure.You can use ResEdit to create an 'MBAR' resource. Figure 8-4 shows the 'MBAR' resource window for the Venn Diagrammer application.Figure 8-4    An 'MBAR' resource in ResEditAn 'MBAR' resource is simply a list of the menu IDs, in the order you want the corresponding menu titles to appear from left to right in the menu bar.Setting Up the Menu Bar and MenusOne of the very first things you need to do when your application starts running is set up your menu bar and menus. You can do this by calling the Menu Manager function GetNewMBar, which reads a specified 'MBAR' resource from your application’s resource fork and inserts each menu described there into the menu bar. You can define a constant that indicates which 'MBAR' resource to open.CONST    rMenuBar = 128;                                            {menu bar resource ID}Listing 8-1 shows a standard way to call GetNewMBar.Listing 8-1    Setting up the menu bar and menusPROCEDURE DoSetupMenus;    VAR        menuBar:                Handle;BEGIN    menuBar := GetNewMBar(rMenuBar);    IF menuBar = NIL THEN        DoBadError(eCantFindMenus);    SetMenuBar(menuBar);    DisposeHandle(menuBar);    AppendResMenu(GetMenuHandle(mApple), 'DRVR');    DrawMenuBar;END;The routine DoSetupMenus creates the application’s menu bar by reading in the definition from the 'MBAR' resource with resource ID rMenuBar. The GetNewMBar function returns a handle to the menu bar information stored in that resource and in the 'MENU' resources whose IDs are contained in the 'MBAR' resource. Notice that DoSetupMenus makes sure that the value of the returned handle isn’t NIL; if it is, you shouldn’t continue.NoteChecking that GetNewMBar returns handle with a non-NIL value is probably overkill. It’s extremely unlikely that the Menu Manager will have a problem reading your menu-related resources or finding enough free memory to hold the menu list to which menuBar is a handle. Nonetheless, it’s best to make sure, because passing AppendResMenu a handle whose value is NIL is likely to cause your application to crash. As a result, DoSetupMenus calls the application-defined routine DoBadError (defined in Listing 9-5 on page 178) to alert the user of the problem and terminate the application. If the application can’t even put up its menu bar, there’s no point in continuing to run. (See Figure 7-2 on page 134 for the alert box displayed if the menu resources can’t be found.) <8bat\>uIf GetNewMBar returns a handle with a non-NIL value, then DoSetupMenus calls the procedure SetMenuBar to install the individual menus into the menu bar. At that point, you no longer need the handle and you can dispose of it (by calling the Memory Manager routine DisposeHandle). Next DoSetupMenus calls the AppendResMenu procedure to add the items in the Apple Menu Items folder to the Apple menu. Finally, the DoSetupMenus procedure displays the menu bar by calling the DrawMenuBar procedure.Handling Menu ChoicesYour application is informed of user menu choices in a slightly roundabout fashion. First, your application receives a mouse-down event indicating that the user has clicked in the menu bar. At that time, you should call the Menu Manager function MenuSelect to determine which menu and menu item, if any, the user chose. When you call MenuSelect, the Menu Manager pulls down the appropriate menu and tracks all subsequent mouse movement in the menu. When the user releases the mouse button, MenuSelect exits and returns to your application a long integer that indicates which menu and item the user chose. The high-order word of that long integer contains the menu number, and the low-order word contains the menu item number.To coordinate the menu numbers and menu item numbers with the menus and menu items as defined in your 'MBAR' and 'MENU' resources, you’ll probably want to define a set of constants, as shown in Listing 8-2.Listing 8-2    Defining menu numbers and menu item numbersCONST    mApple                    = 128;                        {resource ID of Apple menu}    iAbout                    = 1;                        {our About... dialog}    mFile                    = 129;                        {resource ID of File menu}    iNew                    = 1;    iClose                    = 2;    iQuit                    = 4;    mEdit                    = 130;                        {resource ID of Edit menu}    iUndo                    = 1;    iCut                    = 3;    iCopy                    = 4;    iPaste                    = 5;    iClear                    = 6;    mVenn                    = 131;                        {resource ID of Venn menu}    iCheckVenn                    = 1;    iDoVenn                    = 2;    iClearVenn                    = 3;    iNextTask                    = 4;    iCheckArg                    = 5;    iGetVennPrefs                    = 7;NoteThe divider in a menu counts as a menu item, even though the user can’t choose it. <8bat\>uIn general, you’ll define a routine like DoMenuCommand shown in Listing 8-3 to handle all menu choices. Both your mouse-down event handler (Listing 6-9 on page 121) and your key-down event handler (Listing 8-5 on page 160) call MenuSelect. It is passed either the result of MenuSelect (for menu selections) or MenuKey (for keyboard equivalents of menu selections).Listing 8-3    Handling menu selectionsPROCEDURE DoMenuCommand (menuAndItem: LongInt);    VAR        myMenuNum:                Integer;        myItemNum:                Integer;        myResult:                Integer;        myDAName:                Str255;        myWindow:                WindowPtr;BEGIN    myMenuNum := HiWord(menuAndItem);    myItemNum := LoWord(menuAndItem);    GetPort(myWindow);    CASE myMenuNum OF        mApple:             CASE myItemNum OF                iAbout:                     BEGIN                        DoAboutBox;                    END;                OTHERWISE                    BEGIN                        GetMenuItemText(GetMenuHandle(mApple), myItemNum,                                                 myDAName);                        myResult := OpenDeskAcc(myDAName);                    END;            END;        mFile:             BEGIN                CASE myItemNum OF                    iNew:                         myWindow := DoCreateWindow;                    iClose:                         DoCloseWindow(FrontWindow);                    iQuit:                         DoQuit;                    OTHERWISE                        ;                END;            END;        mEdit:            BEGIN                IF NOT SystemEdit(myItemNum - 1) THEN                    ;            END;        mVennD:             BEGIN                myWindow := FrontWindow;                CASE myItemNum OF                    iCheckVenn:                         DoVennCheck(myWindow);                    iDoVenn:                         DoVennAnswer(myWindow);                    iClearVenn:                         DoVennClear(myWindow);                    iNextTask:                         DoVennNext(myWindow);                    iCheckArg:                         DoVennAssess(myWindow);                    iGetVennPrefs:                         DoModelessDialog(rVennDPrefsDial, gPrefsDialog);                    OTHERWISE                        ;                END;            END;        OTHERWISE            ;    END;    HiliteMenu(0);END;The DoMenuCommand procedure is passed a long integer that encodes the menu number and item number of the chosen item. As you can see, DoMenuCommand consists mainly of a CASE statement that branches on the menu number. Each menu number, in turn, consists mainly of a CASE statement that branches on the menu item number. In this simple way, you can handle all menus and all menu items.Most of the innermost branches just call application-defined routines to handle the appropriate menu item choice. (For example, if the user chooses Quit from the File menu, then DoMenuCommand calls the application-defined routine DoQuit.) The code that handles choices in the Apple menu (Listing 8-4) is slightly different, however.Listing 8-4    Handling Apple menu selectionsiAbout:     BEGIN        DoAboutBox;    END;OTHERWISE    BEGIN        GetMenuItemText(GetMenuHandle(mApple), myItemNum, myDAName);        myResult := OpenDeskAcc(myDAName);    END;If the user chooses the command About Venn Diagrammer (picked out by the constant iAbout), then DoMenuCommand calls the application-defined routine DoAboutBox (see Listing 7-7 on page 145). Otherwise, the user must have chosen a desk accessory or other item in the Apple menu. In that case, DoMenuCommand retrieves the name of the desk accessory (by calling GetMenuItemText) and passes that name to the OpenDeskAcc function.Because Venn Diagrammer doesn’t support any text editing, it simply calls the system software routine SystemEdit to handle user choices in the Edit menu. SystemEdit checks whether the frontmost window belongs to a desk accessory; if so, it passes the menu choice to the desk accessory and returns TRUE. The parameter to SystemEdit is interpreted so you can pass the item number less 1 of the standard Edit menu commands.Before exiting, DoMenuCommand calls the Menu Manager procedure HiliteMenu to undo the menu title highlighting provided automatically by MenuSelect or MenuKey. Handling Keyboard EquivalentsKeyboard equivalents of menu commands allow the user to invoke a menu command from the keyboard. You can determine if the user chose the keyboard equivalent of a menu command by examining the event record for a key-down event. If the user pressed the Command key in combination with another character, you can then determine if this combination maps to a known Command-key equivalent by calling the Menu Manager function MenuKey. Listing 8-5 shows the Venn Diagrammer application’s DoKeyDown procedure, which handles key-down events and determines if a keyboard equivalent was pressed.Listing 8-5    Handling Command-key equivalentsPROCEDURE DoKeyDown (myEvent: EventRecord);    VAR        myKey:                char;BEGIN    myKey := chr(BAnd(myEvent.message, charCodeMask));    IF (BAnd(myEvent.modifiers, CmdKey) <> 0) THEN        BEGIN            DoMenuAdjust;            DoMenuCommand(MenuKey(myKey));        END;END;The DoKeyDown procedure first extracts the pressed key from the message field of the event record and then examines the modifiers field to determine whether the Command key was also pressed. If so, the application first adjusts its menus and then calls the DoMenuCommand procedure defined in Listing 8-3 on page 157. In turn, DoKeyDown passes to DoMenuCommand the value returned from the MenuKey function. If the key combination pressed by the user is not the keyboard equivalent of any currently enabled menu item, then MenuKey sets the high-order word of its return value to 0.NoteThe Venn Diagrammer application does not accept any text input from the user. As a result, the DoKeyDown procedure shown in Listing 8-5 doesn’t need an ELSE clause to handle keypresses in which the Command key is not held down. <8bat\>uSeveral keyboard equivalents (listed in Table 8-1) are reserved for common commands in the File and Edit menus. If your application supports these commands, you should assign these equivalents to the specified commands. Otherwise, you should ignore these keyboard equivalents.Table 8-1    Reserved keyboard equivalentsKeys    Command    Menu    -A    Select All    Edit    -C    Copy    Edit    -N    New    File    -O    Open…    File    -P    Print…    File    -Q    Quit    File    -S    Save    File    -V    Paste    Edit    -W    Close    File    -X    Cut    Edit    -Z    Undo    Edit    IMPORTANTYou should never assign the keyboard equivalents listed in Table 8-1 to other menu commands. This helps ensure predictable behavior among all applications. <8bat\>sAdjusting MenusAt any given time during the execution of your application, it’s likely that some of the commands in your menus will not be appropriate. For example, if the front window is a dialog window, then any menu commands that manipulate only document windows should be disabled. Similarly, if the desktop shows no windows belonging to your application, then the Close command in the File menu should be disabled. When a menu item is disabled, it is drawn in a dimmed text and is not highlighted when the cursor passes over it. This disabling prevents the user from choosing those commands.An easy way to achieve this effect is to call an application-defined routine that adjusts the menus according to the current application context just before you call either MenuSelect or MenuKey. Listing 8-6 shows the version of DoMenuAdjust used by the Venn Diagrammer application.Listing 8-6    Adjusting menusPROCEDURE DoMenuAdjust;    VAR        myWindow:                WindowPtr;        myMenu:                MenuHandle;        count:                Integer;BEGIN    myWindow := FrontWindow;    IF myWindow = NIL THEN        DisableMenuItem(GetMenuHandle(mFile), iClose)    ELSE        EnableMenuItem(GetMenuHandle(mFile), iClose);    myMenu := GetMenuHandle(mVennD);    IF IsAppWindow(myWindow) THEN        FOR count := 1 TO kNumTools DO            EnableMenuItem(myMenu, count)    ELSE        FOR count := 1 TO kNumTools DO            DisableMenuItem(myMenu, count);    IF IsDAccWindow(myWindow) THEN        EnableMenuItem(GetMenuHandle(mEdit), 0)    ELSE        DisableMenuItem(GetMenuHandle(mEdit), 0);    DrawMenuBar;END;The DoMenuAdjust procedure calls FrontWindow to get a pointer to the frontmost window belonging to the Venn Diagrammer application. If there is no window belonging to the Venn Diagrammer application, DoMenuAdjust disables the Close menu command in the File menu. Conversely, if there is a window belonging to the application, DoMenuAdjust enables the Close command.If the front window is a document window, then DoMenuAdjust enables all the document-specific commands in the Venn menu; otherwise, it disables all those commands. (DoMenuAdjust retrieves the menu handle by calling GetMenuHandle and passes that handle to EnableMenuItem or DisableMenuItem.)You can disable or enable an entire menu by passing DisableMenuItem or EnableMenuItem the value 0 in place of a menu item number. This is the strategy that DoMenuAdjust follows for the Edit menu. Venn Diagrammer does no editing of its own, so DoMenuAdjust makes certain to enable the Edit menu only when a desk accessory window is frontmost. When you call DisableMenuItem or EnableMenuItem in this way, however, you also need to call the Menu Manager procedure DrawMenuBar to update the menu bar’s appearance.    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>Listing 9-0Table 9-0ProcessesContentsAbout Processes165Specifying Processing Options168Handling Suspend and Resume Events170Handling Null Events173Quitting an Application175Handling Errors176Checking the Operating Environment178    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>    <$paranum[ChT.ChapterTitleTOC,CO.ChapOpenerTOC]\>ProcessesYour application is usually only one of several applications that a user has open at one time. Your application must therefore share the available system resources such as the central processing unit (CPU) and the available random-access memory (RAM). The Macintosh Operating System uses a very simple and elegant method for your application to coordinate its actions with those of other open applications. The Process Manager sends events, through the Event Manager, to your application informing it of impending changes in your application’s processing status. Your application needs to respond to those events in the appropriate way to ensure the smooth operation of all open applications.This chapter describes what you need to do to ensure that your application operates smoothly in the Macintosh Operating System. It describes how your application is launched and how the Operating System controls access to the CPU and other system resources to create a cooperative multitasking environment in which your application and any other open applications execute. This environment is managed primarily by the Process Manager, which is responsible for launching processes, scheduling their use of the available system resources, and handling their termination. This chapter shows how ton    indicate the desired size of your application’s memory partitionn    suspend your application’s execution when another application needs the CPUn    resume execution when your application regains control of the CPUn    terminate your application when the user quits or when a serious error occursn    determine what software and hardware features are available on a particular machineFor a complete description of the cooperative multitasking environment, see the chapter “Process Manager” in Inside Macintosh: Processes. For a complete description of how to handle suspend and resume events, see the chapter “Event Manager” in Inside Macintosh: Macintosh Toolbox Essentials.About ProcessesThe Macintosh Operating System, the Finder, and several other system software components work together to provide a multitasking environment in which a user can have multiple applications open at once and can switch between open applications as desired. To run in this environment, however, your application must follow certain rules governing its use of the available system resources. Because the smooth operation of all applications depends on their cooperation, this environment is known as a cooperative multitasking environment.NoteThe cooperative multitasking environment is available in system software versions 7.0 and later, and when the MultiFinder option is enabled in earlier system software versions. <8bat\>uAlthough a number of documents and applications can be open at the same time, only one application is the active application. The active application is the application currently interacting with the user; its icon appears at the right side of the menu bar. The active application displays its menu bar and is responsible for highlighting the controls of its frontmost window. In Figure 9-1, Venn Diagrammer is the active application. Windows of other applications are visible on the desktop behind the frontmost window.Figure 9-1    The desktop with several applications openThe Operating System schedules the processing of all applications and desk accessories, known collectively as processes. When a user opens an application, the Operating System loads the application code into memory and schedules the application to run at the next available opportunity, usually when the current process relinquishes the CPU. In most cases, the application runs immediately (or so it appears to the user).When your application is first launched, it is the foreground process. Usually the foreground process has control of the CPU and other system resources, but it can agree to relinquish control of the CPU if there are no events (other than null events) pending for it. A process that is open but that isn’t currently the foreground process is said to be a background process.A background process can receive processing time when the foreground process makes an event call (that is, calls WaitNextEvent or EventAvail) and there are no events pending for that foreground process. The Process Manager sends a null event to the background process, thereby informing it that it is now the current process and can perform whatever background processing it desires. The background process should make an event call periodically in order to relinquish the CPU and ensure a timely return to foreground processing when necessary.The CPU is available only to the current application, whether it is running in the foreground or the background. The application can be interrupted only by hardware interrupts, which are transparent to the application. However, to give processing time to background applications and to allow the user to interact with your application and others, you must periodically call the Event Manager’s WaitNextEvent or EventAvail function to allow your application to relinquish control of the CPU for short periods. By using these event routines in your application, you allow the user to interact not only with your application but also with other applications.The method by which the available processing time is distributed among multiple processes is known as context switching (or just switching). All switching occurs at a well-defined time, namely, when an application calls WaitNextEvent. When a context switch occurs, the Process Manager allocates processing time to a process other than the one that had been receiving processing time. Two types of context switching may occur: major and minor. A major switch is a complete context switch: an application’s windows are moved from the back to the front, or vice versa. In a major switch, two applications are involved, the one being switched to the foreground and the one being switched to the background. The Process Manager switches the A5 worlds of both applications, as well as the relevant low-memory environments. If those applications can handle suspend and resume events, they are so notified at the time that a major switch occurs. A minor switch occurs when the Process Manager gives time to a background process without bringing the background process to the front. The two processes involved in a minor switch can be two background processes or a foreground process and a background process. As in a major switch, the Process Manager switches the A5 worlds and the low-memory environments of the two processes. However, the order of windows is not switched, and neither process receives either suspend or resume events. When the frontmost window is an alert box or modal dialog box, major switching does not occur, although minor switching can. To determine whether major switching can occur, the Operating System checks (among other things) whether the window definition procedure of the frontmost window is dBoxProc, because the type dBoxProc is specifically reserved for alert boxes and modal dialog boxes. (If the frontmost window is a movable modal dialog box, major switching can still occur.)NoteYour application can also be switched out if it calls a system software routine that internally makes an event call. For example, when your application calls ModalDialog, a minor switch can occur. <8bat\>uSpecifying Processing OptionsTo take full advantage of the cooperative multitasking environment provided by the Macintosh system software, you need to inform the Operating System about the processing capabilities and requirements of your application. You need to indicate, for example, the partition size your application needs in order to execute most effectively. You also need to indicate whether your application can do any processing while it is in the background. If it cannot do any background processing, there’s no use in having the Process Manager give your application access to the CPU while it’s in the background.You specify these and other processing options to the Operating System by including in your application’s resource fork a resource of type 'SIZE', known as its size resource. The size resource contains several long integers and many flag bits, which together give the Process Manager the information it needs to launch your application and control its processing.IMPORTANTEvery application executing in system software version 7.0 and later, as well as every application executing in system software version 6.0 with MultiFinder, should contain a size resource. <8bat\>sA 'SIZE' resource consists of a 16-bit flags field, followed by two 32-bit size fields. The flags field specifies operating characteristics of your application, and the size fields indicate the minimum and preferred partition sizes for your application. The minimum partition size is the actual limit below which your application will not run. The preferred partition size is the memory size at which your application can run most effectively. The Operating System attempts to secure this preferred amount of memory when your application is launched. If that amount of memory is unavailable, your application is placed into the largest contiguous block available, provided that it is larger than the specified minimum size.NoteIf the amount of available memory is between the minimum and the preferred sizes, the Finder displays a dialog box asking if the user wants to run the application using the amount of memory available. If your application does not have a 'SIZE' resource, it is assigned a default partition size of 512 KB, and the Process Manager uses a default value of FALSE for all specifications normally defined by constants in the flags field. <8bat\>uWhen you define a 'SIZE' resource, you should give it a resource ID of –1. A user can modify the preferred size in the Finder’s information window for your application. If the user does alter the partition size, the Operating System creates a new 'SIZE' resource having a resource ID of 0 in your application’s resource fork. At application launch time, the Process Manager looks for a 'SIZE' resource with ID 0; if this resource is not found, the Process Manager uses your original 'SIZE' resource (with ID –1). This new 'SIZE' resource is also created when the user modifies any of the other settings in the resource.Listing 9-1 shows the Rez input for a sample 'SIZE' resource.Listing 9-1    The Rez input for a sample 'SIZE' resource resource 'SIZE' (-1) {    reserved,                                        /*reserved*/    acceptSuspendResumeEvents,                                        /*accepts suspend and resume events*/    reserved,                                        /*reserved*/    cannotBackground,                                        /*can't use background null events*/    doesActivateOnFGSwitch,                                        /*activates own windows in */                                            /* response to OS events*/    backgroundAndForeground,                                        /*application has a user interface*/    dontGetFrontClicks,                                        /*don't return mouse events */                                            /* in front window on resume*/    ignoreAppDiedEvents,                                        /*doesn’t want app-died events*/    is32BitCompatible,                                        /*works with 24- or 32-bit addr*/    notHighLevelEventAware,                                        /*can't use high-level events*/    onlyLocalHLEvents,                                        /*can't use remote high-level events*/    notStationeryAware,                                        /*can't use stationery documents*/    dontUseTextEditServices,                                        /*can't use inline input services*/    reserved,                                        /*reserved*/    reserved,                                        /*reserved*/    reserved,                                        /*reserved*/    kPrefSize * 1024,                                        /*preferred memory size*/    kMinSize * 1024                                        /*minimum memory size*/};The 'SIZE' resource specification in Listing 9-1 indicates, among other things, that the application accepts suspend and resume events, does no processing in the background, activates or deactivates any windows as necessary in response to operating-system events, has a user interface, and doesn’t want to receive any mouse event associated with a resume event that was caused by the user clicking in the application’s front window. In this example, the Rez input file must define values for the constants kPrefSize and kMinSize; for example, if kPrefSize is set to 50, the preferred partition size is 50 KB.NoteSee the chapter “Event Manager” in Inside Macintosh: Macintosh Toolbox Essentials for a more complete description of the 'SIZE' resource. <8bat\>uThe numbers you specify as your application’s preferred and minimum partition sizes depend on the particular memory requirements of your application. Your application’s memory requirements depend in turn on the size of your application’s A5 world, heap, and stack. (See the chapter “Memory” earlier in this book for details about these areas of your application’s partition.)You can usually make a fairly reliable estimate of the size of your application’s A5 world by determining the size of your application’s global variables and its jump table (whose size you can determine by looking at the size of your compiled application’s 'CODE' resource with ID 0). You can also make a good guess about the size of your application’s static heap objects—objects that are always present during the execution of your application (for example, code segments, Toolbox data structures for window records, and so on).It’s a little bit more work to determine the amount of space you’ll need to reserve for dynamic heap objects. These include objects created on a per-document basis (which may vary in size proportionally with the document itself) and objects required for specific commands or functions. Perhaps the best advice to follow in determining your application’s minimum and preferred partition sizes is to experiment with reasonable values and make sure that there is always enough memory to meet reasonable requests from the user. You can also use tools such as MacsBug’s heap-exploring commands to help empirically determine your application’s dynamic memory requirements.Handling Suspend and Resume EventsYour application receives suspend and resume events as a result of changes in its processing status. When your application is in the foreground and the Process Manager wants to switch it into the background, the Process Manager sends it a suspend event. This is a signal to your application to prepare to be switched out. Your application isn’t actually switched out immediately. Instead, the Process Manager gives your application a chance to handle the suspend event. Your application is switched out at the next event call it makes. Similarly, the application that is about to be switched into the foreground is sent a resume event once it’s actually switched. The resume event is a signal to that application that it can resume normal foreground processing.Upon receiving a suspend event, your application should deactivate the front window, remove the highlighting from any selections, and hide any floating windows. Your application should also convert any private scrap into the global scrap, if necessary. If your application shows a window that displays the Clipboard contents, you should hide this window also, because the user might change the contents of the Clipboard before returning to your application. Your application can also do anything else necessary to get ready for a major switch. Then your application should call WaitNextEvent to relinquish the processor and allow the Operating System to schedule other processes for execution. Upon receiving a resume event, your application should activate the front window and restore any windows to the state the user left them in at the time of the previous suspend event. For example, your application should show scroll bars, restore any selections that were previously in effect, and show any floating windows. Your application should copy the contents of the Clipboard and convert the data back to its private scrap, if necessary. If your application shows a window that displays the Clipboard contents, you can update the contents of the window after reading in the scrap. Your application can then resume interacting with the user.Responding to a suspend or resume event usually involves activating or deactivating windows. If you set the acceptSuspendResumeEvents flag and the doesActivateOnFGSwitch flag in your application’s 'SIZE' resource, your application is responsible for activating or deactivating its windows when it handles suspend and resume events.Listing 9-2 defines the routine called by the Venn Diagrammer application to handle operating-system events.Listing 9-2    Handling operating-system eventsPROCEDURE DoOSEvent (myEvent: EventRecord);    VAR        myWindow:                WindowPtr;BEGIN    CASE BSR(myEvent.message, 24) OF        mouseMovedMessage:             BEGIN                DoIdle(myEvent);                                                        {right now, do nothing}            END;        suspendResumeMessage:             BEGIN                myWindow := FrontWindow;                IF (BAnd(myEvent.message, resumeFlag) <> 0) THEN                    DoActivate(myWindow, activeFlag)                                                    {activate window}                ELSE                    DoActivate(myWindow, 1 - activeFlag);                                                    {deactivate window}            END;        OTHERWISE            ;    END;END;The procedure DoOSEvent is called by the main event loop (Listing 4-4 on page 77) whenever the what field of an event record contains the constant osEvt. You need to inspect the message field of that event record to determine what kind of operating-system event you’ve received. Table 9-1 shows the information contained in the bits of the message field.Table 9-1    The bits in the message field of an operating-system event recordBit    Contents    0    0 if a suspend event1 if a resume event    1    0 if Clipboard conversion is not required1 if Clipboard conversion is required    2–23    Reserved    24–31    suspendResumeMessage if a suspend or resume eventmouseMovedMessage if a mouse-moved event    As you can see, you need to inspect bits 24–31 to determine what kind of operating-system event you’ve received. Those eight bits contain one of two constants:CONST            suspendResumeMessage                                = $01;                {suspend or resume event}    mouseMovedMessage                                 = $FA;                {mouse-moved event}If the event is a suspend or resume event, you then need to examine bit 0 to determine whether that event is a suspend or resume event. (Bits 0 and 1 are meaningful only if bits 24–31 indicate that the event is a suspend or resume event.) You can use the resumeFlag constant to determine whether the event is a suspend or resume event. If the event is a resume event, you can use the convertClipboardFlag constant to determine whether Clipboard conversion from the Clipboard to your application’s scrap is required.CONST    resumeFlag                                = 1;        {resume event}    convertClipboardFlag                                = 2;        {Clipboard conversion required}The procedure DoOSEvent defined in Listing 9-2 first checks what kind of event it has received. If the event is a mouse-moved event, DoOSEvent ignores the event, treating it like a null event. If the event is a suspend or resume event, DoOSEvent then activates or deactivates the front window, depending on whether the event is a resume or a suspend event.NoteBecause the Venn Diagrammer application doesn’t support cutting or pasting, it doesn’t need to worry about converting the Clipboard. <8bat\>uHandling Null EventsRecall that the Event Manager sends your application a null event when there are no other events to report. The WaitNextEvent function reports a null event by returning a function result of FALSE and by setting the what field of the event record to nullEvt.When your application receives a null event, it can perform idle processing. Your application should do only minimal processing in response to a null event, so that other processes can use the CPU and so that the foreground process (or your application, when it is in the foreground) can respond promptly to the user. For example, if your application is in the foreground when it receives a null event, you can make the insertion point blink in the active window (if your application supports text entry).If your application receives a null event in the background, it can perform tasks or do other processing while in the background. However, your application should not perform any tasks that would slow down the responsiveness of the foreground process. Your application also should not interact with the user if it is in the background.NoteRemember that your application receives null events while it is in the background only if you’ve set the canBackground flag in your application’s 'SIZE' resource. If you don’t want your application to receive null events when it is in the background, you should set the cannotBackground flag. <8bat\>uThe Venn Diagrammer application uses null events in a somewhat interesting way. Whenever the application receives a null event, it calls the application-defined procedure DoIdle, which checks to see whether the user wants it to automatically adjust the Venn diagram and whether the diagram might need adjusting. If both of these are true, then DoIdle calls the application-defined procedure DoVennIdle to perform the automatic adjustment. The DoIdle procedure is defined in Listing 9-3.Listing 9-3    Handling null eventsPROCEDURE DoIdle (myEvent: EventRecord);    VAR        myWindow:                WindowPtr;        myHandle:                MyDocRecHnd;BEGIN    myWindow := FrontWindow;    IF IsAppWindow(myWindow) THEN        IF gAutoAdjust THEN            BEGIN                myHandle := MyDocRecHnd(GetWRefCon(myWindow));                IF myHandle^^.needsAdjusting THEN                    DoVennIdle(myWindow);            END;END;The document record contains the field needsAdjusting, which is set to TRUE each time the user clicks anywhere within the Venn diagram circles. If the user’s preference is for automatic diagram adjustment, then DoIdle calls the application-defined procedure DoVennIdle to adjust the diagram. Figure 9-2 shows the state of a diagram needing adjustment, and Figure 9-3 shows the same diagram after DoVennIdle has adjusted the diagram.NoteThe DoVennIdle procedure is not defined in this book. In addition to determining whether and how to adjust the diagram, DoVennIdle resets the needsAdjusting field of the document record to FALSE. <8bat\>uFigure 9-2    A Venn diagram before automatic adjustingFigure 9-3    A Venn diagram after automatic adjustingQuitting an ApplicationEventually the user will quit your application, usually by choosing Quit from the File menu (or by pressing the usual keyboard equivalent, Command-Q). At that time, you should close all windows, release any memory you still are holding, and exit your main event loop. Listing 9-4 shows the DoQuit routine called by the Venn Diagrammer application when the user chooses Quit from the File menu.Listing 9-4    Quitting your applicationPROCEDURE DoQuit;    VAR        myWindow:                WindowPtr;BEGIN    myWindow := FrontWindow;                                                {close all windows}    WHILE myWindow <> NIL DO        BEGIN            DoUpdate(myWindow);                                        {force redrawing window}            DoCloseWindow(myWindow);            myWindow := FrontWindow;        END;    gDone := TRUE;                                                {set flag to exit main event loop}END;The DoQuit procedure simply closes all windows belonging to the application and then sets the application global variable gDone to indicate that the user has finished using the application. Recall that the main event loop (Listing 4-4 on page 77) terminates when gDone is TRUE.NoteThe Process Manager automatically deallocates your application partition and closes all windows when your application terminates. As a result, the Venn Diagrammer application could simply have set gDone to TRUE in response to the Quit command. However, DoQuit illustrates how to close all windows because your version of DoCloseWindow might need to prompt the user to save any unsaved data in document windows currently on the desktop. <8bat\>uHandling ErrorsOccasionally, a system software routine might be unable to perform the service you’ve requested of it. You might, for instance, pass GetResource a resource specification that doesn’t apply to any resource in any of the open resource files. Or, the user might have opened so many document windows that there simply isn’t enough space in your application’s heap to open another one. In these situations, you need to determine that an error has occurred and react to it in some appropriate manner.The system software has several ways of informing your application that a requested service is not possible. Many functions return a result code that indicates whether the function completed successfully, and if not, what the reason for failure was. These functions return a result of type OSErr. Here’s an example:myResult := FindFolder(kOnSystemDisk, kPreferencesFolderType,                                 kDontCreateFolder, myVRefNum, myDirID);IF myResult = noErr THEN    ...ELSE    ...;Other routines—mainly procedures and functions that return other types of results—don’t return a result code directly. To find out whether these kinds of routines were successful, you need to call an additional system software routine. For example, some Resource Manager procedures don’t directly indicate if the resource operation was successful or not. To find that out, you can call the ResError function. The DoSavePrefs routine (defined in Listing 3-6 on page 66) uses this strategy to update a preferences resource:RmveResource(myHandle);IF ResError = noErr THEN    AddResource(myPrefData, kPrefResType, kPrefResID, myName);IF ResError = noErr THEN    WriteResource(myPrefData);Similarly, the Resource Manager routine Get1Resource returns a handle to the specified resource data. If for some reason the resource cannot be opened, the function returns a handle whose value is NIL. You can inspect the returned value to determine whether it’s safe to proceed.myHandle := Get1Resource(kPrefResType, kPrefResID);IF myHandle <> NIL THEN    ...;You could also call ResError to determine if Get1Resource succeeded. In other words, the following lines are equivalent to the preceding ones:myHandle := Get1Resource(kPrefResType, kPrefResID);IF ResError <> noErr THEN    ...;The Memory Manager provides the MemError function, which works much as ResError does. For Memory Manager functions that return a value, you can either inspect the returned value or call MemError to determine if the function completed successfully.This book has used a fairly simple strategy for detecting and reacting to the normal kinds of problems. When calling a function that returns a pointer or handle, Venn Diagrammer checks that the value of that pointer or handle isn’t NIL. If it is NIL, Venn Diagrammer usually just skips any code that uses that pointer or handle.IMPORTANTVenn Diagrammer’s error-handling strategy is far too simple for most applications, and it runs afoul of good human interface principles. For example, if the DoCreateWindow function (defined in Listing 6-6 on page 117) cannot allocate the memory it needs, it exits and returns a NIL window pointer to the calling routine. The net result is that no new window is created, in spite of the user’s desire to create one. At the very least, DoCreateWindow should inform the user that a new window could not be created because sufficient memory was not available. <8bat\>sOccasionally, an application might run into some more serious problem during its execution that renders further processing impossible or undesirable. For example, if the Venn Diagrammer application isn’t able to allocate enough memory for the data structure it uses to maintain information about a document window’s geometry, there’s no point in continuing to run, because the application won’t be able to draw anything in any document windows. In that case, the application should gracefully terminate its own execution. (See Listing 5-3 on page 95.)To do this, the Venn Diagrammer application defines the DoBadError procedure and calls it whenever there is a problem serious enough to warrant such drastic action. The DoBadError procedure is defined in Listing 9-5.Listing 9-5    Handling serious errorsPROCEDURE DoBadError (myError: Integer);VAR    myItem:                Integer;    myMessage:                Str255;BEGIN    SetCursor(arrow);                                                        {set arrow cursor}    GetIndString(myMessage, kErrorStrings, myError);    ParamText(myMessage, '', '', '');    myItem := Alert(rErrorAlert, NIL);                                                        {display message}    ExitToShell;                                                        {terminate execution}END;The application passes DoBadError an index into a resource of type 'STR#' that contains messages indicating the types of serious errors. First DoBadError sets the cursor to the standard arrow cursor (this step is necessary only if your application ever changes the cursor). Then DoBadError retrieves the appropriate message from the application’s resource fork and calls the Dialog Manager routine ParamText to substitute the message into the alert box text. After that, DoBadError displays the alert box by calling the Dialog Manager routine Alert. (See Figure 7-2 on page 134 for an example of this alert box.) Finally, DoBadError calls the Process Manager procedure ExitToShell to terminate the application immediately.Checking the Operating EnvironmentCalling ExitToShell is the preferred way to terminate your application if for some reason you don’t want to return to your main event loop. You might also want to call DoBadError to terminate your application before you even get to the main event loop. This might happen if your application requires system software routines that aren’t available in all operating environments. In general, if your application uses any system software routines that aren’t available in all operating environments, you need to make sure that they are available in the current environment. Otherwise, your application will crash.For example, the Venn Diagrammer application uses the FindFolder function to find the Preferences folder containing the application’s preferences file (see Listing 3-3 on page 62). Because FindFolder was introduced in system software version 7.0, Venn Diagrammer will crash if it calls FindFolder when running in an earlier system software version.To avoid crashing in environments that don’t support the FindFolder function, the Venn Diagrammer application makes sure that the function is available before calling it. It calls the Gestalt function to see if FindFolder is present, as shown in Listing 9-6.Listing 9-6    Checking that FindFolder is presentFUNCTION IsFindFolder: Boolean;VAR    myResult:                OSErr;    myFeature:                LongInt;BEGIN    IsFindFolder := FALSE;                                        {assume it's not available}    myResult := Gestalt(gestaltFindFolderAttr, myFeature);    IF myResult = noErr THEN         IsFindFolder := BTST(myFeature, gestaltFindFolderPresent);END;The Gestalt function is part of the Gestalt Manager, which you can use to determine what software and hardware features are available in the current operating environment. When passed the gestaltFindFolderAttr selector code, the Gestalt function fills in the long integer passed in its second parameter (myFeature) with a bit field that encodes information about the features of the FindFolder function. Currently only one bit is defined, specified using the constant gestaltFindFolderPresent. If that bit is set, then FindFolder is present in the operating environment. The Venn Diagrammer application calls IsFindFolder as follows (see Listing 3-3 on page 62):IF IsFindFolder THEN    myResult := FindFolder(kOnSystemDisk, kPreferencesFolderType,                                    kDontCreateFolder, myVRefNum, myDirID);NoteFor complete details about using the Gestalt function to determine the features of the current operating environment, see the chapter “Gestalt Manager” in Inside Macintosh: Operating System Utilities. <8bat\>uIf FindFolder function isn’t available, Venn Diagrammer looks in the default directory instead of in the Preferences folder for the user’s preferences file. This isn’t the best strategy possible, but it’s good enough for a simple application like Venn Diagrammer. More generally, however, you need to decide what the base system software requirements of your application are and how you want to react if necessary services aren’t available. In some cases, working around a problem isn’t so easy. In those cases, informing the user that your software won’t run in the current system configuration and then exiting is probably the right thing to do.A second way to determine the availability of a particular system software routine is to test directly for the existence of the routine by inspecting its trap number (a number that identifies each system software routine), using the technique illustrated in Listing 9-7. You should use this method to test for the existence of routines not included in managers about which Gestalt can report.Listing 9-7    Determining whether a trap is availableFUNCTION NumToolboxTraps: Integer;BEGIN    IF NGetTrapAddress(_InitGraf, ToolTrap) =                             NGetTrapAddress($AA6E, ToolTrap) THEN        NumToolboxTraps := $200    ELSE        NumToolboxTraps := $400;END;FUNCTION GetTrapType (theTrap: Integer): TrapType;CONST    TrapMask = $0800;BEGIN    IF BAND(theTrap, TrapMask) > 0 THEN        GetTrapType := ToolTrap    ELSE        GetTrapType := OSTrap;END;FUNCTION TrapAvailable (theTrap: Integer): Boolean;VAR    tType:                TrapType;BEGIN    tType := GetTrapType(theTrap);    IF tType = ToolTrap THEN    BEGIN        theTrap := BAND(theTrap, $07FF);        IF theTrap >= NumToolboxTraps THEN            theTrap := _Unimplemented;    END;    TrapAvailable := NGetTrapAddress(theTrap, tType) <>                            NGetTrapAddress(_Unimplemented, ToolTrap);END;Listing 9-8 shows how to use the TrapAvailable function defined in Listing 9-7 to determine whether the WaitNextEvent function is available.Listing 9-8    Checking for the availability of the WaitNextEvent functionFUNCTION WNEAvailable: Boolean;CONST                _WaitNextEvent                         = $A860;                {trap number of WaitNextEvent}BEGIN                WNEAvailable :=  TrapAvailable(_WaitNextEvent);END;The NumToolboxTraps function relies on the fact that the InitGraf trap (trap number $A86E) is always implemented. If the trap dispatch table is large enough (that is, has more than $200 entries), then $AA6E always points to either _Unimplemented or something else, but never to InitGraf. As a result, you can check the size of the trap dispatch table by checking to see if the address of trap $A86E is the same as $AA6E.After receiving the information about the size of the dispatch table, the TrapAvailable function first checks to see if the trap to be tested has a trap number greater than the total number of traps available on the machine. If so, it sets the theTrap variable to _Unimplemented before testing it against the _Unimplemented trap. See the discussion of the trap dispatch table utilities in Inside Macintosh: Operating System Utilities for complete details on trap numbers and the trap dispatch table.IMPORTANTThere’s one final twist in this story. Your software development system might provide glue routines that mimic the operation of some system software routines, thereby allowing you to call them in earlier system software versions. (For instance, MPW versions 3.2 and later provide glue that allows you to call FindFolder in system software versions prior to 7.0.) However, you cannot in general use Gestalt or the technique shown in Listing 9-7 to test for the availability of routines provided as glue. Instead, you’ll need to consult the documentation for your development system to find out what glue routines it provides. <8bat\>s    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>Going FurtherIf you’ve made it this far, you’ve learned quite a bit about putting a Macintosh application together. You’ve seen how to create and manage menus, windows, dialog boxes, and preference files. You know how to get information about the user’s actions, and you know how to respond to many of those actions. You also know, at least in overview, how your application shares the available system resources with the Operating System and other open applications. Congratulations; that’s a lot to learn in less than 200 pages.No doubt, however, you want to learn more. The Venn Diagrammer application fails to implement a number of very fundamental elements of a typical Macintosh application. It provides no text-input or editing capabilities, no support for user drawing, no support for color, and virtually no support for the many important features introduced in System 7. The following section briefly describes some of these capabilities and refers you to the Inside Macintosh books that give more information about implementing those capabilities.This afterword also provides some hints on writing your application so that it is compatible with all existing Macintosh computers and system software versions and so that it can be easily localized to different languages. This afterword ends with a list of additional developer services provided by Apple Computer, Inc.Implementing Further FeaturesVenn Diagrammer succeeds in its basic goal, which is to illustrate how to implement many of the essential user interface components of a typical Macintosh application and to introduce the very simplest features of the Operating System. It shows how to do basic drawing in a window and how to handle many user actions. Best of all, it’s a real application that does useful, albeit limited, work.It’s important to realize that although some parts of the source code presented throughout this book are purposely simplified, other parts are not. The code for handling dialog boxes, for instance, is designed to be easily amplified to handle other modeless dialog boxes. The basic event loop and the menu-handling code are also quite typical of what you’d find in a commercial Macintosh application. The Venn Diagrammer source code is not intended as a shell on which to base your application, but chances are you’ll do at least a few things in the same way.Still, the Venn Diagrammer source code fails to illustrate how to implement a number of important Macintosh features. Here’s a moderately complete list of what’s missing and where you can look to get the information you need to add these features to your application:n    Windows. The document windows created by the Venn Diagrammer application are of fixed size, so they don’t need to contain zoom boxes, size boxes, or scroll bars. In all likelihood, however, your application will allow the user to enter and edit information (such as text or graphics) that will usually not fit in a fixed-size window. As a result, you will probably want to include support for these window elements. To learn how to handle zoom and size boxes, see the chapter “Window Manager” in Inside Macintosh: Macintosh Toolbox Essentials. To learn how to implement scroll bars, see the chapter “Control Manager” in that same book.n    Menus. The Macintosh system software provides support for several kinds of menus in addition to the standard “pull-down” menus used by the Venn Diagrammer application. A very useful adaptation of the pull-down menu is the pop-up menu, which you can put in dialog boxes and document windows. Moreover, both pop-up menus and pull-down menus can contain hierarchical menus, where an entire menu is attached to a menu item. For information about these additional kinds of menus, see the chapter “Menu Manager” in Inside Macintosh: Macintosh Toolbox Essentials. That chapter also shows how to modify a menu item’s text and style, how to add a mark to a menu item, and how to associate an icon with a menu item. Because pop-up menus are actually very complex controls, you’ll also need to read the chapter “Control Manager” in Inside Macintosh: Macintosh Toolbox Essentials to learn how to handle pop-up menus.n    Text. Most Macintosh applications support some form of text entry and editing, even if just to solicit some piece of information from the user in a dialog box. The system software includes TextEdit, which you can use to provide basic text-handling capabilities for your application. Although TextEdit was originally designed to handle edit fields in a dialog box, you can also use it for other purposes. For example, if you’re writing a spreadsheet application, you might use TextEdit to handle small amounts of text. TextEdit is not, however, suitable for large amounts of text (greater than about 32,000 characters). If you’re writing a word-processing application, you’ll need to write your own custom text-handling routines. To learn how to handle text entry and editing in dialog boxes, see the chapter “Dialog Manager” in Inside Macintosh: Macintosh Toolbox Essentials. To learn how to use TextEdit directly, see the chapter “TextEdit” in Inside Macintosh: Text. This latter book also describes a number of other text-related facilities provided by the Macintosh system software, such as support for multiple fonts and non-Roman character sets.n    Files. The Venn Diagrammer application can create, read, and write resource files only (which contain the user’s preferences). Most applications allow the user to create and edit information of arbitrary size, and they store that information in a file’s data fork. The data fork can contain any kind of information you care to put there. You read and write data from a file’s data fork using the File Manager, and you present the standard user interface for opening and saving files using the Standard File Package. The chapter “Introduction to File Management” in Inside Macintosh: Files shows how to use these and other services to implement the typical File menu commands (Open, Save, Save As, Revert, and so forth). Other chapters in that book provide more detailed information about the structure of the file system used on Macintosh computers and about the system software managers you can use to manipulate objects in the file system. For more complete information on reading and writing resource files, see the chapter “Resource Manager” in Inside Macintosh: More Macintosh Toolbox.n    Icons. To learn how to define icons for your application and its document files, see the chapter “Finder Interface” in Inside Macintosh: Macintosh Toolbox Essentials.n    Help. Every application should include the resources necessary to allow the Help Manager to display help balloons after the user has chosen the Show Balloons command from the Help menu. Usually you can add support for help balloons simply by adding resources to your application’s resource fork, without having to change or recompile its source code. In some cases, however, you might also need to modify the source code to provide help balloons. For complete details on implementing help balloons, see the chapter “Help Manager” in Inside Macintosh: More Macintosh Toolbox.n    Printing. One of the easiest features to add to the Venn Diagrammer application is the capability to print a Venn diagram window. Printing essentially involves just drawing the window into a special graphics port called a printing graphics port. Before doing that, however, you need to present the standard dialog boxes to set up a page and to send a print job to a printer. If, as is usually the case, there are multiple pages to be printed, you’ll want to structure your printing code into a printing loop. A complete printing loop is provided in the chapter “QuickDraw Printing Manager” in Inside Macintosh: Imaging. That chapter also shows how to handle a number of other printing-related tasks.n    Memory. The Venn Diagrammer application is surprisingly naive in its management of the memory in its own partition. For the most part, it simply tries to allocate the memory it needs for some particular operation, and if it fails to get that memory, it just does the safest thing it can to work around that failure. You’ll want to implement a much more robust scheme to manage the memory you’re allocated when your application starts up. You need to make sure that your application’s memory requirements don’t consume too much of your partition, because many system software routines (especially many QuickDraw routines) also use memory in your application partition. For a simple but effective memory-management strategy, see the chapter “Introduction to Memory Management” in Inside Macintosh: Memory. For some advice on how to segment your application’s executable code to minimize its memory footprint, see the chapter “Segment Manager” in Inside Macintosh: Processes.n    Interapplication Communication. To take full advantage of the cooperative multitasking environment provided in system software versions 7.0 and later, your application should be able to communicate effectively with other open applications. The system software provides several ways in which you can interact with other applications. You can support the publish and subscribe capabilities of the Edition Manager (described earlier in “Interapplication Communication” beginning on page 14) and you can support high-level events such as Apple events. For complete details on how to communicate and share data with other applications, see the book Inside Macintosh: Interapplication Communication.n    Sound. You can enhance the perceived quality of your application by appropriately including sounds in its user interface. When, for example, the user asks the Venn Diagrammer application to check the user’s diagram, the application might play some agreeable sound if the diagram is correct and some discordant sound otherwise. Sound can provide user feedback that is not achievable using text and graphics alone. Other applications are more directly involved with recording or producing sound. To learn how to add sound capabilities to your application, see the chapter “Introduction to Sound” in Inside Macintosh: Sound.n    Color. Like sound, color might be either an enhancement to or a fundamental feature of your application. For example, Venn Diagrammer might allow the user to fill empty regions with colored patterns. You can use QuickDraw to draw shapes, regions, and even text in any color supported by the available video devices. For complete information on supporting color in your application, see the appropriate chapters in Inside Macintosh: Imaging.IMPORTANTYou don’t have to read all of the books mentioned in this list to develop a Macintosh application. Which of the many Inside Macintosh books you’ll need depends on the particular requirements of your application. (The Venn Diagrammer application, for instance, draws mainly on four books only: Inside Macintosh: Macintosh Toolbox Essentials, Inside Macintosh: More Macintosh Toolbox, Inside Macintosh: Memory, and Inside Macintosh: Imaging.) Moreover, you don’t necessarily have to read all of a chapter to get started using a certain manager. Most chapters in Inside Macintosh contain advanced material that is likely to be of interest only to developers with very specialized needs. <8bat\>sMaintaining CompatibilityCompatibility is the ability of an application to execute properly in different operating environments. Compatibility is important if you want to write software that runs, with little or no modification, on all members of the Macintosh family and in all system software versions.The key to achieving compatibility is not to depend on things that may change. Inside Macintosh contains numerous warnings about which information is likely to change. As the Operating System and Toolbox evolve to accommodate the needs of developers and users, many of their elements will vary. Whenever possible, Apple Computer strives to add features without altering existing programming interfaces. In general, you can assume that Operating System and Toolbox routines are less likely to change than data structures. Therefore, you should never directly manipulate data structures that are internal to a manager or system software routine, even if their structure is documented. Instead, you should manipulate those structures only indirectly, by calling Operating System and Toolbox routines that achieve the desired effect. In particular, you should never alter any portion of a data structure marked as unused or reserved.Another key to writing compatible code is to code defensively. Do not assume that users perform actions in a particular order, and do not assume that function and procedure calls always succeed. You should always test the return values of routines for errors, as illustrated in most of the code samples presented in this book.Here are some more specific guidelines to keep in mind as you write your application:n    Never address hardware directly; whenever possible, use the routines provided by the various device drivers and managers to send data to the available hardware. The addresses of memory-mapped hardware are always subject to change, as is the hardware itself. More important, direct access to such hardware is not possible in every operating environment. In multi-user systems like A/UX, for instance, the operating system manipulates all hardware; applications simply cannot write directly to hardware addresses.n    Avoid writing directly to the screen. Use QuickDraw routines whenever possible to draw on the screen. If you absolutely must write directly to the screen, do not assume that the screen is a fixed size or that it is in a fixed location. The location, size, and bit depth of the screen differ in various machines.n    Don’t rely on system global variables. Many of these variables are documented in Inside Macintosh, but many are not. In particular, you must avoid undocumented system global variables because they are most likely to change. But you should try to avoid even well-known system global variables because they may not be available in all environments or in the future. In general, you can avoid using system global variables by using available routines that return the same information. (For example, the TickCount function returns the same value that is contained in the system global variable Ticks.)Making Your Application LocalizableLocalization is the process of adapting an application to a specific language, culture, and region. By planning ahead and making localization relatively painless, you’ll ensure that your product is ready for international markets in the future. This section provides a brief overview of what you need to do to make it easy to localize your application. For the complete account of writing software that is compatible with Macintosh computers throughout the world, see Inside Macintosh: Text and Guide to Macintosh Software Localization.The key to easy localization is to store region-dependent information used by your application as resources (rather than within the application’s code). Text seen by the user can then be translated without modifying the code. In addition, storing such information in resources means that your application can be adapted for a different area of the world simply by substituting the appropriate resources. Make sure that at least the following kinds of information are stored in resources:n    all text, including special characters and delimitersn    menus and keyboard equivalents for menu commands (if available)n    character, word, phrase, and text translation tablesn    address formats, including zip codes and telephone numbersWhen you create resources for your applications, remember the following key points:n    text needs room to grow (up, down, and sideways)n    translated text is often 50 percent larger than the U.S. English text n    diacritical marks, widely used outside the United States, may extend up to the ascent linen    some system fonts contain characters that extend to both the ascent and descent linesn    text location within a window should be easy to changeUsing Developer ServicesIn addition to the Inside Macintosh library of books, Apple Computer provides a number of other services that you can use to learn more about programming for Macintosh computers and simplify your software development process. Apple’s goal in making these services available is to provide you with the resources you need to create outstanding Macintosh applications. These services includen    books and other technical publicationsn    programming languages and toolsn    programming classes and self-paced training materialsn    conferences and workshopsn    technical supportMost of these products and services are available to anyone interested in programming for Macintosh computers. You can get information about them by contacting APDA, Apple’s source for developer tools. See the Preface (page xv) for details on contacting APDA.Some of the services just listed—in particular, technical support and invitations to some developer conferences and workshops—are provided only to members of the Apple Associates and Partners Program. For information about Apple’s support programs for commercial developers, call the Developer Hotline at (408) 974-4897. These programs are available to developers in the United States and Canada only.Technical PublicationsApple provides a number of technical publications that can assist you in writing Macintosh applications. Here’s a brief description of three books that you’ll probably need right now:n    Macintosh Human Interface Guidelines. A complete description of the Apple Desktop Interface and an indispensable set of guidelines governing the appearance and behavior of Macintosh applications. You will need this book to ensure that your application conforms to those guidelines.n    Technical Introduction to the Macintosh Family. A general introduction to the family of Macintosh computers, with emphasis on the features that make it a desirable platform for application developers. This book also provides details on Macintosh hardware and on A/UX, Apple’s version of the UNIX<Superscript\>®  operating system.n    Guide to Macintosh Software Localization. A guide to the process of localizing application software for Macintosh computers around the world. You’ll want to read this book for essential information about making your product marketable worldwide.If you are an Apple Associate or Partner, you’ll automatically receive a subscription to develop, The Apple Technical Journal. This magazine is intended to complement other reference materials like Inside Macintosh. It doesn’t try to replace or reword those books; instead, it’s designed to help you understand them by illustrating some of the techniques they describe. For subscription information, contactdevelopApple Computer, Inc. P.O. Box 531Mount Morris, IL 61054-7858Telephone    800-877-5548 (United States)815-734-6309 (All other countries)    Fax    815-734-4205    AppleLink    DEV.SUBS    TrainingApple Developer University offers a broad range of Macintosh programming instruction through hands-on classes and self-paced training products. Classes are offered in Cupertino, at Apple training facilities worldwide, on an on-site basis, and through selected third-party University and Corporate trainers.Developer University provides expert instruction for all levels of Macintosh programmers. These course teach programmers to produce fast, efficient code that takes maximum advantage of the Macintosh Toolbox and Operating System.Apple Developer University is open to all individuals worldwide who have an interest in mastering leading-edge technology. To reserve your place in a class, schedule an on-site training class, or for more information, contactApple Developer University Training RegistrarApple Computer, Inc. 20525 Mariani AvenueM/S 75-6UCupertino, CA 95014Telephone    408-974-6215 (United States)    Fax    408-974-0544     AppleLink    DEVUNIV    Technical SupportIf you are an Apple Associate or Partner, you’ll have access to various levels of technical support from Apple. Both Associates and Partners receive monthly mailings that include a newsletter, Apple II and Macintosh Technical Notes, pertinent Developer Programs information, and the latest news relating to Apple products. Mailings also usually include the latest developer CD-ROM, which contains system software, programming utilities, code samples illustrating how to use various parts of the Macintosh system software, and the latest on-line technical documentation.In addition, Apple Partners receive discounts on Apple equipment and technical assistance from the staff of Apple’s Developer Technical Support department.    AppendixesThe following five appendixes provide complete source code listings of the parts of the Venn Diagrammer application whose operations are explained in this book. For clarity, the source code is divided into five parts:n    Appendix A, “Constants, Types, and Variables”, beginning on page 195, defines the constants, data types, and global variables used by the Venn Diagrammer applicationn    Appendix B, “Utility Routines”, beginning on page 199, defines a number of utility procedures and functions used by the remaining code samplesn    Appendix C, “Dialog Code”, beginning on page 205, defines a handful of procedures that manage dialog boxesn    Appendix D, “Resource Code”, beginning on page 211, shows how to read and write a simple set of application preferencesn    Appendix E, “User Interface Code”, beginning on page 217, shows the code that manages the basic application setup, event handling, and user interfaceCode that is specific to handling Venn diagrams (such as the procedures that handle the first five menu commands in the Venn menu) is not shown in this book.IMPORTANTAs explained in the preface to this book, this code is provided for explanatory purposes only. The code listed in these appendixes might not be appropriate for the particular needs of your application. <8bat\>s    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>Constants, Types, and VariablesThis appendix defines most of the constants, data types, and global variables used by the Venn Diagrammer application.UNIT Global;INTERFACE    CONST        {menu constants (resource IDs and menu command numbers)}        rMenuBar                    = 128;                                {menu bar resource ID}        mApple                    = 128;                                {resource ID of Apple menu}        iAbout                    = 1;                                {our About... dialog}        mFile                    = 129;                                {resource ID of File menu}        iNew                    = 1;        iClose                    = 2;        iQuit                    = 4;        mEdit                    = 130;                                {resource ID of Edit menu}        iUndo                    = 1;        iCut                    = 3;        iCopy                    = 4;        iPaste                    = 5;        iClear                    = 6;        mVennD                    = 131;                                {resource ID of Venn menu}        iCheckVenn                    = 1;        iDoVenn                    = 2;        iClearVenn                    = 3;        iNextTask                    = 4;        iCheckArg                    = 5;        iGetVennPrefs                    = 7;        kNumTools                    = 5;        rVennD                    = mVennD;                        {resource ID of Venn diagram window}        {dialog boxes and their associated items}        rAboutDial                    = 7000;                                    {resource ID of About dialog}        iOK                    = 1;                                    {OK button}        iCancel                    = 2;                                    {Cancel button}        rVennDPrefsDial = 3040;                                    {resource ID of Preferences dialog}        iEmpty1Radio                                = 1;                    {dialog item numbers}        iEmpty2Radio                                = 2;        iEmpty3Radio                                = 3;        iEmpty4Radio                                = 4;        iEmpty1Icon                                = 5;        iEmpty2Icon                                = 6;        iEmpty3Icon                                = 7;        iEmpty4Icon                                = 8;        iExist1Radio                                = 9;        iExist2Radio                                = 10;        iExist3Radio                                = 11;        iExist4Radio                                = 12;        iExist1Icon                                = 13;        iExist2Icon                                = 14;        iExist3Icon                                = 15;        iExist4Icon                                = 16;        iGetNextRandomly                                = 19;        iAutoAdjust                                = 20;        iShowSchoolNames                                = 21;        iUseExistImport                                = 22;        iSaveVennPrefs                                = 23;        kVennPrefsItemCount                                = 23;        kVisualDelay                        = 8;            {ticks to invert a button to simulate press}        kCntlActivate                        = 0;            {enabled control's hilite state}        kCntlDeactivate                        = $FF;            {disabled control's hilite state}        kToolHt                        = 14;            {height of a tool icon}        kToolWd                        = 21;            {width of a tool icon}        kVennToolsIconStart = 768;                                    {base resource ID of tools icons}        kExistID                        = 2000;            {first (of four) icons showing existence}        kEmptyID                        = 3000;            {first (of four) patterns showing emptiness}        {Text strings printed in a Venn diagram window.}        rMiscStrings                        = 1004;            {resource ID of 'STR#' for text items}        kShowAnswerText                        = 1;            {in Venn menu}        kShowUserText                        = 2;            {in Venn menu}        kAllText                        = 3;        kNoText                        = 4;        kSomeText                        = 5;        kAreText                        = 6;        kAreNotText                        = 7;        kFigureText                        = 8;        kMoodText                        = 9;        {Venn Diagram window status messages: 'STR#' resource ID = rVennD}        eDiagramCorrect                            = 1;        eDiagramIncorrect                            = 2;        eHereIsSolution                            = 3;        eHereIsYourWork                            = 4;        eCannotEditAnswer                            = 5;        eCannotEraseAnswer                            = 6;        eArgIsValid                            = 7;        eArgNotValid                            = 8;        eExistNotPossible                            = 9;        rErrorAlert                        = 129;            {res ID of 'ALRT' resource for error mesgs}        kErrorStrings                        = 1005;            {res ID of 'STR#' resource for error mesgs}        eCantFindMenus                        = 1;            {can't read menu bar resource}        eNotEnoughMemory                        = 2;            {insufficient memory for operation}        {constants defining several keyboard characters}        kEnter                        = char(3);                                {the enter character}        kReturn                        = char(13);                                {the return character}        kEscape                        = char(27);                                {the escape character}        kPeriod                        = '.';                                {the period character}    TYPE         {record to hold the current settings of a Venn Diagram window}        MyDocRec =             RECORD                        {information about a document window}                figure:                        Integer;                        {the figure of the syllogism}                mood:                        ARRAY[1..3] of Integer;                                                                {the moods of the statements}                terms:                        ARRAY[1..3] of Str31;                                    {the three terms}                statusText:                        Str255;                        {most recent status message}                userSolution:                        MyDiagramState;                        {user's diagram state}                realSolution:                        MyDiagramState;                        {answer's diagram state}                isAnswerShowing:                        Boolean;                        {is the answer showing?}                isExistImport:                        Boolean;                        {stmts imply exists subject?}                needsAdjusting:                        Boolean;                        {diagram needs adjusting?}            END;        MyDocRecPtr = ^MyDocRec;        MyDocRecHnd = ^MyDocRecPtr;    VAR        gNumDocWindows:                             Integer;                {the number of open document windows}        gPrefsDialog:                            DialogPtr;                {pointer to Preferences dialog window}        gAppsResourceFile:                            Integer;                {reference number of app's res file}        gPreferencesFile:                            Integer;                {reference number of app's prefs file}        gToolsIcons:                            ARRAY[1..kNumTools] of Handle;                                                    {handles to tools icons}        gEmptyPats:                            ARRAY[1..4] of PatHandle;                                                    {handles to emptiness patterns}        gExistIcons:                            ARRAY[1..4] of Handle;                                                    {handles to existence symbols}        gMoodIcons:                            ARRAY[1..4] of Handle;                                                    {handles to mood icons}        gFigureIcons:                            ARRAY[1..4] of Handle;                                                    {handles to figure icons}        gExistIndex:                            Integer;                {rank of icon showing existence}        gEmptyIndex:                            Integer;                {rank of icon showing emptiness}        gStepRandom:                            Boolean;                {generate next setup randomly?}        gAutoAdjust:                             Boolean;                {automatically adjust the diagram?}        gGiveImport:                            Boolean;                {do subjects have existential import?}        gShowNames:                            Boolean;                {do we show names of valid forms?}IMPLEMENTATIONEND. {UNIT Global}    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>Utility RoutinesThis appendix defines a number of utility procedures and functions that are called by other parts of the Venn Diagrammer application.UNIT Utilities;INTERFACE    USES        Global;    PROCEDURE DoPlotIcon (myRect: Rect; myIcon: Handle; myWindow: WindowPtr;                                 myMode: Integer);    PROCEDURE DoOutlineControl (myControl: univ ControlHandle);    PROCEDURE DoDefaultButton (myDialog: DialogPtr);    FUNCTION IsDAccWindow (myWindow: WindowPtr): Boolean;    FUNCTION IsAppWindow (myWindow: WindowPtr): Boolean;    FUNCTION IsDialogWindow (myWindow: WindowPtr): Boolean;    PROCEDURE DoPositionWindow (myWindow: WindowPtr);    PROCEDURE DoSetWindowTitle (myWindow: WindowPtr);    FUNCTION DoTrackRect (myWindow: WindowPtr; myRect: Rect): Boolean;    PROCEDURE DoStatusText (myWindow: WindowPtr; myText: Str255);    PROCEDURE DoStatusMesg (myWindow: WindowPtr; myMessage: Integer);    PROCEDURE DoBadError (myError: Integer);    FUNCTION IsFindFolder: Boolean;    FUNCTION MyRandom (last: Integer): Integer;IMPLEMENTATION{DoPlotIcon: plot a piece of an icon in a specified rectangle}    PROCEDURE DoPlotIcon (myRect: Rect; myIcon: Handle; myWindow: WindowPtr;                                     myMode: Integer);        VAR            myBitMap:                BitMap;    BEGIN        myBitMap.baseAddr := myIcon^;        myBitMap.rowBytes := 4;        myBitMap.bounds := myRect;        CopyBits(myBitMap, myWindow^.portBits, myRect, myRect, myMode, NIL);    END;{DoOutlineControl: draw bold outline around a control}    PROCEDURE DoOutlineControl (myControl: UNIV ControlHandle);        VAR            myOval:                Integer;            myRect:                Rect;            origPen:                PenState;            origPort:                GrafPtr;    BEGIN        IF myControl <> NIL THEN            BEGIN                GetPort(origPort);                SetPort(myControl^^.contrlOwner);                GetPenState(origPen);                PenNormal;                myRect := myControl^^.contrlRect;                InsetRect(myRect, -4, -4);                myOval := ((myRect.bottom - myRect.top) DIV 2) + 2;                IF (myControl^^.contrlHilite = kCntlActivate) THEN                    PenPat(black)                ELSE                    PenPat(gray);                PenSize(3, 3);                FrameRoundRect(myRect, myOval, myOval);                SetPenState(origPen);                                                {restore previous pen state}                SetPort(origPort);            END;    END;{DoDefaultButton: draw bold outline around default button in a dialog}{this procedure assumes that the default button is item number 1 (i.e., iOK)}    PROCEDURE DoDefaultButton (myDialog: DialogPtr);        VAR            myType:                Integer;            myHand:                Handle;            myRect:                Rect;    BEGIN        GetDialogItem(myDialog, iOK, myType, myHand, myRect);        DoOutlineControl(myHand);    END;{IsDAccWindow: determine if specified window belongs to a desk accessory}    FUNCTION IsDAccWindow (myWindow: WindowPtr): Boolean;    BEGIN        IF myWindow = NIL THEN            IsDAccWindow := FALSE        ELSE            IsDAccWindow := WindowPeek(myWindow)^.windowKind < 0;    END;{IsAppWindow: determine if specified window belongs to my app}    FUNCTION IsAppWindow (myWindow: WindowPtr): Boolean;    BEGIN        IF myWindow = NIL THEN            IsAppWindow := FALSE        ELSE            IsAppWindow := WindowPeek(myWindow)^.windowKind = userKind;    END;{IsDialogWindow: determine if specified window is a dialog}    FUNCTION IsDialogWindow (myWindow: WindowPtr): Boolean;    BEGIN        IF myWindow = NIL THEN            IsDialogWindow := FALSE        ELSE            IsDialogWindow := WindowPeek(myWindow)^.windowKind = dialogKind;    END;{DoPositionWindow: set the position of a new window}    PROCEDURE DoPositionWindow (myWindow: WindowPtr);    BEGIN    END;{DoSetWindowTitle: construct a title for a new window}    PROCEDURE DoSetWindowTitle (myWindow: WindowPtr);        VAR            myName:                Str255;            myRank:                Str255;    BEGIN        GetWTitle(myWindow, myName);        gNumDocWindows := gNumDocWindows + 1;        NumToString(gNumDocWindows, myRank);        myName := concat(myName, ' ', myRank);        SetWTitle(myWindow, myName);    END;{DoTrackRect: do "TrackBox" for a random rectangle}{this is used to process clicks in a window tool}    FUNCTION DoTrackRect (myWindow: WindowPtr; myRect: Rect): Boolean;        VAR            myIgnore:                LongInt;            myPoint:                Point;    BEGIN        InvertRect(myRect);                            {invert the rectangle}        REPEAT            Delay(kVisualDelay, myIgnore)        UNTIL NOT StillDown;                                        {keep inversion until mouse is released}        InvertRect(myRect);        GetMouse(myPoint);                                        {get mouse location in local coordinates}        DoTrackRect := PtInRect(myPoint, myRect);    END;{DoStatusText: print a message in a window's status area}    PROCEDURE DoStatusText (myWindow: WindowPtr; myText: Str255);        VAR            myRect:                Rect;            origSize:                Integer;            origFont:                Integer;            myHandle:                MyDocRecHnd;        CONST            kSlop = 4;            kSize = 9;            kFont = applFont;    BEGIN        IF myWindow <> NIL THEN            BEGIN                SetPort(myWindow);                origSize := myWindow^.txSize;                                        {remember original size and font}                origFont := myWindow^.txFont;                TextSize(kSize);                                        {set desired size and font}                TextFont(kFont);                SetRect(myRect, kToolWd * kNumTools, 0,                                         myWindow^.portRect.right, kToolHt);                EraseRect(myRect);                IF length(myText) > 0 THEN                    BEGIN                        MoveTo(myRect.left + kSlop, myRect.bottom - kSlop);                        DrawString(myText);                    END;                TextSize(origSize);                                        {restore original size and font}                TextFont(origFont);                {Remember the last message printed in this window.}                myHandle := MyDocRecHnd(GetWRefCon(myWindow));                myHandle^^.statusText := myText;            END;    END;{DoStatusMesg: call DoStatusText, getting the text from a resource}    PROCEDURE DoStatusMesg (myWindow: WindowPtr; myMessageID: Integer);        VAR            myText:                Str255;    BEGIN        GetIndString(myText, rVennD, myMessageID);        DoStatusText(myWindow, myText);    END;{DoBadError: inform the user of fatal errors, then terminate the app}    PROCEDURE DoBadError (myError: Integer);        VAR            myItem:                Integer;            myMessage:                Str255;    BEGIN        SetCursor(arrow);                                                        {set arrow cursor}        GetIndString(myMessage, kErrorStrings, myError);        ParamText(myMessage, '', '', '');        myItem := Alert(rErrorAlert, NIL);                                                        {display message}        ExitToShell;                                                        {terminate execution}    END;{IsFindFolder: is the FindFolder function available?}    FUNCTION IsFindFolder: Boolean;    VAR        myResult:                OSErr;        myFeature:                LongInt;    BEGIN        IsFindFolder := FALSE;                                        {assume it's not available}        myResult := Gestalt(gestaltFindFolderAttr, myFeature);        IF myResult = noErr THEN             IsFindFolder := BTST(myFeature, gestaltFindFolderPresent);    END;{MyRandom: generate a reasonably random number between 0 and last}    FUNCTION MyRandom (last: Integer): Integer;    BEGIN        MyRandom := ABS(Random) MOD SUCC(last);    END;END.    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>Dialog CodeThis appendix defines several procedures used by the Venn Diagrammer application to manage dialog boxes.UNIT Dialog;                            {routines to handle dialog boxes}INTERFACE    USES        Global, Utilities, Preferences, VennProcs;    PROCEDURE DoSetupUserItems (myKind: Integer; VAR myDialog: DialogPtr);    PROCEDURE DoSetupCtrlValues (myDialog: DialogPtr);    PROCEDURE DoUserItem (myDialog: DialogPtr; myItem: Integer);    PROCEDURE DoModelessDialog (myKind: Integer; VAR myDialog: DialogPtr);    FUNCTION DoHandleDialogEvent (myEvent: EventRecord): Boolean;IMPLEMENTATION{DoSetupUserItems: set up application-defined ("user") items in a dialog box}    PROCEDURE DoSetupUserItems (myKind: Integer; VAR myDialog: DialogPtr);        VAR            myType:                Integer;            myHand:                Handle;            myRect:                Rect;            count:                Integer;            origPort:                GrafPtr;    BEGIN        GetPort(origPort);        SetPort(myDialog);        CASE myKind OF            rVennDPrefsDial:                 FOR count := 1 TO kVennPrefsItemCount DO                    IF count IN [iExist1Icon..iExist4Icon,                                         iEmpty1Icon..iEmpty4Icon] THEN                    BEGIN                        GetDialogItem(myDialog, count, myType, myHand, myRect);                        SetDialogItem(myDialog, count, myType, @DoUserItem,                                                                                         myRect);                    END;            OTHERWISE                ;        END;        SetPort(origPort);    END;{DoSetupCtrlValues: install initial values in a dialog}    PROCEDURE DoSetupCtrlValues (myDialog: DialogPtr);        VAR            count:                Integer;            myType:                Integer;            myHand:                Handle;            myRect:                Rect;            origPort:                GrafPtr;    BEGIN        IF myDialog = NIL THEN            exit(DoSetupCtrlValues);        GetPort(origPort);                                            {save the current graphics port}        SetPort(myDialog);                                            {always do this before drawing}        ShowWindow(myDialog);            IF myDialog = gPrefsDialog THEN            BEGIN                FOR count := 1 TO kVennPrefsItemCount DO                    BEGIN                        GetDialogItem(myDialog, count, myType, myHand,                                             myRect);                        IF myType = ctrlItem + radCtrl THEN                            CASE count OF                                iExist1Radio..iExist4Radio:                                     SetCtlValue(ControlHandle(myHand),                                        ORD(gExistIndex = count - (iExist1Radio - 1)));                                iEmpty1Radio..iEmpty4Radio:                                     SetCtlValue(ControlHandle(myHand),                                        ORD(gEmptyIndex = count - (iEmpty1Radio - 1)));                            OTHERWISE                                ;                            END;                        IF myType = ctrlItem + chkCtrl THEN                            CASE count OF                                iGetNextRandomly:                                     SetCtlValue(ControlHandle(myHand),                                                     ORD(gStepRandom = TRUE));                                iShowSchoolNames:                                     SetCtlValue(ControlHandle(myHand),                                                      ORD(gShowNames = TRUE));                                iUseExistImport:                                     SetCtlValue(ControlHandle(myHand),                                                     ORD(gGiveImport = TRUE));                                iAutoAdjust:                                     SetCtlValue(ControlHandle(myHand),                                                     ORD(gAutoAdjust = TRUE));                            OTHERWISE                                ;                            END;                    END;            END;        SetPort(origPort);                                            {restore the previous graphics port}    END;{DoUserItem: handle drawing of application-defined items in a dialog box}    PROCEDURE DoUserItem (myDialog: DialogPtr; myItem: Integer);        VAR            myType:                Integer;            myHand:                Handle;            myRect:                Rect;            origPort:                GrafPtr;    BEGIN        GetPort(origPort);        SetPort(myDialog);        GetDialogItem(myDialog, myItem, myType, myHand, myRect);        IF myDialog = gPrefsDialog THEN            CASE myItem OF                iExist1Icon..iExist4Icon:                     BEGIN                        DoPlotIcon(myRect,                                         GetIcon(kExistID + myItem - iExist1Icon),                                        myDialog, srcCopy);                    END;                iEmpty1Icon..iEmpty4Icon:                     BEGIN                        DoPlotIcon(myRect,                                         GetIcon(kEmptyID + myItem - iEmpty1Icon),                                        myDialog, srcCopy);                        FrameRect(myRect);                    END;                OTHERWISE                    ;            END; {CASE}        SetPort(origPort);                                        {restore original port}    END;{DoModelessDialog: put up a modeless dialog box}    PROCEDURE DoModelessDialog (myKind: Integer; VAR myDialog: DialogPtr);        VAR            myPointer:                Ptr;    BEGIN        IF myDialog = NIL THEN                                        {the dialog box doesn't exist yet}            BEGIN                myPointer := NewPtr(sizeof(DialogRecord));                IF myPointer = NIL THEN                    exit(DoModelessDialog);                myDialog := GetNewDialog(myKind, myPointer, WindowPtr(-1));                IF myDialog <> NIL THEN                    BEGIN                        DoSetupUserItems(myKind, myDialog);                                                    {set up user items}                        DoSetupCtrlValues(myDialog)                            ;                    {set up initial values}                    END;            END        ELSE            BEGIN                ShowWindow(myDialog);                SelectWindow(myDialog);                SetPort(myDialog);            END;    END;{DoHandleDialogEvent: handle events in modeless dialog boxes}    FUNCTION DoHandleDialogEvent (myEvent: EventRecord): Boolean;        VAR            eventHandled:                        Boolean;                    {did we handle the event?}            myDialog:                        DialogPtr;                myItem:                        Integer;    BEGIN        eventHandled := FALSE;        IF FrontWindow <> NIL THEN            IF IsDialogEvent(myEvent) THEN                IF DialogSelect(myEvent, myDialog, myItem) THEN                    BEGIN                        eventHandled := TRUE;                        SetPort(myDialog);                        IF myDialog = gPrefsDialog THEN                            BEGIN                                CASE myItem OF                                    iEmpty1Radio..iEmpty4Radio:                                         gEmptyIndex := myItem;                                    iEmpty1Icon..iEmpty4Icon:                                         gEmptyIndex := myItem - 4;                                    iExist1Radio..iExist4Radio:                                         gExistIndex := myItem - iEmpty4Icon;                                    iExist1Icon..iExist4Icon:                                         gExistIndex := myItem - (iEmpty4Icon + 4);                                    iGetNextRandomly:                                         gStepRandom := NOT gStepRandom;                                    iAutoAdjust:                                         gAutoAdjust := NOT gAutoAdjust;                                    iShowSchoolNames:                                         gShowNames := NOT gShowNames;                                    iUseExistImport:                                         gGiveImport := NOT gGiveImport;                                    iSaveVennPrefs:                                         DoSavePrefs;                                    OTHERWISE                                        ;                                END;                                DoSetupCtrlValues(myDialog);                                                {update values}                            END;                    END;        DoHandleDialogEvent := eventHandled;    END;END.    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>Resource CodeThis appendix defines the routines used by the Venn Diagrammer application to create, read, and write the resources it uses to store the user’s preferences. The application expects to find those resources in a file named “Venn Diagrammer Preferences” in the Preferences folder in the currently-active System folder. If no such file is found, the application creates a new file of the desired name in that location; then it copies into that file a default set of preferences settings that is contained in the application’s resource file.UNIT Preferences;INTERFACE    USES        Folders, Global, Utilities;    CONST        kPrefResType =                         'PRFN';            {type of preferences resource}        kPrefResID =                         259;            {resource ID of preferences resource}    TYPE        {structure of a resource that contains Venn diagram preferences}        MyPrefsRec = RECORD            autoDiag:                Boolean;                {do we automatically fix the diagram?}            showName:                Boolean;                {do we show names of valid arguments?}            isImport:                Boolean;                {do subjects have existential import?}            isRandom:                Boolean;                {do we select next setting randomly?}            emptyInd:                Integer;                {index of the desired emptiness pattern}            existInd:                Integer;                {index of the desired existence symbol}        END;        MyPrefsPtr = ^MyPrefsRec;        MyPrefsHnd = ^MyPrefsPtr;    FUNCTION DoCopyResource (rType: ResType; rID: Integer; source: Integer;                                         dest: Integer): OSErr;    PROCEDURE DoReadPrefs;    PROCEDURE DoSavePrefs;IMPLEMENTATION{DoCopyResource}{copy a resource from one open resource file [source] to another [dest];}{make sure not to alter the current resource file }{ and to preserve resource attributes}    FUNCTION DoCopyResource (rType: ResType; rID: Integer; source: Integer;                                         dest: Integer): OSErr;        VAR            myHandle:                Handle;                            {handle to resource to copy}            myName:                Str255;                            {name of resource to copy}            myAttr:                Integer;                            {resource attributes}            myType:                ResType;                            {ignored; used for GetResInfo}            myID:                Integer;                            {ignored; used for GetResInfo}            myResult:                OSErr;            myCurrent:                Integer;                                {current resource file on entry}    BEGIN        myCurrent := CurResFile;                                                    {remember current resource file}        UseResFile(source);                                                    {set the source resource file}        myHandle := Get1Resource(rType, rID);                                                    {open the source resource}        IF myHandle <> NIL THEN            BEGIN                GetResInfo(myHandle, myID, myType, myName);                                                            {get res name}                myAttr := GetResAttrs(myHandle);                                                            {get res attributes}                DetachResource(myHandle);                                            {so we can copy the resource}                UseResFile(dest);                                            {set destination resource file}                IF ResError = noErr THEN                    AddResource(myHandle, rType, rID, myName);                IF ResError = noErr THEN                    SetResAttrs(myHandle, myAttr);                                        {set res attributes of copy}                IF ResError = noErr THEN                    ChangedResource(myHandle)                        ;                {mark resource as changed}                IF ResError = noErr THEN                    WriteResource(myHandle);                                        {write resource data}            END;        DoCopyResource := ResError;                                                    {return result code}        ReleaseResource(myHandle);                                                    {get rid of resource data}        UseResFile(myCurrent);                                                    {restore original resource file}    END;{DoCreatePrefsFile:}{Create a preferences file in the specified location.}{The initial settings are just those in the app's resource file.}    FUNCTION DoCreatePrefsFile (myVRefNum: Integer; myDirID: LongInt;                                             myName: Str255): Integer;        VAR            myResNum:                Integer;            myResult:                OSErr;            myID:                Integer;                {resource ID of resource in app's res fork}            myHandle:                Handle;                {handle to resource in app's res fork}            myType:                ResType;                {ignored; used for GetResInfo}    BEGIN        myResult := noErr;        HCreateResFile(myVRefNum, myDirID, myName);        IF ResError = noErr THEN            BEGIN                myResNum := HOpenResFile(myVRefNum, myDirID, myName, fsCurPerm);                IF myResNum <> -1 THEN                    BEGIN                        UseResFile(gAppsResourceFile);                        myHandle := Get1Resource(kPrefResType, kPrefResID);                        IF ResError = noErr THEN                            BEGIN                                GetResInfo(myHandle, myID, myType, myName);                                myResult := DoCopyResource(kPrefResType, myID,                                                             gAppsResourceFile, myResNum);                            END                        ELSE                            BEGIN                                CloseResFile(myResNum);                                myResult := HDelete(myVRefNum, myDirID, myName);                                myResNum := -1;                            END;                    END;                DoCreatePrefsFile := myResNum;            END;    END; {DoCreatePrefsFile}{DoReadPrefs:}{Open the application's global preferences file and read indicated settings.}    PROCEDURE DoReadPrefs;        VAR            myVRefNum:                Integer;            myDirID:                LongInt;            myName:                Str255;                {name of this application}            myPrefs:                Handle;                {handle to actual preferences data}            myResNum:                Integer;                {reference number of opened resource file}            myResult:                OSErr;        CONST            kNameID = 4000;                                {resource ID of 'STR#' with filename}    BEGIN        {Determine the name of the preferences file.}        GetIndString(myName, kNameID, 1);        {Figure out where the preferences file is.}        IF IsFindFolder THEN            myResult := FindFolder(kOnSystemDisk, kPreferencesFolderType,                                             kDontCreateFolder, myVRefNum, myDirID)        ELSE            myResult := -1;        IF myResult <> noErr THEN            BEGIN                myVRefNum := 0;                                {use default volume}                myDirID := 0;                                {use default directory}            END;        {Open the preferences resource file.}        myResNum := HOpenResFile(myVRefNum, myDirID, myName, fsCurPerm);                {If no preferences file successfully opened, create one }        { by copying default preferences in app's resource file.}        IF myResNum = -1 THEN            myResNum := DoCreatePrefsFile(myVRefNum, myDirID, myName);                    IF myResNum <> -1 THEN                                        {if we successfully opened the file...}            BEGIN                UseResFile(myResNum);                                {make the new resource file current one}                myPrefs := Get1Resource(kPrefResType, kPrefResID);                IF myPrefs = NIL THEN                    exit(DoReadPrefs);                WITH MyPrefsHnd(myPrefs)^^ DO                    BEGIN                            {read the preferences settings}                        gAutoAdjust := autoDiag;                        gShowNames := showName;                        gGiveImport := isImport;                        gStepRandom := isRandom;                        gEmptyIndex := emptyInd;                        gExistIndex := existInd;                    END;                {Make sure some preferences globals make sense.}                IF NOT (gExistIndex IN [1..4]) THEN                    gExistIndex := 1;                IF NOT (gEmptyIndex IN [1..4]) THEN                    gEmptyIndex := 1;                {Reinstate the application's resource file.}                UseResFile(gAppsResourceFile);            END;        gPreferencesFile := myResNum;                                                    {remember its resource ID}    END; {DoReadPrefs}{DoSavePrefs:}{Save the current preference settings.}    PROCEDURE DoSavePrefs;        VAR            myPrefData:                Handle;                {handle to new resource data}            myHandle:                Handle;                {handle to resource to replace}            myName:                Str255;                {name of resource to copy}            myAttr:                Integer;                {resource attributes}            myType:                ResType;                {ignored; used for GetResInfo}            myID:                Integer;                {ignored; used for GetResInfo}    BEGIN        {Make sure we have an open preferences file.}        IF gPreferencesFile = -1 THEN                    exit(DoSavePrefs);        myPrefData := NewHandleClear(sizeof(MyPrefsRec));        HLock(myPrefData);        WITH MyPrefsHnd(myPrefData)^^ DO            BEGIN                autoDiag := gAutoAdjust;                showName := gShowNames;                isImport := gGiveImport;                isRandom := gStepRandom;                emptyInd := gEmptyIndex;                existInd := gExistIndex;            END;        UseResFile(gPreferencesFile);                                                                {use preferences file}        myHandle := Get1Resource(kPrefResType, kPrefResID);        IF myHandle <> NIL THEN            BEGIN                GetResInfo(myHandle, myID, myType, myName);                                                            {get res name}                myAttr := GetResAttrs(myHandle);                                                            {get res attributes}                RmveResource(myHandle);                IF ResError = noErr THEN                    AddResource(myPrefData, kPrefResType, kPrefResID, myName);                IF ResError = noErr THEN                    WriteResource(myPrefData);            END;        HUnlock(myPrefData);        ReleaseResource(myPrefData);        UseResFile(gAppsResourceFile);                                                        {restore app's resource file}    END; {DoSavePrefs}END. {UNIT Preferences}    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>    <$paranum[ChT.ChapterTitle,CO.ChapOpener,ApT.ApdxTitle]\>User Interface CodeThis appendix shows the source code that manages the basic setup and user interface for the Venn Diagrammer application.PROGRAM VennDiagrammer;    USES        Global, Utilities, Dialog, Preferences, VennProcs;    VAR        gDone:                Boolean;{DoInitManagers: initialize Toolbox Managers}    PROCEDURE DoInitManagers;    BEGIN        MaxApplZone;                                        {extend heap zone to limit}        MoreMasters;                                        {get 64 more master pointers}        InitGraf(@thePort);                                        {initialize QuickDraw}        InitFonts;                                        {initialize Font Manager}        InitWindows        ;                                {initialize Window Manager}        InitMenus;                                        {initialize Menu Manager}        TEInit;                                        {initialize TextEdit}        InitDialogs(NIL);                                        {initialize Dialog Manager}        FlushEvents(everyEvent, 0);                                        {clear event queue}        InitCursor;                                        {initialize cursor to arrow}    END;{DoSetupMenus: set up the menu bar}    PROCEDURE DoSetupMenus;        VAR            menuBar:                Handle;    BEGIN        menuBar := GetNewMBar(rMenuBar);        IF menuBar = NIL THEN            DoBadError(eCantFindMenus);        SetMenuBar(menuBar);        DisposeHandle(menuBar);        AppendResMenu(GetMenuHandle(mApple), 'DRVR');         DrawMenuBar;    END;{DoUpdate: update a window}    PROCEDURE DoUpdate (myWindow: WindowPtr);        VAR            myHandle:                MyDocRecHnd;            myRect:                Rect;                        {tool rectangle}            origPort:                GrafPtr;            origPen:                PenState;            count:                Integer;    BEGIN        GetPort(origPort);                                            {remember original drawing port}        SetPort(myWindow);        BeginUpdate(myWindow);                                            {clear update region}        EraseRect(myWindow^.portRect);        IF IsAppWindow(myWindow) THEN            BEGIN                {Draw two lines separating tools area from work area.}                GetPenState(origPen);                                    {remember original pen state}                PenNormal;                                    {reset pen to normal state}                WITH myWindow^ DO                    BEGIN                        MoveTo(portRect.left, portRect.top + kToolHt);                        Line(portRect.right, 0);                        MoveTo(portRect.left, portRect.top + kToolHt + 2);                        Line(portRect.right, 0);                    END;                {Redraw the tools area in the window.}                FOR count := 1 TO kNumTools DO                    BEGIN                        SetRect(myRect, kToolWd * (count - 1), 0, kToolWd * count,                                     kToolHt);                        DoPlotIcon(myRect, gToolsIcons[count], myWindow, srcCopy);                    END;                {Redraw the status area in the window.}                myHandle := MyDocRecHnd(GetWRefCon(myWindow));                DoStatusText(myWindow, myHandle^^.statusText);                {Draw the rest of the content region.}                DoVennDraw(myWindow);                                            SetPenState(origPen)                        ;                {restore previous pen state}            END; {IF IsAppWindow}        EndUpdate(myWindow);        SetPort(origPort);                                                {restore original drawing port}    END;{DoCreateWindow: create a new window}    FUNCTION DoCreateWindow: WindowPtr;        VAR            myPointer:                Ptr;            myWindow:                WindowPtr;            myHandle:                MyDocRecHnd;    BEGIN        myPointer := NewPtr(sizeof(WindowRecord));        IF myPointer = NIL THEN            exit(DoCreateWindow);        myWindow := GetNewWindow(rVennD, myPointer, WindowPtr(-1));        IF myWindow <> NIL THEN            BEGIN                SetPort(myWindow);                myHandle := MyDocRecHnd(NewHandleClear(sizeof(MyDocRec)));                IF myHandle <> NIL THEN                    BEGIN                        HLockHi(Handle(myHandle));                                                    {lock the data high in the heap}                        SetWRefCon(myWindow, LongInt(myHandle));                                                                {attach data handle to window record}                        DoSetWindowTitle(myWindow)                ;                                {set the window title}                        {Define initial window settings.}                        WITH myHandle^^ DO                            BEGIN                                figure := 1;                                mood[1] := 1;                                mood[2] := 1;                                mood[3] := 1;                                isAnswerShowing := FALSE;                                isExistImport := gGiveImport;                            END;                        DoGetRandomTerms(myWindow);                        DoCalcAnswer(myWindow);                        {Position the window and display it.}                        DoPositionWindow(myWindow);                        ShowWindow(myWindow);                    END {IF myHandle <> NIL}                ELSE                    BEGIN                                        {couldn't get a data record}                            CloseWindow(myWindow);                                            DisposePtr(Ptr(myWindow));                                                    myWindow := NIL;                                {so pass back NIL}                    END;            END;        DoCreateWindow := myWindow;    END;{DoCloseDocWindow: dispose a document window and all its data structures}    PROCEDURE DoCloseDocWindow (myWindow: WindowPtr);        VAR            myHandle:                MyDocRecHnd;    BEGIN        IF myWindow = NIL THEN            exit(DoCloseDocWindow)                                                {ignore NIL windows}        ELSE            BEGIN                myHandle := MyDocRecHnd(GetWRefCon(myWindow));                DisposeHandle(Handle(myHandle));                CloseWindow(myWindow)                ;                            {close the window}                DisposePtr(Ptr(myWindow));                                            {and release the storage}            END;    END;{DoCloseWindow: close a window}    PROCEDURE DoCloseWindow (myWindow: WindowPtr);    BEGIN        IF myWindow <> NIL THEN            IF IsDialogWindow(myWindow) THEN                                                    {this is a dialog window}                HideWindow(myWindow)            ELSE IF IsDAccWindow(myWindow) THEN                                                    {this is a DA window}                CloseDeskAcc(WindowPeek(myWindow)^.windowKind)            ELSE IF IsAppWindow(myWindow) THEN                                                    {this is a document window}                DoCloseDocWindow(myWindow);    END;{DoDrag: handle window dragging}    PROCEDURE DoDrag (myWindow: WindowPtr; mouseloc: Point);        VAR            dragBounds:                Rect;    BEGIN        dragBounds := GetGrayRgn^^.rgnBBox;        DragWindow(myWindow, mouseloc, dragBounds);    END;{DoGoAwayBox: process a click in close box}    PROCEDURE DoGoAwayBox (myWindow: WindowPtr; mouseloc: Point);    BEGIN        IF TrackGoAway(myWindow, mouseloc) THEN            DoCloseWindow(myWindow);    END;{DoQuit: quit the program}    PROCEDURE DoQuit;        VAR            myWindow:                WindowPtr;    BEGIN        myWindow := FrontWindow;                                                {close all windows}        WHILE myWindow <> NIL DO            BEGIN                DoUpdate(myWindow);                                        {force redrawing window}                DoCloseWindow(myWindow);                myWindow := FrontWindow;            END;        gDone := TRUE;                                                {set flag to exit main event loop}    END;{DoActivate: handle activate and deactivate events for the specified window}    PROCEDURE DoActivate (myWindow: WindowPtr; myModifiers: Integer);        VAR            myState:                Integer;                            {activation state}            myControl:                ControlHandle;    BEGIN        myState := BAnd(myModifiers, activeFlag);        IF IsDialogWindow(myWindow) THEN            BEGIN                myControl := WindowPeek(myWindow)^.controlList;                WHILE myControl <> NIL DO                    BEGIN                        HiliteControl(myControl, myState + 255 mod 256);                        myControl := myControl^^.nextControl;                    END;            END;    END;{DoDiskEvent: handle disk-inserted events}    PROCEDURE DoDiskEvent (myEvent: EventRecord);        VAR            myResult:                Integer;            myPoint:                Point;    BEGIN        IF HiWord(myEvent.message) <> noErr THEN            BEGIN                SetPt(myPoint, 100, 100);                myResult := DIBadMount(myPoint, myEvent.message);            END;    END;{MyModalFilter: a basic modal dialog filter function}    FUNCTION MyModalFilter (myDialog: DialogPtr; VAR myEvent: EventRecord;                                         VAR myItem: Integer): Boolean;        VAR            itemType:                Integer;            itemHand:                Handle;            itemRect:                Rect;            myKey:                Char;            myIgnore:                LongInt;    BEGIN        MyModalFilter := FALSE;                                            {assume we don't handle the event}        CASE myEvent.what OF            updateEvt:                 BEGIN                    IF WindowPtr(myEvent.message) <> myDialog THEN                        DoUpdate(WindowPtr(myEvent.message));                                                                {update the window behind}                END;            keyDown, autoKey:                 BEGIN                    myKey := char(And(myEvent.message, charCodeMask));                    {if Return or Enter pressed, do default button}                    IF (myKey = kReturn) OR (myKey = kEnter) THEN                        BEGIN                            GetDItem(myDialog, iOK, itemType, itemHand, itemRect);                            HiliteControl(ControlHandle(itemHand), 1);                                            {make button appear to have been pressed}                            Delay(kVisualDelay, myIgnore);                            HiliteControl(ControlHandle(itemHand), 0);                            MyModalFilter := TRUE;                                                    myItem := iOK;                        END;                    {if Escape or Cmd-. pressed, do Cancel button}                    IF (myKey = kEscape)                         OR ((myKey = kPeriod)                             AND (BAnd(myEvent.modifiers, CmdKey) <> 0)) THEN                        BEGIN                            GetDItem(myDialog, iCancel, itemType, itemHand, itemRect);                            HiliteControl(ControlHandle(itemHand), 1);                                                {make button appear to have been pressed}                            Delay(kVisualDelay, myIgnore);                            HiliteControl(ControlHandle(itemHand), 0);                            MyModalFilter := TRUE;                                                    myItem := iCancel;                        END;                END;            diskEvt:                 BEGIN                    DoDiskEvent(myEvent);                    MyModalFilter := TRUE;                                        {show we've handled the event}                END;            OTHERWISE                ;        END; {CASE}    END;{DoAboutBox: handle About... selections}    PROCEDURE DoAboutBox (myWindow: WindowPtr);        VAR            myWindow:                WindowPtr;            myDialog:                DialogPtr;            myItem:                Integer;    BEGIN        myWindow := FrontWindow;        IF myWindow <> NIL THEN            DoActivate(myWindow, 1 - activeFlag);                        myDialog := GetNewDialog(rAboutDial, NIL, WindowPtr(-1));            IF myDialog <> NIL THEN            BEGIN                SetPort(myDialog);                DoDefaultButton(myDialog);                REPEAT                    ModalDialog(@MyModalFilter, myItem);                UNTIL myItem = iOK;                DisposeDialog(myDialog);                SetPort(myWindow);            END;    END;{DoMenuAdjust: adjust menus by enabling and disabling items}    PROCEDURE DoMenuAdjust;        VAR            myWindow:                WindowPtr;            myMenu:                MenuHandle;            count:                Integer;    BEGIN        myWindow := FrontWindow;        IF myWindow = NIL THEN            DisableMenuItem(GetMenuHandle(mFile), iClose)        ELSE            EnableMenuItem(GetMenuHandle(mFile), iClose);        myMenu := GetMenuHandle(mVennD);        IF IsAppWindow(myWindow) THEN            FOR count := 1 TO kNumTools DO                EnableMenuItem(myMenu, count)        ELSE            FOR count := 1 TO kNumTools DO                DisableMenuItem(myMenu, count);        IF IsDAccWindow(myWindow) THEN            EnableMenuItem(GetMenuHandle(mEdit), 0)        ELSE            DisableMenuItem(GetMenuHandle(mEdit), 0);        DrawMenuBar;    END;{DoMenuCommand: interpret and act on menu selections}    PROCEDURE DoMenuCommand (menuAndItem: LongInt);        VAR            myMenuNum:                Integer;            myItemNum:                Integer;            myResult:                Integer;            myDAName:                Str255;            myWindow:                WindowPtr;    BEGIN        myMenuNum := HiWord(menuAndItem);        myItemNum := LoWord(menuAndItem);        GetPort(myWindow);        CASE myMenuNum OF            mApple:                 CASE myItemNum OF                    iAbout:                         BEGIN                            DoAboutBox;                        END;                    OTHERWISE                        BEGIN                            GetMenuItemText(GetMenuHandle(mApple), myItemNum,                                                     myDAName);                            myResult := OpenDeskAcc(myDAName);                        END;                END;            mFile:                 BEGIN                    CASE myItemNum OF                        iNew:                             myWindow := DoCreateWindow;                        iClose:                             DoCloseWindow(FrontWindow);                        iQuit:                             DoQuit;                        OTHERWISE                            ;                    END;                END;            mEdit:                 BEGIN                    IF NOT SystemEdit(myItemNum - 1) THEN                        ;                END;            mVennD:                 BEGIN                    myWindow := FrontWindow;                    CASE myItemNum OF                        iCheckVenn:                             DoVennCheck(myWindow);                        iDoVenn:                             DoVennAnswer(myWindow);                        iClearVenn:                             DoVennClear(myWindow);                        iNextTask:                             DoVennNext(myWindow);                        iCheckArg:                             DoVennAssess(myWindow);                        iGetVennPrefs:                             DoModelessDialog(rVennDPrefsDial, gPrefsDialog);                        OTHERWISE                            ;                    END;                END;            OTHERWISE                ;        END;        HiliteMenu(0);    END; {DoMenuCommand}{DoContentClick: handle a mouse click in the content area of a window}    PROCEDURE DoContentClick (myWindow: WindowPtr; myEvent: EventRecord);        VAR            myRect:                Rect;                                {temporary rectangle}            count:                Integer;    BEGIN        IF NOT IsAppWindow(myWindow) THEN            exit(DoContentClick);                                            {make sure it's a document window}        SetPort(myWindow);                                                {set port to our window}        GlobalToLocal(myEvent.where);    {See if the click is in the tools area.}        SetRect(myRect, 0, 0, kToolWd * kNumTools, kToolHt);        IF PtInRect(myEvent.where, myRect) THEN            BEGIN                                {if so, determine which tool was clicked}                FOR count := 1 TO kNumTools DO                    BEGIN                        SetRect(myRect, (count - 1) * kToolWd, 0,                                         count * kToolWd, kToolHt);                        IF PtInRect(myEvent.where, myRect) THEN                            Leave;                {we found the right tool, so stop looking}                    END;                IF DoTrackRect(myWindow, myRect) THEN                                                DoMenuCommand(BitShift(mVennD, 16) +                                 ((kNumTools + 1) - count));    {handle tools selections}                exit(DoContentClick);            END;    {See if the click is in the status area.}        SetRect(myRect, kToolWd * kNumTools, 0,                             myWindow^.portRect.right, kToolHt);        IF PtInRect(myEvent.where, myRect) THEN            BEGIN                exit(DoContentClick);                                        END;    {The click must be in somewhere in the rest of the window.}        DoVennClick(myWindow, myEvent.where);    END;{DoMouseDown: process mouseDown events}    PROCEDURE DoMouseDown (myEvent: EventRecord);        VAR            myPart:                Integer;            myWindow:                WindowPtr;    BEGIN        myPart := FindWindow(myEvent.where, myWindow);        CASE myPart OF            inMenuBar:                 BEGIN                    DoMenuAdjust;                    DoMenuCommand(MenuSelect(myEvent.where));                END;            InSysWindow:                 SystemClick(myEvent, myWindow);            inDrag:                 DoDrag(myWindow, myEvent.where);            inGoAway:                 DoGoAwayBox(myWindow, myEvent.where);            inContent:                 BEGIN                    IF myWindow <> FrontWindow THEN                        SelectWindow(myWindow)                    ELSE                        DoContentClick(myWindow, myEvent);                END;            OTHERWISE                ;        END;    END;{DoKeyDown: respond to keyDown events}    PROCEDURE DoKeyDown (myEvent: EventRecord);        VAR            myKey:                char;    BEGIN        myKey := chr(BAnd(myEvent.message, charCodeMask));        IF (BAnd(myEvent.modifiers, CmdKey) <> 0) THEN            BEGIN                DoMenuAdjust;                DoMenuCommand(MenuKey(myKey));            END;    END;{DoIdle: handle null events}{currently we use this for auto-processing in Venn diagram windows}    PROCEDURE DoIdle (myEvent: EventRecord);        VAR            myWindow:                WindowPtr;            myHandle:                MyDocRecHnd;    BEGIN        myWindow := FrontWindow;        IF IsAppWindow(myWindow) THEN            IF gAutoAdjust THEN                BEGIN                    myHandle := MyDocRecHnd(GetWRefCon(myWindow));                    IF myHandle^^.needsAdjusting THEN                        DoVennIdle(myWindow);                END;    END; {DoIdle}{DoOSEvent: handle OS events}    PROCEDURE DoOSEvent (myEvent: EventRecord);        VAR            myWindow:                WindowPtr;    BEGIN        CASE BSR(myEvent.message, 24) OF            mouseMovedMessage:                 BEGIN                    DoIdle(myEvent);                            {right now, do nothing}                END;            suspendResumeMessage:                 BEGIN                    myWindow := FrontWindow;                    IF (BAnd(myEvent.message, resumeFlag) <> 0) THEN                        DoActivate(myWindow, activeFlag)                                                    {activate window}                    ELSE                        DoActivate(myWindow, 1 - activeFlag);                                                    {deactivate window}                END;            OTHERWISE                ;        END;    END;{DoMainEventLoop: the main event loop}    PROCEDURE DoMainEventLoop;        VAR            myEvent:                EventRecord;            gotEvent:                Boolean;                                {is returned event for me?}    BEGIN        REPEAT            gotEvent := WaitNextEvent(everyEvent, myEvent, 15, NIL);            IF NOT DoHandleDialogEvent(myEvent) THEN                IF gotEvent THEN                    BEGIN                        CASE myEvent.what OF                            mouseDown:                                 DoMouseDown(myEvent);                            keyDown, autoKey:                                 DoKeyDown(myEvent);                            updateEvt:                                 DoUpdate(WindowPtr(myEvent.message));                            diskEvt:                                 DoDiskEvent(myEvent);                            activateEvt:                                 DoActivate(WindowPtr(myEvent.message),                                                 myEvent.modifiers);                            osEvt:                                DoOSEvent(myEvent);                            keyUp, mouseUp:                                 ;                            nullEvent:                                 DoIdle(myEvent);                            OTHERWISE                                ;                        END; {CASE}                    END                ELSE                    DoIdle(myEvent);        UNTIL gDone;                                        {loop until user quits}    END;BEGIN    DoInitManagers;                                            {initialize Toolbox managers}    DoSetupMenus;                                            {initialize menus}    gDone := FALSE;                                            {initialize global variables}    gNumDocWindows := 0;                                            {initialize count of open doc windows}    gPrefsDialog := NIL;                                            {initialize ptr to Preferences dialog}    gAppsResourceFile := CurResFile;                                            {get refnum of the app's resource file}    gPreferencesFile := -1;                                            {initialize res ID of preferences file}    DoReadPrefs;                                            {read the user's preference settings}    DoVennInit;    DoMainEventLoop;                                            {and then loop forever...}END.GlossaryA5 worldAn area of memory in an application’s partition that contains the QuickDraw global variables, the application global variables, the application parameters, and the jump table—all of which are accessed through the A5 register.action procedureA procedure that performs an action in response to the user holding the mouse button down while the cursor is in a control.activate eventAn event indicating that a window is becoming active or inactive. Each activate event specifies the window to be changed and the direction of the change (that is, whether it’s becoming active or becoming inactive).active applicationThe application currently interacting with the user. Its icon appears on the right side of the menu bar. See also current process, foreground process.active controlA control in which the Control Manager responds to a user’s mouse actions by providing visual feedback. active windowThe frontmost window on the desktop, the one in which the user is currently working. The active window is designated by racing stripes in the title bar, active controls, and highlighted selections.addressA number that specifies the location of a byte in memory.alertAn alert sound, an alert box, or both. Alerts warn the user of an unusual or potentially undesirable situation occurring within an application. See also alert box.alert boxA window that an application displays on the screen to warn the user or to report an error to the user. An alert box typically consists of text describing the situation and buttons that require the user to acknowledge or rectify the problem. An alert box may or may not be accompanied by an alert sound.alert resourceA resource (of type 'ALRT') that specifies alert sounds, a display rectangle, and an item list for an alert box.alert soundAn audible signal from the Macintosh speaker that warns the user of an unusual or potentially undesirable situation occurring within an application. An alert sound may or may not be accompanied by an alert box.Alias Manager The part of the Operating System that helps you to locate specified files, directories, or volumes at a later time. The Alias Manager creates and resolves alias records.alias recordA data structure created by the Alias Manager to identify a file, directory, or volume.allocateTo assign an area of memory for use.Apple eventA high-level event whose structure and interpretation are determined by the Apple Event Interprocess Messaging Protocol.Apple Event ManagerThe part of the Macintosh system software that allows applications to send and respond to Apple events.Apple Menu Items folderA directory located in the System Folder for storing desk accessories, applications, folders, and aliases that the user wants to display in and access from the Apple menu.application global variablesA set of variables stored in the application’s A5 world that are global to the application.application heapAn area of memory in the application heap zone in which memory is dynamically allocated and released on demand. The heap contains the application’s 'CODE' segment 1, data structures, resource map, and other code segments as needed.application parametersThirty-two bytes of memory in the application partition that are reserved for system use. The first long word is the address of the first QuickDraw global variable.application partitionA partition of memory reserved for use by an application. The application partition consists of free space, the application heap, the application’s stack, and the application’s A5 world.auto-key eventAn event indicating that a key is still down after a certain amount of time has elapsed.background-only applicationAn application that does not have a user interface.background processA process that isn’t currently interacting with the user. Compare foreground process.bitmapA set of bits that represents the positions and states of a corresponding set of items, such as pixels.blockSee memory block.buttonA control that appears on the screen as a rounded rectangle with a title centered inside. When the user clicks a button, the application performs the action described by the button’s title. Button actions are usually performed instantaneously. Examples include completing operations defined by a dialog box and acknowledging an error message in an alert box.checkboxA control that appears onscreen as a small square with an accompanying title. A checkbox displays one of two settings: on (indicated by an X inside the box) or off. When the user clicks a checkbox, the application reverses its setting. See also radio button.close boxThe small white box on the left side of the title bar of an active window. Clicking it closes the window.Command-key equivalentRefers specifically to a keyboard equivalent that the user invokes by holding down the Command key and pressing another key (other than a modifier key) at the same time.Communications ToolboxA part of the Macintosh system software that you can use to provide your application with basic networking and communications services.compactSee heap compaction.compatibilityThe ability of an application to execute properly in different operating environments.content regionThe part of a window in which the contents of a document, the size box, and the window controls (including the scroll bars) are displayed.contextThe information about a process maintained by the Process Manager. This information includes the current state of the process, the address and size of its partition, its type, its creator, a copy of its low-memory globals, information about its 'SIZE' resource, and a process serial number.context switchA major or minor switch.controlAn onscreen object that the user can manipulate with the mouse. By manipulating a control, the user can take an immediate action or change a setting to modify a future action.control definition functionA function that defines the appearance and behavior of a control. A control definition function, for example, draws the control. See also standard control definition functions.control definition IDA number passed to control-creation routines to indicate the type of control. It consists of the control definition function’s resource ID and a variation code.control listA series of entries pointing to the descriptions of the controls associated with the window.Control ManagerA collection of routines that applications use to create and manipulate controls, especially those in windows.control recordA data structure of type ControlRecord, which the Control Manager uses to store all the information it needs for its operations on a control.cooperative multitasking environmentA multitasking environment in which applications explicitly cooperate to share the available system resources. See also multitasking environment.current directory The directory whose contents are listed in the dialog box displayed by the Standard File Package. See also default directory.current menu listA data structure that contains handles to the menu records of all menus in the current menu bar and the menu records of any submenus or pop-up menus that an application inserts into the list.current processThe process that is currently executing and whose A5 world is valid; this process can be in the background or the foreground.cursorAny 256-bit image, defined by a 16-by-16-bit square. The mouse driver displays the current cursor and maps the movement of the mouse to relative locations on the screen as the user moves the mouse.dangling pointerA copy of a master pointer that no longer points to the correct memory address.data forkThe part of a file that contains data accessed using the File Manager. The data usually corresponds to data entered by the user; the application creating a file can store and interpret the data in the data fork in whatever manner is appropriate.default buttonIn an alert box or a dialog box, the button whose action is invoked when the user presses the Return key or the Enter key. The Dialog Manager automatically draws a bold outline around the default button in alert boxes; applications should draw a bold outline around the default button in dialog boxes. The default button should invoke the preferred action which, whenever possible, should be a “safe” action—that is, one that doesn’t cause loss of data.default directory The directory used in File Manager routines whenever you don’t explicitly specify some directory. See also current directory.default volume The volume that contains the default directory.desk accessoryA “mini-application” that is available from the Apple menu regardless of which application you’re using—for example, the Calculator, Note Pad, Alarm Clock, Puzzle, Scrapbook, Key Caps, and Chooser.desktopThe working environment displayed on the Macintosh computer: the gray background area on the screen.Device ManagerThe part of the Macintosh Operating System that supports device I/O.dialog boxA window that’s used for some special or limited purpose, such as to solicit information from the user before the application carries out the user’s command. See also modal dialog box, modeless dialog box, and movable modal dialog box.Dialog ManagerThe part of the Macintosh Toolbox that provides routines for creating and manipulating alerts and dialog boxes.dialog recordA data structure of type DialogRecord that the Dialog Manager uses to create dialog boxes and alerts.dialog resourceA resource (of type 'DLOG') that specifies the window type, display rectangle, and item list for a dialog box.directory A subdivision of a volume, available in the hierarchical file system. A directory can contain files and other directories (known as subdirectories).disabled itemIn an alert box or a dialog box, an item for which the Dialog Manager does not report user events. An example of a disabled item is static text, which typically does not respond to clicks.diskA physical medium capable of storing information.disk initializationThe process of making a disk usable by the Macintosh Operating System.Disk Initialization ManagerThe part of the Macintosh Operating System that manages the process of initializing disks.disk-inserted eventAn event indicating that a disk has been inserted into a disk drive.display rectangleA rectangle that defines the size and location of an item in an alert box or a dialog box. The display rectangle is specified in an item list and uses coordinates local to the alert box or a dialog box.disposed handleA handle whose associated relocatable block has been disposed of.dividerA gray line used in menus to separate groups of menu items.document (1) A file that a user can create and edit. A document is usually associated with a single application, which the user expects to be able to open by double-clicking the document’s icon in the Finder. (2) Any collection of information that is displayed in a document window.document record An application-defined data structure that contains information about the window, any controls in the window (such as scroll bars), and the file (if any) whose contents are displayed in the window.document windowA window in which the user enters text, draws graphics, or otherwise enters or manipulates data. double indirectionThe means by which the Memory Manager or an application accesses the data associated with a handle variable.drag regionThe area occupied by a window’s title bar, except for the close box and zoom box. The user can move a window on the desktop by dragging the drag region. editionThe data written to an edition container by a publisher. A publisher writes data to an edition whenever a user saves a document that contains a publisher, and subscribers in other documents may read the data from the edition whenever it is updated. Edition ManagerThe part of the Macintosh system software that allows applications to automate copy and paste operations between applications, so that data can be shared dynamically. empty handleA handle whose master pointer has the value NIL (possibly indicating that the underlying relocatable block has been purged).enabled item In an alert box or a dialog box, an item for which the Dialog Manager reports user events. For example, the Dialog Manager reports clicks in an enabled OK button. eventThe means by which the Event Manager communicates information about user actions, changes in the processing status of the application, and other occurrences that require a response from the application.event-driven programmingA way of structuring an application so that it is guided by events reporting a user’s actions and other occurrences in the computer. event filter functionAn application-defined routine that supplements the Dialog Manager’s ability to handle events—for example, an event filter function can test for disk-inserted events and can allow background applications to receive update events. event loopA section of code that repetitively retrieves events from the Event Manager and dispatches to the appropriate event-handler. Event ManagerThe collection of routines that an application can use to receive information about actions performed by the user, to receive notice of changes in the processing status of the application, and to communicate with other applications. event priorityThe order in which an event of a particular type is returned to an application. event recordA data structure of type EventRecord that your application uses when retrieving information about an event. The Event Manager returns, in an event record, information about what type of event occurred (a mouse click or keypress, for example) and additional information associated with the event. extensionSee system extension.Extensions folderA directory located in the System Folder for storing system extension files such as printer and network drivers and files of types 'INIT', 'scri', and 'appe'. fileA named, ordered sequence of bytes stored on a Macintosh volume, divided into a data fork and a resource fork. file fork One of the two parts of a file. See also data fork and resource fork.File Manager The part of the Macintosh Operating System that manages the organization, reading, and writing of data located on physical data storage devices such as disk drives.file system A method of organizing files and directories on a volume.FinderAn application that works with the system software to keep track of files and manage the user’s desktop display.Finder InterfaceA set of routines, data structures, and resources that you can use to coordinate your application with the Finder.folder A directory. See directory.Fonts folderA directory located in the System Folder for storing fonts.foreground processThe process currently interacting with the user; it appears to the user as the active application. The foreground process displays its menu bar, and its windows are in front of the windows of other applications. Compare background process.fork See file fork.fragmentationSee heap fragmentation.frameThe part of a window drawn automatically by the Window Manager, namely, the title bar, including the close box and zoom box, and the window’s outline.free blockA memory block containing space available for allocation.global coordinate systemThe coordinate system that represents all potential QuickDraw drawing space. The origin of the global coordinate system—that is, the point (0,0)—is at the upper-left corner of the main screen. Compare local coordinate system.global variablesSee application global variables, system global variables, and QuickDraw global variables.glue routineA routine, usually written in assembly-language, that allows a high-level language to call a low-level routine. Also, any short special-purpose assembly-language routine.graphics portA complete, individual drawing environment with an independent coordinate system. Each window is drawn in a graphics port. handleA variable containing the address of a master pointer, used to access a relocatable block. See also pointer.heapAn area of memory in which space is dynamically allocated and released on demand, using the Memory Manager. See also application heap.heap compactionThe process of moving allocated blocks within a heap to collect the free space into a single block.heap fragmentationThe state of a heap when the available free space is scattered throughout the heap in numerous unused blocks.help balloonA rounded-rectangle window that contains explanatory information for the user. With tips pointing at the objects they annotate, help balloons look like bubbles used for dialog in comic strips. Help balloons are turned on by the user from the Help menu; when Balloon Help assistance is on, a help balloon appears whenever the user moves the cursor over an area that is associated with it.hierarchical menuA menu to which a submenu is attached.high-level eventAn event sent from one application to another requesting transfer of information or performance of some action.high-level event queueA separate queue that the Event Manager maintains to store high-level events transmitted to an application. The Event Manager maintains a high-level event queue for each open application capable of receiving high-level events.iconAn image that represents an object, a concept, or a message.inactive controlA control that has no meaning or effect in the current context—for example, the scroll bars in an empty window. The Control Manager dims inactive controls or otherwise visually indicates their inactive state.inactive windowA window in which the user is not working.interapplication communications (IAC) architectureA standard and extensible mechanism for communicating among Macintosh applications. item listA resource (of type 'DITL') that specifies the items—such as buttons and static text—to display in an alert box or a dialog box. item numberAn integer that identifies an item in either a menu or dialog box. Menu items are assigned item numbers starting with 1 for the first menu item in the menu, 2 for the second menu item in the menu, and so on, up to the number of the last menu item in the menu. Dialog items are assigned numbers that correspond to the item’s position in its item list. For example, the first item listed in a dialog item list is item number 1. jump tableAn area of memory in an application’s A5 world that contains one entry for every externally referenced routine in every code segment of the application. The jump table is the means by which the loading and unloading of segments is implemented.keyboard equivalentA keyboard combination of one or more modifier keys and another key that invokes a corresponding menu command when pressed by the user. See also Command-key equivalent.key-down eventAn event indicating that the user pressed a key on the keyboard.key-up eventAn event indicating that the user released a key on the keyboard.local coordinate systemThe coordinate system defined by the port rectangle of a graphics port. When the window manager creates a window, it places the origin of the local coordinate system at the upper-left corner of the window’s port rectangle. Compare global coordinate system.localizationThe process of adapting an application to a specific language, culture, and region.lock To temporarily prevent a relocatable block from being moved during heap compaction.low-level eventsThe type of event returned by the Event Manager to report very low level hardware and software occurrences. Low-level events report actions by the user, changes in windows on the screen, and that the Event Manager has no other events to report. Compare high-level events, operating-system events. low-memory system global variablesSee system global variables.Macintosh Operating SystemThe part of Macintosh system software that manages basic low-level operations such as file reading and writing, memory allocation and deallocation, process execution, and interrupt handling.Macintosh script management systemThe Script Manager, script-aware parts of other text managers, the WorldScript extensions, and one or more script systems.Macintosh system software A collection of routines that you can use to simplify your development of Macintosh applications. See also Macintosh Toolbox and Macintosh Operating System.Macintosh ToolboxThe part of the Macintosh system software that allows you to implement the standard Macintosh user interface in your application.Macintosh User Interface Toolbox See Macintosh Toolbox.major switchA change of the foreground process. The Process Manager switches the context of the foreground process with the context of a background process (including the A5 worlds and low-memory globals) and brings the background process to the front, sending the previous foreground process to the background. See also context, minor switch.managerA part of the Macintosh system software.master pointerA pointer to a relocatable block, maintained by the Memory Manager and updated whenever the block is moved, purged, or reallocated. All handles to a relocatable block refer to it by double indirection through the master pointer.master pointer blockA nonrelocatable block of memory that contains master pointers. A master pointer block in your application heap contains 64 master pointers, and a master pointer block in the system heap contains 32 master pointers.memory blockAn area of contiguous memory within a heap.Memory ManagerThe part of the Operating System that dynamically allocates and releases memory space in the heap.menuA user interface element you can use in your application to allow the user to view or choose an item from a list of choices and commands that your application provides. See also hierarchical menu, pull-down menu, pop-up menu, and submenu.menu barA white rectangle that is tall enough to display menu titles in the height of the system font and system font size, and with a black lower border that is one pixel tall. The menu bar extends across the top of the startup screen and contains the title of each available pull-down menu.menu bar definition functionA function that draws the menu bar and performs most of the drawing activities related to the display of menus when the user moves the cursor between menus. This function, in conjunction with the menu definition procedure, defines the general appearance and behavior of menus.menu bar resourceA resource (of type 'MBAR') that specifies the order and resource ID of each menu in a menu bar.menu definition procedureA procedure that performs all the drawing of menu items within a specific menu. This procedure, in conjunction with the menu bar definition function, defines the general appearance and behavior of menus.menu IDA number that you assign to a menu in your application. Each menu in your application must have a unique menu ID.menu itemIn a menu, a rectangle with text and other characteristics identifying a command that the user can choose.menu listA data structure that contains handles to the menu records of one or more menus (although a menu list can be empty). Compare current menu list.Menu ManagerThe collection of routines that an application can use to create, display, and manage its menus.menu recordA data structure of type MenuInfo that the Menu Manager uses to maintain information about a menu.menu resourceA resource (of type 'MENU') that specifies the menu title and the individual characteristics of items in a menu.menu titleThe word or icon in the menu bar or in a window that shows the location of a menu.minimum partition sizeThe actual partition size limit below which an application cannot run.minor switchA change in the context of a process. The Process Manager switches the context of a process to give time to a background process without bringing the background process to the front. See also context, major switch.modal dialog boxA dialog box that puts the user in the state or “mode” of being able to work only inside the dialog box. A modal dialog box resembles an alert box. The user cannot move a modal dialog box and can dismiss it only by clicking its buttons. See also modeless dialog box and movable modal dialog box.modal dialog filter functionAn application-defined function that filters events passed from the Event Manager to your application when one of its modal dialog boxes is being displayed.modeless dialog boxA dialog box that looks like a document window without a size box or scroll bars. The user can move a modeless dialog box, make it inactive and active again, and close it like any document window. See also modal dialog box and movable modal dialog box.modifier keysThe Shift, Option, Command, Control, and Caps Lock keys.mouse-down eventAn event indicating that the user pressed the mouse button.mouse locationThe location of the cursor at the time an event occurred.mouse-moved eventAn event indicating that the cursor is outside of a specified region.mouse-up eventAn event indicating that the user released the mouse button.movable modal dialog boxA modal dialog box that has a title bar (with no close box) by which the user can drag the dialog box. See also dialog box, modal dialog box, and modeless dialog box. multitasking environmentAn environment in which several independent applications or other processes can be open at once. See also cooperative multitasking environment.nonrelocatable blockA block whose location in the heap is fixed. This block can’t be moved during heap compaction or other memory operations.null eventAn event indicating that no events of the requested types exist in the application’s event stream.open applicationAn application that is loaded into memory.Operating SystemSee Macintosh Operating System.operating-system eventAn event returned by the Event Manager to communicate information about changes in the operating status of applications (suspend and resume events) and to report that the user has moved the mouse outside of an area specified by the application (mouse-moved events). Compare low-level events, high-level events.Operating System Event ManagerThe collection of low-level routines that manage the Operating System event queue.Operating System event queueA queue that the Operating System Event Manager creates and maintains. The Operating System Event Manager detects and reports low-level hardware-related events such as mouse clicks, keypresses, and disk insertions and places these events in the Operating System event queue.packageA collection of system software routines that’s stored as a resource and brought into memory only when needed. See also manager.part codeAn integer between 1 and 253 that stands for a particular part of a control. The FindControl and TrackControl functions return a part code to indicate the location of the cursor when the user presses the mouse button.partitionA contiguous block of memory reserved for use by the Operating System or by an application. See also application partition and system partition.patchTo replace a piece of ROM code with other RAM-based code (by storing a new entry into the trap dispatch table). Also, a resource that contains the new code.pixelThe smallest dot you can draw on the screen.pointThe intersection of a horizontal grid line and a vertical grid line in the coordinate plane. Defined by the Point data type.pointerA variable containing the address of a byte in memory. See also handle.pop-up menuA menu that appears elsewhere than the menu bar. The Control Manager provides a control definition function for applications to use when implementing pop-up menus.PPC ToolboxSee Program-to-Program Communications (PPC) Toolbox.preferences fileA file, usually located in the Preferences folder, that records a user’s configuration settings for an application.Preferences folderA directory located in the System Folder for holding files that record users’ configuration settings for applications on a particular Macintosh computer.preferred partition sizeThe partition size at which an application can run most effectively. The Operating System attempts to secure this partition size upon launch of the application.processAn open application, or, in some cases, an open desk accessory. (Only desk accessories that are not opened in the context of another application are considered processes.)Process ManagerThe part of the Macintosh Operating System that provides a cooperative multitasking environment by controlling access to shared resources and managing the scheduling, execution, and termination of applications.process serial numberA number assigned by the Process Manager to identify a particular instance of an application during a single boot of the local machine.Program-to-Program Communications (PPC) ToolboxThe part of the Macintosh system software that allows applications to exchange blocks of data with each other by reading and writing low-level message blocks.pull-down menuA menu that is identified by a menu title (a word or an icon) in the menu bar. purgeTo remove a relocatable block from the heap, leaving its master pointer allocated but set to NIL.purgeable blockA relocatable block that can be purged from the heap.QuickDrawThe part of the Macintosh Toolbox that performs all graphics operations on the Macintosh screen. QuickDraw global variablesA set of variables stored in the application’s A5 world that contain information used by QuickDraw.QuickTimeA collection of managers and other system software components that allow your application to control time-based data.radio buttonA control that appears on screen as a small circle. A radio button displays one of two settings: on (indicated by a black dot inside the circle) or off. A radio button is always a part of a group of related radio buttons in which only one button can be on at a time. When the user clicks an unmarked radio button, the application turns that button on and turns the other buttons in its group off.RAMSee random-access memory.RAM diskA portion of the available RAM reserved for use as a temporary storage device. A user can configure a RAM disk or disable it altogether using controls in the Memory control panel.random-access memory (RAM)Memory whose contents can be changed. The RAM in a Macintosh computer contains exception vectors, buffers used by hardware devices, the system and application heaps, the stack, and other information used by applications.read-only memory (ROM)Memory whose contents are permanent. The ROM in a Macintosh computer contains routines for the Toolbox and the Operating System, and the various system traps.reallocateTo allocate new space in the heap for a purged block and to update the block’s master pointer to point to its new location.rectangleThe area picked by intersecting the grid lines of any two points in the coordinate plane.release(1) To free an allocated area of memory, making it available for reuse. (2) To allow a previously held range of pages to be movable in physical memory.relocatable blockA block that can be moved within the heap during compaction.resourceAny data stored according to a defined structure in a resource fork of a file; the data in a resource is interpreted according to its resource type.resource fileThe resource fork of a file.resource forkThe part of a file that contains the files’ resources. A resource fork consists of a resource map and resources.resource IDA number that identifies a specific resource of a given resource type.resource mapIn a resource file, data that is read into memory when the file is opened and that, given a resource specification, leads to the corresponding resource data.resource nameA string that, together with the resource type, identifies a resource in a resource file. A resource may or may not have a name.resource specificationA resource type and either a resource ID or a resource name.resource typeA sequence of four characters that uniquely identifies a specific type of resource.resume eventAn event indicating that an application has been switched back into the foreground and can resume interacting with the user. See also suspend event.return receiptA high-level event that indicates whether the other application accepted the high-level event sent to it by your application.ROMSee read-only memory.scriptA writing system for a human language.Script ManagerThe part of the Macintosh system software that manages script systems.script systemA collection of software facilities that provides for the representation of a specific writing system. It consists of keyboard resources, a set of international resources, one or more fonts, and possibly a script system extension.segment One of several logical divisions of the code of an application. Not all segments need to be in memory at the same time.Segment Manager The part of the Macintosh Operating System that loads and unloads your application’s code segments into and out of memory.signatureA resource whose type is defined by a four-character sequence that uniquely identifies an application to the Finder. A signature is located in an application’s resource fork.size boxA box in the lower-right corner of windows that can be resized. Dragging the size box resizes the window.size regionThe area occupied by a window’s size box. See size box.size resourceA resource (of type 'SIZE') that specifies the operating characteristics, minimum partition size, and preferred partition size of an application.stackAn area of memory in the application partition that is used to store temporary variables.stack frameThe area of the stack used by a routine for its parameters, return address, local variables, and temporary storage.Standard File PackageThe part of system software that allows you to present the standard user interface when a file is to be saved or opened.stationery padA document that a user creates to serve as a template for other documents. The Finder tags a document as a stationery pad by setting the isStationery bit in the Finder flags field of the file’s file information record. An application that is asked to open a stationery pad should copy the template’s contents into a new document and open the document in an untitled window.submenuA menu that is attached to another menu.suspend eventAn event indicating that the execution of your application is about to be suspended as the result of either a major or minor switch. The application is suspended at the application’s next call to WaitNextEvent or EventAvail. See also resume event.switchSee major switch and minor switch.system extensionA file of type 'INIT' that contains executable code. System extensions are loaded into memory at system startup time.System fileA file, located in the System Folder, that contains the basic system software plus some system resources, such as sound and keyboard resources.The System file behaves like a folder in this regard: although it looks like a suitcase icon, double-clicking it opens a window that reveals movable resource files (such as sounds, keyboard layouts, and script system resource collections) stored in the System file.System FolderA directory containing the software that Macintosh computers use to start up. The System Folder includes a set of folders for storing related files, such as preferences files that an application might need when starting up.system global variablesA collection of global variables stored in the system partition.system heapAn area of memory in the system partition reserved for use by the Operating System.system partitionA partition of memory reserved for use by the Operating System.system resourceA resource in the system resource file.terminateTo end the execution of a process. A process can terminate by crashing, by quitting, or by being killed by some other process.Text Services ManagerThe part of the system software that manages the interactions between applications that request text services and text service components that provide them.Time ManagerThe part of the Macintosh Operating System that lets you schedule the execution of a routine after a certain time has elapsed.title barThe bar at the top of a window that displays the window name, contains the close and zoom boxes, and indicates whether the window is active. Toolbox Event ManagerSee Event Manager. transfer modeA specification of which Boolean operation QuickDraw should perform when drawing or when transferring a bit image from one bitmap to another.unlockTo allow a relocatable block to be moved during heap compaction.unpurgeable blockA relocatable block that can’t be purged from the heap.update eventAn event indicating that the contents of a window need updating.update regionA region maintained by the Window Manager that includes the parts of a window’s content region that need updating. The Event Manager generates update events as necessary, based on the contents of the update region, telling your application to update a window.user itemsItems in a dialog box that are managed largely by an application, not by the Dialog Manager. These items are designated by the constant userItem.user stateThe size and location that the user has established for a window.Vertical Retrace ManagerThe part of the Operating System that schedules and executes tasks during a vertical retrace interrupt.visible regionThe part of a window’s graphics port that’s actually visible on the screen—that is, the part that’s not covered by other windows.volume A portion of a storage device that is formatted to contain files.windowAn area on the screen that displays information, including user documents as well as communications such as alert boxes and dialog boxes. The user can open or close a window; move it around on the desktop; and sometimes change its size, scroll through it, and edit its contents. window definition functionA function that defines the general appearance and behavior of a window. The Window Manager calls the window definition function to draw the window’s frame, determine what region of the window the cursor is in, draw the window’s size box, draw the window’s zoom box, move and resize the window, and calculate the window’s structure and content regions.window definition ID An integer that specifies the resource ID of a window definition function in the upper 12 bits and an optional variation code in the lower 4 bits. When creating a new window, your application supplies a window definition ID either as a field in the 'WIND' resource or as a parameter to the NewWindow or NewCWindow function.window listA list maintained by the Window Manager of all windows on the desktop. The frontmost window is first in the window list, and the remaining windows appear in the order in which they are layered on the desktop.Window ManagerThe part of the Macintosh Toolbox that provides routines for creating and manipulating windows.Window Manager portA graphics port that represents the desktop area on the main monitor—that is, a rounded-corner rectangle that occupies all of the main monitor except for the area occupied by the title bar.window recordA data structure of type WindowRecord (or CWindowRecord) in which the Window Manager stores a window’s characteristics, including the window’s graphics port, title, visibility status, and control list.window typeA collection of characteristics—such as the shape of the window’s frame and the features of its title bar—that describe a window.zoom boxA box in the right side of a window’s title bar that the user can click to alternate between two different window sizes (the user state and the standard state).<$paratext><$pagenum><$paratext><$pagenum><$paratext><$pagenum><$paratext><$pagenum><$paratext><$pagenum><$paratext><$pagenum>Chapter <$paranum>    <$paratext><$pagenum>Chapter <$paranum>    <$paratext><$pagenum>Appendix <$paranum>    <$paratext><$pagenum>Preface    <$paratext><$pagenum><$paratext><$pagenum><$paratext><$pagenum>Part <$paranum>    <$paratext><$paratext><$pagenum><$paratext><$pagenum><$paranum>    <$paratext><$pagenum><$paranum>    <$paratext><$pagenum><$paranum>    <$paratext><$pagenum><$paranum>    <$paratext><$pagenum><$paranum>    <$paratext><$pagenum>Chapter <$paranum>    <$paratext><$pagenum>Chapter <$paranum>    <$paratext><$pagenum>Appendix <$paranum>    <$paratext><$pagenum>Preface    <$paratext><$pagenum>IndexSymbols@ operator46AA5 register38A5 worldand context switching167defined37size of170activate eventshandling125–127active application166AddResource procedure66alert boxes134Alias Manager12APDAxv, 189AppendResMenu procedure156Apple Event Interprocess Messaging Protocol16Apple Event Manager15, 16–17Apple events16–17Core suite17functional-area suites17Required suite17sent by the Finder17Apple menu159application global variables37application heap34–36, 169defined34application parameters38application partitions29, 32–38applicationsinitializing74–75quitting175–176ApplLimit global variable31, 33ApplZone global variable31Bbackground process166Balloon Help10BeginUpdate procedure125bit images91–92, 99–101BitMap data type91bitmaps91blocks, memorydefined35purging and reallocating43–44buttonsdrawing an outline around146Byte data type44coercing to Char data type47CCancel buttonin modal dialog boxes146Char data typecoercing to Byte data type47check boxeshandling user clicks on142–144circles89, 94Clipboard170close box111handling clicks in121handling mouse-down events in128–129Close command (File menu)161, 162CloseRgn procedure96CloseWindow procedure129Command key160Communications Resource Manager19Communications Toolbox18–19compaction. See heap compactioncompatibilityand the Toolbox7guidelines187–188trap availability178–181Connection Manager19content regionhandling mouse-down events in121–123context of a processswitching167Control Manager10controlsdrawing an outline around146. See also check boxes, radio buttonssetting values of142–144cooperative multitasking environment165–167coordinate plane86CopyBits procedure99, 101CurrentA5 global variable31, 38current process166CurResFile function52cursors, initializing9Ddangling pointers42data, exchanging with other applications15data types, general purpose39–40, 44–46dBoxProc window type167default button146Delay procedure80desk accessories114, 121closing128desktop166DetachResource procedure66Device Manager11, 12dialog boxes133–148closing128defined133event handling in78introduced109items in. See item listsDialog Manager10, 110, 133–148dialog resources57, 135DialogSelect function142DIBadMount function77DiffRgn procedure97DisableMenuItem procedure162Disk Initialization Manager12disk-inserted eventshandling76–77in modal dialog boxes147DisposeHandle procedure129, 156DisposePtr procedure129–130DisposeWindow procedure130'DITL' resource type135dividers152, 157'DLOG' resource type135document records115–118document windows110, 114closing128–129double indirection40drag region121DragWindow procedure121drawing85–106DrawMenuBar procedure156, 162DrawString procedure5, 104EEdition Manager14, 15–16Edit menu159, 160EnableMenuItem procedure162EndUpdate procedure125Enter keyin modal dialog boxes146EraseRect procedure104errorsand Resource Manager routines66handling176–178Escape keyin modal dialog boxes146EventAvail function167event-driven programming71event loop75, 77Event Manager10, 15, 71–81event priority75event record76EventRecord data type76events71activate125–127high-level15, 72key-down148key-up79low-level72mouse-up79–81null72operating-system72priority75receiving75–79types of72, 76ExitToShell procedure178extensions. See system extensionsFfigures, syllogistic23File Manager11, 12File menuxii, 160Close command128, 161, 162New command116Quit command175filesspecifying in a document record116File Transfer Manager19FillRect procedure89FillRgn procedure98Finder6, 10sending Apple events17Finder Interface6, 10FindFolder function63checking for availability178–179FindWindow function119Font Manager9, 13, 102foreground process166FrameOval procedure96FrameRect procedure89free blocks38FrontWindow function128, 162FSpCreate function21GGestalt function20, 179Gestalt Manager179Get1Resource function54GetDialogItem procedure47, 136, 140, 148GetIndString procedure52GetMenuHandle function162GetMenuItemText procedure159GetNewDialog function60, 137, 137–138, 145GetNewMBar function154–156GetNewWindow function60, 130GetPattern function60GetPort procedure94GetResource function54, 60GetWRefCon function115GlobalToLocal procedure122glue routines20, 181GrafPort data type92GrafPtr data type93, 113graphics ports92–94and window records113setting and restoring93–94HHandle data type40, 44handles40heap compaction36heap fragmentation35heap purging43–44heap. See application heap; system heaphelp balloons185Help Manager10, 185HideWindow procedure110high-level events72HiliteControl procedure127, 148HiliteMenu procedure159HLock procedure42, 47HOpenResFile function54, 63HUnlock procedure42I'ICON' resource type99icons91, 99Image Compression Manager17InitCursor procedure9, 75InitFonts procedure9InitGraf procedure9, 181InitWindows procedure9InsertMenu procedure154Inside Macintoshxii–xivcode conventions24–25format conventionsxiii–xivintegerscoercing to long integers47coercing to pointers47interapplication communication14–17InvalRect procedure123InvalRgn procedure123IsDialogEvent function142item lists135item numbers135items in alerts and dialog boxes136–137Jjump table38Kkeyboard equivalents152, 157handling160–161reserved160key-down events148key-up events79Llines89List Manager11localization52localization guidelines188locking relocatable blocks42–43long integerscoercing to integers47coercing to pointers47low-level events72MMacintosh Operating System11–12Macintosh script management system13Macintosh system software3Macintosh Toolbox7–11major switches167managers6. See also system softwaremaster pointer blocks40master pointers40MaxApplZone procedureand ApplLimit global variable33'MBAR' resource type154'MDEF' resource type52MemError function177memoryallocating35, 38, 40, 42locking42–43organization of29–38purging43–44Memory Manager11and application heap35–36data types39–40menu barcreating74specifying154menu commandskeyboard equivalents119, 152, 157menu item numbers156menu items151disabling162enabling162MenuKey function160, 161Menu Manager10, 151–162introduced6menu numbers156'MENU' resource type152–154menus151–162adjusting161–162creating74, 152–156defined151disabling162dividers in152, 157enabling162handling selections156–159required152MenuSelect function156, 161menu titles151minimum partition size168minor switches167modal dialog boxes133–134, 144–148creating145–146modal dialog filter functions146–148ModalDialog procedure144, 146, 167modeless dialog boxes134–135, 137–144creating137–138handling events in141–144moods, syllogistic23MoreMasters procedure41mouse-down eventsin menu bar156in the menu bar120in windows119–123mouse-up events79–81movable modal dialog boxes144MoveTo procedure5MoveWindow procedure121movies17Movie Toolbox17MPW57MultiFinder165multitasking environment165–167NNewHandleClear function21, 118NewHandle function20, 42, 43NewPtr function40, 118NewRgn function96NewWindow function4–5, 42, 112nonrelocatable blocksadvantages of42data type for40defined38null events72, 167handling173–174OOpenDeskAcc function159OpenRgn procedure96operating environmentchecking features of20, 178–181operating-system events72OSErr data type176ovals89Ppackages8, 20PaintRect procedure89part codes119partitions29. See also application partitions; system partitionsizes of168patches20patterns91PBHCreate function21pixels88Point data type87pointers39coercing to integers47coercing to long integers47to procedures and functions46points86–87PPC Toolbox15preferences filescreating64–66managing60–67names of61reading61–64, 74updating66–67Preferences folder53preferred partition size168processesbackground166context of167current166foreground166switching between167processing optionsspecifying168–170Process Manager11ProcPtr data type46Program-to-Program Communications Toolbox15PtInRect function81Ptr data type39, 44pull-down menus151, 152. See also menuspurging relocatable blocks43–44QQuickDraw9, 10, 85–106capabilities9, 85drawing text101–105initializing9QuickDraw global variables38QuickTime17–18Rradio buttonshandling user clicks on142–144RAM19random-access memory. See RAMread-only memory. See ROMReallocateHandle procedure43reallocating relocatable blocks43–44rectangles87–89, 89Rect data type88Region data type90regions89–91defining95–98drawing in98empty96relocatable blocksdata type for39defined38disadvantages of42locking42–43properties of42–43purging43–44reallocating43–44unlocking42–43ResEdit resource editor57–58, 152–154ResError function66, 176–177resource filescreating64–66current64defined51determining reference number of52managing60–67reading61–64updating66–67Resource Manager10, 51–68checking for errors66resource maps56resource paths52–54resources51–68compiled58defined51standard types55structure of56–58specifying using ResEdit57–58specifying using Rez57types55–56typical locations of53using custom60–67using standard59–60using to facilitate localization52using to store static data51resource specifications55resource types'DITL'60, 135'DLOG'60, 135'ICON'99'MBAR'154'MDEF'52'MENU'152–154'SIZE'165'STR#'52, 102'WIND'60resource types. See resources, typesResType data type55resume events126handling170–173Return keyin modal dialog boxes146, 148Rez resource description language57, 152ROM19SScrap Manager10script management system. See Macintosh script management systemScript Manager13script systems13SCSI Manager12SectRgn procedure97SelectWindow procedure126, 138SetCtlValue procedure144SetDialogItem procedure139–140SetMenuBar procedure156SetPort procedure5, 94, 113, 138, 146SetRect procedure4, 89, 104SetResFile procedure54SetWRefCon procedure115, 118ShowWindow procedure118Shutdown Manager12SignedByte data type39, 44size resources168'SIZE' resource typesample Rez input169setting flags of168specifying partition size165Sound Input Manager11Sound Manager11stack33stack frame34stack sniffer33Standard File Package10StillDown function80'STR#' resource type52, 102Str15 data type45Str255 data type45Str27 data type45Str31 data type45Str63 data type45StringHandle data type45StringPtr data type45stringsdrawing5in C46in Pascal45suspend events126handling170–173switchingcontext167major167minor167SystemClick procedure121SystemEdit function159system extensions20System file20system global variables31, 188system heap31system partition29–31. See also system heap; system global variablessystem resources52system software6–19TTerminal Manager19textcentering in a window5, 113drawing5, 101–105setting font of104setting size of104TextEdit10, 102TextFont procedure104text service components14Text Services Manager14TextSize procedure104Text Utilities13TickCount function188Ticks global variable31, 188Time Manager12title bar111TrackGoAway function79, 128tracking the mouse79–81tracks17transfer modes101trap dispatch table181trap numbers181type casting47type coercion47Uunlocking relocatable blocks42–43update eventsand activate events126handling123–125in modal dialog boxes147user-centered design71, 79UseResFile procedure64user items137setting up139–140VVenn Diagrammer21–24Vertical Retrace Manager12Virtual Memory Manager12W, X, Y, ZWaitNextEvent function75, 78, 123, 167, 173, 181and multitasking170Window Manager6, 9, 10, 109–130WindowPeek data type113window pointer5WindowPtr data type113window record5WindowRecord data type112window records112reference constant in115, 116windows109–130activating125–127active125and dialog boxes109and graphics ports113closing128–130, 176creating4creating a new window115–119deactivating145desk accessory114dialog boxes114document114dragging121drawing content region124–125events in119–127introduced109mouse-down events in119–123origin in6parts of110–112positioning118setting title118types109, 113–115updating118, 123–125WorldScript13<$symbols><$numerics><$alphabetics>Level3IXLevel2IXLevel1IXSymbols[\ ];Numerals[0];A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z<$pagenum>“‘’”--—–  '"./This Apple manual was written, edited, and composed on a desktop publishing system using Apple Macintosh computers and FrameMaker software. Proof pages were created on an Apple LaserWriter IINTX printer. Final page negatives were output directly from text files on an AGFA ProSet 9800 imagesetter. Line art was created using Adobe<Superscript\>™  Illustrator. PostScript<Superscript\>™ , the page-description language for the LaserWriter, was developed by Adobe Systems Incorporated.Text type is Palatino<Superscript\>®  and display type is Helvetica<Superscript\>® . Bullets are ITC Zapf Dingbats®. Some elements, such as program listings, are set in Apple Courier.The Inside Macintosh: Overview Team:WRITERTim MonroeDEVELOPMENTAL EDITORAntonio PadialILLUSTRATORPeggy KunzPRODUCTION EDITORSTeresa Lujan, Josephine ManuelePROJECT LEADERPatricia EastmanCOVER DESIGNERBarbara SmythThe Entire Inside Macintosh Team(1992 Snapshot):PROJECT LEADERPatricia EastmanLEAD WRITERSDave Bice, Paul Black, Rob Dearborn, Sharon Everson, Tim MonroeWRITERSDave Bice, Paul Black, Patria Brown, Julie Callahan, Sean Cotter, Rob Dearborn, Dee Eduardo, Doug Engfer, Sharon Everson, Ed Fernandez, Tony Francis, Gary Hillerson, Marq Laube, Sue Luttner, Judy Melanson, Tim Monroe, Diane Patterson, Rich Pettijohn, Laine RapinTECHNICAL CONSULTANTRay ChiangLEAD EDITORLaurel RezeauDEVELOPMENTAL EDITORSSue Factor, Sanborn Hodgkins, Antonio Padial, Anne Szabla, George TruettEDITORIAL CONSULTANTLorraine AochiILLUSTRATORSRuth Anderson, Deborah Dennis, Sandee Karr, Peggy Kunz, Bruce Lee, Barbara SmythLEAD PRODUCTION EDITORJosephine ManuelePRODUCTION EDITORSGerri Gray, Teresa Lujan, Rex WolfCOVER DESIGNERBarbara SmythPUBLISHING LIAISONMartha Steffen*@ˇ ˇˇˇˇ@
  2. ˇ·ˇ‚7^
  3. 4í∫◊, Palatino
  4. .°dONLNdˇˇ(ô∫    Addison-WÑ@°dONLNdˇˇ)4esley Publishing Company    °dONLNdˇˇ(´∫Reading, MassachusettsgD°dONLNdˇˇ)hMenlo Park, CaliforniaÕ˝°dONLNdˇˇ)cNew !°dONLNdˇˇ)YA`°dONLNdˇˇ)ork°dONLNdˇˇ(∑∫Don Mills, Ontario/°dONLNdˇˇ)TW6Ø°dONLNdˇˇ)okingham, Englandr≤°dONLNdˇˇ)WAmster∫B°dONLNdˇˇ)damô±°dONLNdˇˇ)Bonn°dONLNdˇˇ(√∫Sydney(°dONLNdˇˇ)'SingaporœC°dONLNdˇˇ)#e°dONLNdˇˇ)Tƒfl°dONLNdˇˇ)okyoÜ)°dONLNdˇˇ)Madridï\°dONLNdˇˇ)'San Juan°dONLNdˇˇ(œ∫ParisW#°dONLNdˇˇ)Seoul>°dONLNdˇˇ)Milan¢    °dONLNdˇˇ)  Mexico Cityû°dONLNdˇˇ)9THˆ°dONLNdˇˇ)aipei(0∫4Ÿ∫˘
  5. {∂èÕ4zµ{∂ê{∂èÕ08x|˛˛ˇˇ?ˇ¯?ÔÔ«‡á‡É¿¿Äê{∂èÕ08||«‡É¿¿ÄÄ
  6. ˇ·ˇ‚7^3 ðdONLNdí∫´‘*tINSIDE MACINT∫ °dONLNdí‘´(§‘OSH
  7. ˙H 4˚H  H
  8. ˇ·ˇ‚7^ˇˇ≥>ˇ◊°dONLNdH/»(&HOverviewˇ#Ù@ˇ ˇˇˇˇ@
  9. ˇ·ˇ‚7^
  10. 4⁄ú˙¯4^*¿∫, Palatino
  11. .°dONLNdZ*f1+*c°dONLNd\6er) Apple Computer68°dONLNd\reÇ)<, Inc.°dONLNdg*p1(n*© y°dONLNdˇˇ)1992x°dONLNdˇˇ), ,@°dONLNd#gFpÇ)Apple Computer‚x°dONLNd1gÅpë);, Inc.°dONLNd8p*yP(w* All rights r˜°dONLNdDpPyo)&    eserved. °dONLNdN{*Ñ•(Ç*#No part of this publication may be °dONLNdqÑ*ç,*    rÉÕ°dONLNdrÑ-ç8)epr*°dONLNduÑ9çd) oduced, stor‡–°dONLNdÅÑdçÄ)+    ed in a rïÅ°dONLNdäÑÅçù)    etrieval °dONLNdìç*ñ≤(î*'system, or transmitted, in any form or °dONLNd∫ñ*üû*     by any means, mechanical, electr6°dONLNd⁄ñûü∞)tonic, °dONLNd‡ü*®b(¶*photocopying, rÁr°dONLNdÔüb®p)8ecor™°dONLNdÛüq®µ)ding, or otherwise, °dONLNd®*±™(Ø*$without prior written permission of °dONLNd+±*∫f*    Apple Computer68°dONLNd9±f∫™)<, Inc. Printed in the °dONLNdO∫*√c(¡*United States of a⁄°dONLNd`∫d√Ñ):America.°dONLNdi≈*Œf(Ã*No licenses, exprì∏°dONLNdz≈fŒ¢)<ess or implied, arGf°dONLNdå≈£Œ®)=e °dONLNdéŒ*◊\(’*granted with rXðdONLNdúŒ]◊¢)3espect to any of the °dONLNd±◊*‡§(fi*#technology described in this book. °dONLNd‘‡*ÈD*    Apple rÄL°dONLNd€‡EÈó)etains all intellectual pr¯ô°dONLNdı‡óÈØ)Roperty °dONLNd¸È*ÚÆ(*&rights associated with the technology °dONLNd"Ú*˚®*    %described in this book. This book is °dONLNdG˚*í*    intended to assist application °dONLNdf*π*    (developers to develop applications only °dONLNdé*6*    for cº°dONLNdí6ú) Apple Macintosh computers.°dONLNd≠*#f(!*Apple Computer68°dONLNdªf#v)<, Inc.°dONLNd¬#*,^(**20525 Mariani 9<°dONLNd–#^,c)4Aµÿ°dONLNd—#c,x)venue°dONLNd◊,*5^(3*Cupertino, CA/∫°dONLNd‰,^5s)4 95014°dONLNdÎ5*>V(<* 408-996-1010°dONLNd¯B*KP* Apple, the Gç°dONLNdBQK|)' Apple logo, yR°dONLNdB|Kó)+APDA, °dONLNdK*Tn(R*AppleLink, LaserWv£°dONLNd&KoT})EriterÚ∞°dONLNd+K}T£)
  12. , MacApp, °dONLNd5T*]f([*Macintosh, MPWC£°dONLNdCTg]Æ)=, and MultiFinder ar¡"°dONLNdWTÆ]≥)Ge °dONLNdY]*f](d*trademarks of √D°dONLNdg]]fô)3Apple Computery|°dONLNdu]ôf≠)<, Inc., °dONLNd}f*o,(m*rÉÕ°dONLNd~f-oD)egisterÙ—°dONLNdÖfDo§)ed in the United States and °dONLNd°o*xa(v*other countries.°dONLNd≤z*És* Balloon Help, Finderº›°dONLNdΔzsÉü)I , QuickDrawrÅ°dONLNd—z†ɧ)-, °dONLNd”É*åC(ä*QuickTc◊°dONLNdŸÉDåî)ime, ResEdit, and SourŒJ°dONLNdÔÉîå≤)PceBug arY›°dONLNd˜É≥å∏)e °dONLNd˘å*ï](ì*trademarks of √D°dONLNdå]ïô)3Apple Computery|°dONLNdåôï©)<, Inc.°dONLNdó*†•(û*#Adobe Illustrator and PostScript ar<°dONLNd?󶆴)|e °dONLNdA†*©](ß*trademarks of √D°dONLNdO†]©ï)3Adobe Systems °dONLNd]©*≤í(∞*Incorporated, which may be r1m°dONLNdy©ì≤™)iegister¢q°dONLNdÄ©™≤¥)ed °dONLNdÉ≤*ªz(π*in certain jurisdictions.°dONLNdùΩ*Δ:* AGF≠r°dONLNd†Ω:Δ?)Aué°dONLNd°Ω@Δ) is a trademark of  å°dONLNd¥ΩÄΔ±)@Agfa-Gevaert.°dONLNd¬»*—j(œ*FrameMaker is a r∑u°dONLNd”»j—Å)@egister(y°dONLNd⁄»Ç—≥)ed trademark °dONLNdÁ—*⁄P(ÿ*
  13. of Frame T/ó°dONLNdÒ—P⁄§)&echnology Corporation.°dONLNd‹*ÂÇ(„*Helvetica and Palatino ar c°dONLNd!‹ÉÂã)Ye r¢S°dONLNd$‹å£)    egisterW°dONLNd+‹§ÂÆ)ed °dONLNd.Â*Ó¢(Ï*trademarks of Linotype CompanyÒ°dONLNdL¢Ó£)x.°dONLNdN*˘~(˜*ITC Zapf Dingbats is a rS©°dONLNdf˘ñ)Uegisterƒ≠°dONLNdmñ˘†)ed °dONLNdp˘*é(*trademark of International T∏*°dONLNdå˘é™)dypeface °dONLNdî* V(    * Corporation.°dONLNd°*π*'Simultaneously published in the United °dONLNd»*!m*    States and Canada.4^…¿Y°dONLNd€]…eÒ(c…    LIMITED W/°dONLNd‰]Òe=)(ARRANTY ON MEDIAt©°dONLNdÙ]=eQ)L AND °dONLNd˘f…nˇ(l… REPLACEMENT°dONLNds…{÷*ALL[0°dONLNds◊{)
  14.  IMPLIED WH\°dONLNds{M))ARRANTIES ON THIS °dONLNd$|…Ñ<(Ç…MANUAL, INCLUDING IMPLIED °dONLNd>Ö…ç–*    W›°dONLNd?Öœç2)ARRANTIES OF MERCHANTAG°dONLNdTÖ2çP)cABILITY °dONLNd\é…ñ(î…AND FITNESS FOR AŒt°dONLNdméñ)H PNÀ°dONLNdoéñ!)ARhΰdONLNdqé!ñC)
  15. TICULAR °dONLNdyó…ü?(ù…PURPOSE, ARE LIMITED IN DURAðdONLNdïó?üS)vTION °dONLNdö†…® (¶…TO NINETY (90) DAS^°dONLNd´† ®I)BYS FROM THE DA°í°dONLNdπ†H®R)=TE °dONLNdº©…±
  16. (Ø…OF THE ORIGINALˆ°dONLNdÀ© ±)B RETÖ°dONLNdœ©±&)AILew°dONLNd“©&±Q)
  17.  PURCHASE °dONLNd‹≤…∫ (∏…OF THIS PRODUCTß¿°dONLNdÎ≤ ∫ )B.°dONLNdÌø…«B(≈…$Even though Apple has reviewed this °dONLNd»…–-*    manual, APPLE MAKES NO WBΔ°dONLNd)»-–R)dARRANTY °dONLNd1—…Ÿˇ(◊… OR REPRESENTiÒ°dONLNd=—ˇŸ)6A5√°dONLNd>—ŸW)TION, EITHER EXPRESS °dONLNdS⁄…‚O(‡…!OR IMPLIED, WITH RESPECT TO THIS °dONLNdt„…Î*    MANUAL, ITS QUALITYM°dONLNdá„ÎH)S
  18. , ACCURACYsa°dONLNdë„HÎK),, °dONLNdìÏ…ÙÙ(Ú…MERCHANTˆÈ°dONLNdõÏÛÙ)*ABILITYñ"°dONLNd¢ÏÙU), OR FITNESS FOR A,›°dONLNd¥ÏVÙW)F °dONLNdµı…˝Õ(˚…P@◊°dONLNd∂ıÕ˝◊)ARZ˜°dONLNd∏ı◊˝/)
  19. TICULAR PURPOSE. AS Ad}°dONLNdÕı/˝H)X RESULÏ2°dONLNd”ıG˝K)TÒú°dONLNd‘ıK˝N), °dONLNd÷˛…˝(… THIS MANUAL±°dONLNd·˛˛N)5 IS SOLD “AS IS,” AND °dONLNd˜…X(…!YOU, THE PURCHASER, ARE ASSUMING °dONLNd…Q*    "THE ENTIRE RISK AS TO ITS QUALITY °dONLNd:…!*     AND ACCURACY¸d°dONLNdF!);.°dONLNdH&….(,…IN NO EVENT WILLáN°dONLNdX&.M)D APPLE BE LIABLE °dONLNdi/…7ı(5…
  20. FOR DIRECTÔë°dONLNds/Ù7)+
  21. , INDIRECTÁz°dONLNd}/7@)' , SPECIAL, °dONLNdà8…@Ì(>…INCIDENTøP°dONLNdê8Ì@F)$AL, OR CONSEQUENTIAL!°°dONLNd§8G@H)Z °dONLNd•A…I(G…DAMAGES RESULq°dONLNd≤AIF)?TING FROM ANY °dONLNd¿J…RD(P…DEFECT OR INACCURACY IN THIS °dONLNd›S…[X*    +MANUAL, even if advised of the possibility °dONLNd    \…dˇ*    of such damages.°dONLNd    i…q‡*THE W^v°dONLNd    i‡qO)ARRANTY AND REMEDIES SET °dONLNd    7r…z◊(x…FORflÜ°dONLNd    :r◊zV)TH ABOVE ARE EXCLUSIVE AND IN °dONLNd    X{…ÉÙ(Å… LIEU OF ALLC1°dONLNd    c{ıÉ,), OTHERS, ORAL‹ù°dONLNd    p{,É:)7 OR °dONLNd    tÑ…åJ(ä… WRITTEN, EXPRESS OR IMPLIED. No °dONLNd    îç…ïÚ*     Apple dealery
  22. °dONLNd    †çÚï:)), agent, or employee is °dONLNd    ∏ñ…û*(ú…authorized to make any modifi_c°dONLNd    ’ñ+ûA)bcation, °dONLNd    ›ü…ßC(•…'extension, or addition to this warranty»ó°dONLNd
  23. üBßC)y.°dONLNd
  24. ¨…¥N(≤…*Some states do not allow the exclusion or °dONLNd
  25. 0µ…ΩU*    .limitation of implied warranties or liability °dONLNd
  26. ^æ…ΔU*    ,for incidental or consequential damages, so °dONLNd
  27. ä«…œO*    *the above limitation or exclusion may not °dONLNd
  28. ¥–…ÿC*    &apply to you. This warranty gives you °dONLNd
  29. ⁄Ÿ…·›*    specifi§°dONLNd
  30. ·Ÿfi·T)&c legal rights, and you may also have °dONLNd ‚…ÍO(Ë…,other rights which vary from state to state.4^h™¯4∫h¿¯
  31. ∫h«¯4∫h«¯ ªhª¯
  32. ˇ·ˇ‚7^,     Helvetica°dONLNdˇˇ(ÃhISBN 0-201-63247-0°dONLNdˇˇ*    1 2 3 4 5 6 7 8 9-MU-9695949392°dONLNdˇˇ*    First Printing, December 1992°dONLNdˇˇ*&The paper used in this book meets the °dONLNdˇˇ*    EPîÄ°dONLNdˇˇ)
  33. Az°dONLNdˇˇ) standards for recycled fi†°dONLNdˇˇ)WberøÅ°dONLNdˇˇ) .ˇb@ˇ ˇˇˇˇ@
  34. ˇ·ˇ‚7^
  35. 4⁄∫˙, Palatino
  36. .Ñ`(‡ iii4^H¿ˇˇ¬òˇ◊°dONLNd\∫u(n∫Contents
  37. °dONLNd    ô∫•“*4FigurR¿°dONLNdô“•Ê)es, Tè °dONLNdô•6)ables, and Listings|@°dONLNd(ôK•V)fvii
  38. √H 4ƒH  ≈H≈
  39. ˇ·ˇ‚7^,     Helvetica °dONLNd,∑H¬m(øHPreface°dONLNd4¥∫√‚)rAbout ∑@°dONLNd:¥‚√ )(    This Book
  40. Û@°dONLNdE∂4¬<)Rxi°dONLNdH ∫÷ÿ(”∫About ‡°dONLNdN Ÿ÷)Inside MacintoshÔ‡°dONLNd` 2÷<)Yxii°dONLNdd◊∫„Â(‡∫The New ´@°dONLNdl◊„*)+Inside Macintoshç@°dONLNd~◊?„L)Zxiii°dONLNdɉ∫E(Ì∫Conventions Used in This BookÄ°dONLNd¢‰Zg)†xiii°dONLNdßÒƒ˝˛(˙ƒSpecial Fonts°‡°dONLNd∂Ò˝)Nxiv°dONLNd∫˛ƒ
  41.  (ƒT∫¿°dONLNdª˛…
  42. )ypes of Notes)`°dONLNd ˛
  43. ')Qxiv°dONLNdŒ ∫¡(∫D=@°dONLNdœ ¬)evelopment EnvirH‡°dONLNdfl 2)OonmentA °dONLNdÁ GT)6xiv°dONLNdÎ∫$fi(!∫For Morß°dONLNdÚfi$)$e Information" °dONLNd/$9)Qxv
  44. TH[4UH[ VHV
  45. ˇ·ˇ‚7^ °dONLNdHHSx(PH    Chapter 1°dONLNdE∫T)r Introduction
  46. °Ä°dONLNdGS)]1°dONLNd[∫g˝(d∫Getting Started‘‡°dONLNd/[g)W3°dONLNd1h∫tC(q∫The Macintosh System Softwart†°dONLNdMhCtG)âe>@°dONLNdPh\ta)6°dONLNdRuƒÅ(~ƒThe Macintosh T◊°dONLNdauÅ*)Ioolbox– °dONLNdiu?ÅD)27°dONLNdkǃéW(ãƒThe Macintosh Operating System2†°dONLNdãÇléq)®1¶°dONLNdåÇpéu)1°dONLNdéèƒõ;(òƒAdditional System SoftwarÄ°dONLNdßè<õg)x
  47. e Services_†°dONLNd≥è{õÖ)?12°dONLNd∂úŒ®‘(•ŒTµ¿°dONLNd∑ú”®) ext Handling⁄ °dONLNd≈ú!®+)N12°dONLNd»©Œµ_(≤ŒInterapplication Communicationº†°dONLNdË©sµ})•14°dONLNdÎ∂Œ¬Ó(øŒQuickTfi‡°dONLNdÒ∂Ó¬˛) imed‡°dONLNdˆ∂¬)%17°dONLNd˘√Œœ’(ÃŒCó°dONLNd˙√’œ")ommunications TJ°dONLNd    √"œ?)MoolboxC °dONLNd√Tœ^)218°dONLNd–ƒ‹    (ŸƒSystem SoftwarS`°dONLNd"–    ‹7)E
  48. e Routines `°dONLNd.–K‹U)B19°dONLNd1›∫È(Ê∫ The Sample •@°dONLNd<›È$)6 Application#`°dONLNdI›9ÈC)I21°dONLNdLÍ∫ˆ>(Û∫Conventions for Sample CodeCÄ°dONLNdiÍSˆ])ô24
  49. &H-4'H- (H(
  50. ˇ·ˇ‚7^ °dONLNdlH%x("H    Chapter 2°dONLNdv∫&Ï)rMemory
  51. 
  52. †°dONLNd~% )G27°dONLNdÅ-∫9˛(6∫ About Memory°dONLNdè-9)Y29°dONLNdí:ƒF(CƒThe System HeapD¿°dONLNd£:&F0)b31°dONLNd¶GƒS (PƒThe System Global Vc¿°dONLNdπG SB)\ariablesµ`°dONLNd√GVS`)631°dONLNdΔT∫`(]∫Application PartitionsS¿°dONLNdfiT0`:)v32°dONLNd·aƒm◊(jƒThe ]`°dONLNdÂa◊m%)Application Stack›°dONLNd¯a9mC)b33°dONLNd˚nƒz◊(wƒThe ]`°dONLNdˇn◊z&)Application Heapx†°dONLNdn:zD)c34°dONLNd{ƒá◊(уThe ]`°dONLNd{◊á5)Application Global Vó†°dONLNd,{4ál)]ariables and x°dONLNd9{láÖ)8A5 W‘@°dONLNd={Ñáñ)orld@Ä°dONLNdC{´áµ)'37°dONLNdFà∫îˇ(ë∫Memory Blocks¿ °dONLNdUàî)Y38°dONLNdX€(ûƒNonr⁄¿°dONLNd\&)elocatable Blocks$Ä°dONLNdoï;°E)`39°dONLNdr¢ƒÆ(´ƒRelocatable Blocksw¿°dONLNdÜ¢*Æ4)f40°dONLNdâ؃ªÄ(∏ƒ(Locking and Unlocking Relocatable Blocks˝ °dONLNd≥Øîªû)–42ˇl@ˇ ˇˇˇˇ@
  53. ˇ·ˇ‚7^
  54. 4⁄*ˇ¯, Palatino
  55. .(·*iv4^*¿¯°dONLNd\¶h∂(e¶PurU¿°dONLNd\∂hj)(ging and Reallocating Relocatable BlocksL°dONLNd-\hâ)…43°dONLNd0iúuπ(rúData T:`°dONLNd6iπuÕ)ypes“@°dONLNd<i·uÎ)(44°dONLNd?v¶Ç(¶Pointers and Handles °dONLNdUvÇ$)t44°dONLNdXɶèƒ(å¶Stringsz†°dONLNdaÉŸè„)345°dONLNddê¶úØ(ô¶PrN†°dONLNdfê∞úŒ)
  56. ocedur‡°dONLNdlêŒú˘)
  57. e Pointers§°dONLNdxêú)@46°dONLNd{ù¶©¨(¶¶T∫¿°dONLNd|ù´©”)ype Coer∞¿°dONLNdÑù”©Â)(cionP@°dONLNdäù˙©)'47
  58. Ÿ*‡¯4⁄*‡¯ €*€¯
  59. ˇ·ˇ‚7^,     Helvetica °dONLNdçÕ*ÿZ(’*    Chapter 3°dONLNdó úŸfi)r    Resources
  60. eÄ°dONLNd¢ÃÛÿ˝)W49°dONLNd•‡úÏŸ(Èú About Resour °dONLNd±‡⁄ÏÁ)>ces{°dONLNd∂‡˚Ï)!51°dONLNdπ̶˘≈(ˆ¶Resourv@°dONLNdøÌ≈˘È)ce PathsäÄ°dONLNd…Ì˝˘)852°dONLNdÃ˙¶≈(¶Resourv@°dONLNd“˙≈÷)ce Tj‡°dONLNd÷˙÷Í)ypes¿°dONLNd‹˙ˇ    ))55°dONLNdfl¶¨(¶R.°dONLNd‡≠≈)esourv@°dONLNdÂ≈›)ce StrꇰdONLNdΛÙ)uctur¿°dONLNdı˘)e‡`°dONLNdÛ)56°dONLNdˆú €(úUsing StandarÅ`°dONLNd€ )?d Resour`°dONLNd  )(cesä@°dONLNd$ .)!59°dONLNd!ú-˝(*úUsing Custom Resour™`°dONLNd&!˝-
  61. )aces!@°dONLNd+!-))"60
  62. ]*d¯4^*d¯ _*_¯
  63. ˇ·ˇ‚7^ °dONLNd.Q*\Z(Y*    Chapter 4°dONLNd8Nú]Δ)rEvents
  64. K°dONLNd@P€\Â)?69°dONLNdCdúpÿ(mú About EventsÍ@°dONLNdQdÏpˆ)P71°dONLNdTqú}‹(zúInitializing an O†°dONLNddq‹})@ ApplicationÕ¿°dONLNdqq$}.)H74°dONLNdt~úäÁ(áúReceiving Eventse`°dONLNdÜ~¸ä)`75°dONLNdâãúól(îú+Handling Events Outside the Main Event Loop∞‡°dONLNd∂ãÄóä)‰79
  65. «*Œ¯4»*Œ¯ …*…¯
  66. ˇ·ˇ‚7^ °dONLNdπª*ΔZ(√*    Chapter 5°dONLNd√∏ú«œ)rDrawing
  67. ”‡°dONLNdÃ∫„ΔÌ)G83°dONLNdœŒú⁄Ó(◊úAbout QuickDrawflÄ°dONLNd‡Œ⁄ )f85°dONLNd„€¶Á¡(‰¶Points8@°dONLNd΀÷Á‡)086°dONLNdÓ˶Ù’(Ò¶
  68. Rectangles˘¿°dONLNd˙ËÈÙÛ)C87°dONLNd˝ı¶…(˛¶RegionsÛ°dONLNdı›Á)789°dONLNd    ¶‘( ¶
  69. Bit Images¿°dONLNdÈÛ)C91°dONLNd¶‹(¶ Ports and W—†°dONLNd#‹¸)6indows∞†°dONLNd+)592°dONLNd.ú(‰(%úDrawing Shapesi†°dONLNd>˘()]94°dONLNdA)ú5Ù(2úDrawing Bit ImagesfiÄ°dONLNdU)5)l99°dONLNdX6úBÀ(?ú    Drawing TÖÄ°dONLNda6ÀBÿ)/ext∫ °dONLNdf6ÏB˚)!101
  70. r*y¯4s*y¯ t*t¯
  71. ˇ·ˇ‚7^ °dONLNdjf*qZ(n*    Chapter 6°dONLNdtcúr©)rW∂¿°dONLNduc©r‘)indows
  72. F†°dONLNd}eÈq¯)@107°dONLNdÅyúÖƒ(ÇúAbout WÅ@°dONLNdàyƒÖ‰)(indows`@°dONLNdêy˘Ö)5109°dONLNdîܶí∞(è¶WÛ`°dONLNdïÜØí‰)     indow Partsë°dONLNd¢ܢí˛)J1`°dONLNd£ܲí)10°dONLNd¶ì¶ü∞(ú¶WÛ`°dONLNdßìØüÁ)     indow Recor7¿°dONLNd≤ìËüÚ)9dsêÄ°dONLNd∂ìü )1‡°dONLNd∑ì ü)12°dONLNd∫†¶¨∞(©¶WÛ`°dONLNdª†Ø¨√)    indo>`°dONLNdø†ƒ¨‘)w TP °dONLNd¬†‘¨Ë)ypesË°dONLNd»†¸¨)(1[`°dONLNd…†¨ )13°dONLNdÃ≠úπß(∂úCr\°dONLNdŒ≠ßπŒ) eating W§@°dONLNd÷≠ŒπÓ)'indowsÉ@°dONLNdfi≠π)51ˆ†°dONLNdfl≠π)15ˇ‹@ˇ ˇˇˇˇ@
  73. ˇ·ˇ‚7^
  74. 4⁄∫˙, Palatino
  75. .‡(‡v4^H¿°dONLNd\∫h(e∫
  76. Handling W„ °dONLNd
  77. \h,)6 indow Events·Ä°dONLNd\AhF)Q1T‡°dONLNd\FhP)19°dONLNdiƒu(rƒ Mouse Events‘‡°dONLNd*iu)R1H@°dONLNd+iu%)19°dONLNd.vƒÇ(ƒUpdate EventsÕÄ°dONLNd=vÇ()U123°dONLNdAɃè    (åƒActivate Events‡°dONLNdRÉè,)Y125°dONLNdVê∫úË(ô∫    Closing Wn °dONLNd_êËú).indowsM °dONLNdgêú,)5128
  78. ÃH”4ÕH” ŒHŒ
  79. ˇ·ˇ‚7^,     Helvetica °dONLNdk¿HÀx(»H    Chapter 7°dONLNduΩ∫à )r Dialog Boxes
  80. ˆ@°dONLNdÉø À/)f131°dONLNdá”∫fl(‹∫About Dialog Boxes·°dONLNdõ”&fl5)l133°dONLNdü‡∫Ï=(È∫Using Modeless Dialog Boxesú`°dONLNdº‡QÏ`)ó137°dONLNd¿Ìƒ˘œ(ˆƒCr\°dONLNd¬Ìœ˘Q) eating a Modeless Dialog Box˘Ä°dONLNd‡Ìe˘t)ñ137°dONLNd‰˙ƒı(ƒ Setting Up ¬°dONLNdÔ˙ı?)1Application-Defi'†°dONLNdˇ˙@k)K    ned ItemsŸ‡°dONLNd
  81. ˙é)?139°dONLNdƒ(ƒHandling User Q‡°dONLNdú)D Actions in a Modeless Dialog Box∫`°dONLNd>∞ø)®141°dONLNdB∫ ¡(∫UG@°dONLNdC¬ 0)sing Modal Dialog Boxesè °dONLNd\D S)Ç144°dONLNd`!ƒ-I(*ƒDisplaying a Modal Dialog Bo7‡°dONLNd|!J-O)Üx`Ä°dONLNd!c-r)145°dONLNdÉ.ƒ:÷(7ƒDefi†°dONLNdá.◊:u)#ning a Modal Dialog Filter Function◊`°dONLNd¨.â:ò)≤146
  82. jHq4kHq lHl
  83. ˇ·ˇ‚7^ °dONLNd∞^Hix(fH    Chapter 8°dONLNd∫[∫j‰)rMenus
  84. Å¿°dONLNd¡]¯i)>149°dONLNd≈q∫}ˆ(z∫ About Menusb@°dONLNd“q })Q151°dONLNd÷~∫ä≈(á∫Cr\°dONLNdÿ~≈ä) eating MenusÖ@°dONLNdÊ~ä$)P152°dONLNdÍãƒóœ(îƒCr\°dONLNdÏãœóÏ) eating 0‡°dONLNdÛãÌó)a Menu Rˆ@°dONLNd˚ãó/)*esour>Ä°dONLNdã0ó9)cex`°dONLNdãMó\)152°dONLNdòƒ§œ(°ƒCr\°dONLNd
  85. òœ§Ï) eating 0‡°dONLNdò̧)) a Menu Bar Rц°dONLNdò)§A)<esourÇ°dONLNd"òA§J)ce¿°dONLNd&ò_§n)154°dONLNd*•ƒ±e(ƃ!Setting Up the Menu Bar and Menuse°dONLNdM•z±â)∂154°dONLNdQ≤∫æ˚(ª∫ Handling Men°dONLNd]≤˚æ&)A    u Choicesƒ@°dONLNdh≤:æI)?156°dONLNdlø∫À (»∫Handling Keyboarÿ°dONLNd|ø ÀH)Rd Equivalentsµ‡°dONLNdãø]Àl)Q160°dONLNdèÃ∫ÿ(’∫Adjusting Menus]Ä°dONLNd†Ãÿ*)a161
  86. H4    H 
  87. H
  88. 
  89. ˇ·ˇ‚7^ °dONLNd§¸Hx(H    Chapter 9°dONLNdÆ˘∫˚)r    Processes
  90. ÿ@°dONLNdπ˚)U163°dONLNdΩ∫‚(∫About Pr‹Ä°dONLNd≈‚)(ocesses Ä°dONLNdŒ&)5165°dONLNd“∫(ı(%∫Specifying Pr^†°dONLNdflı(@);ocessing Options›Ä°dONLNdÒT(c)_168°dONLNdı)∫5f(2∫"Handling Suspend and Resume EventsO`°dONLNd){5ä)¡170°dONLNd6∫B(?∫Handling Null EventsÚ‡°dONLNd36/B>)u173°dONLNd7C∫OÔ(L∫ Quitting an å°dONLNdCCÔO#)5 Application
  91.  °dONLNdPC8OG)I175°dONLNdTP∫\Ù(Y∫ Handling ErrC °dONLNd`Pı\);orsË@°dONLNdeP\%)!176°dONLNdi]∫i>(f∫Checking the Operating Envir=‡°dONLNdÖ]?i`)Öonment6 °dONLNdç]uiÑ)6178
  92. áHé4àHé âHâ
  93. ˇ·ˇ‚7^ °dONLNdë{HÜw(ÉH    Afterword°dONLNdõx∫á)rGoing Further
  94. ◊`°dONLNd™z$Ü3)j183°dONLNdÆé∫ö;(ó∫Implementing Further Featur!°dONLNd…é<öE)Çes'†°dONLNdÕéYöh)183°dONLNd—õ∫ß0(§∫Maintaining Compatibility†°dONLNdÏõEßT)ã187°dONLNd®∫¥fi(±∫Making †°dONLNd˜®fl¥Â)%Y‡ °dONLNd¯®‰¥ı)our q°dONLNd¸®ˆ¥˝)A8@°dONLNd˝®˛¥*)
  95. pplicationÔ °dONLNd®*¥^),  Localizable{°dONLNd®s¥Ç)I188ˇd@ˇ ˇˇˇˇ@
  96. ˇ·ˇ‚7^
  97. 4⁄*ˇ¯, Palatino
  98. .(·*vi4^*¿¯°dONLNd\úh(eúUsing Developer Services·†°dONLNd\!h0)Ö189°dONLNdi¶u¨(r¶Tµ¿°dONLNdi´u)echnical Publications€`°dONLNd6iu+)q189°dONLNd:v¶Ç¨(¶T∫¿°dONLNd;v´Ç )raining∞°dONLNdDvflÇÓ)4190°dONLNdHɶè¨(å¶Tµ¿°dONLNdIÉ´èı)echnical SupportI°dONLNd[É
  99. è)_191
  100. ø*Δ¯4¿*Δ¯ ¡*¡¯
  101. ˇ·ˇ‚7^,     Helvetica °dONLNd_≥*æZ(ª*    Appendix “0°dONLNdh≥Zæa)0A°dONLNdj∞úø‚)B Constants,  °dONLNdu∞„øÎ)GT‘`°dONLNdv∞Íø3) ypes, and V∂‡°dONLNdÅ∞3ød)Iariables
  102. ∑¿°dONLNdã≤xæá)E195
  103. ı*¸¯4ˆ*¸¯ ˜*˜¯
  104. ˇ·ˇ‚7^ °dONLNdèÈ*Ùb(Ò*
  105. Appendix B°dONLNdöÊúı˘)rUtility Routines
  106. ‘¿°dONLNd¨ËÙ)q199
  107. +*2¯4,*2¯ -*-¯
  108. ˇ·ˇ‚7^ °dONLNd∞**b('*
  109. Appendix C°dONLNdªú+È)r Dialog Code
  110. ÉÄ°dONLNd»˝* )a205
  111. a*h¯4b*h¯ c*c¯
  112. ˇ·ˇ‚7^ °dONLNdÃU*`b(]*
  113. Appendix D°dONLNd◊Rúa˝)rResource Code
  114. Ω¿°dONLNdÊT`)u211 °dONLNdËT` )
  115. 1
  116. ó*û¯4ò*û¯ ô*ô¯
  117. ˇ·ˇ‚7^ °dONLNdÍã*ñb(ì*
  118. Appendix E°dONLNdıàúó)rUser Interface Code
  119. Ω¿°dONLNd
  120. ä-ñ<)ë217
  121. Õ*‘¯4Œ*‘¯ œ*œ¯
  122. ˇ·ˇ‚7^°dONLNdæúÕ”(…úGlossary
  123. ∏Ä°dONLNd¿ÁÈ)K233
  124. *
  125. ¯4*
  126. ¯ *¯
  127. ˇ·ˇ‚7^°dONLNdÙúæ(ˇúIndex
  128. º‡°dONLNd#ˆ“·)6245ˇÏ@ˇ ˇˇˇˇ@
  129. ˇ·ˇ‚7^
  130. 4⁄∫˙, Palatino
  131. .I (‡
  132. vii4^H¿ˇˇ—Úˇ◊°dONLNd[∫o‰(j∫Figur{z°dONLNd[‰o)*es, T5°dONLNd
  133. [oñ)"ables, and Listings
  134. ®HÆ4©HÆ ™∫™
  135. ˇ·ˇ‚7^,     Helvetica
  136. °dONLNdúH®s(•H    Chapter 1 °dONLNd(ù∫®Û)r Introduction    ˚@°dONLNd6ù®
  137. )K1°dONLNd8±∫º‰(π∫
  138. Figure 1-1°dONLNdC±ºΩ)N,The window created by the simple application†°dONLNdq±–º’)»4°dONLNdsΩ∫»‰(≈∫
  139. Figure 1-2°dONLNd~Ω»ä)NOverview of the system softwareÇê°dONLNdüΩú»°)î7°dONLNd°…∫‘‰(—∫
  140. Figure 1-3°dONLNd¨…‘1)N Parts of thÇÄ°dONLNd∑…1‘d)) e Macintosh [‡°dONLNd√…d‘i)3T€‡°dONLNdƒ…h‘Ç)oolbox^p°dONLNdÃ…ï‘ö)-8°dONLNdŒ’∫‡‰(›∫
  141. Figure 1-4°dONLNdŸ’‡)NA0°dONLNd⁄’‡π), multiscript line of text drawn by QuickDraw °dONLNd’Ç÷)æ13°dONLNd ·∫ω(È∫
  142. Figure 1-5°dONLNd·Ï…)N0Input and conversion of Japanese text using the ÈÄ°dONLNdF·…ÏŒ)¡TiÄ°dONLNdG·ŒÏ)ext Services °dONLNdTΈ+(ÛManagerp°dONLNd]Î>ˆH)614°dONLNd`˜∫‰(ˇ∫
  143. Figure 1-6°dONLNdk˜∫)N,Sharing dynamic data with other applications    `°dONLNdô˜Õ◊)≈15°dONLNdú∫‰( ∫
  144. Figure 1-7°dONLNdßv)NSending and responding to  °dONLNd¡v™)n Apple eventsP°dONLNdœºΔ)F16°dONLNd“∫‰(∫
  145. Figure 1-8°dONLNd›L)NPlaying a QuickT-ê°dONLNdÌLt)D    ime movie, °dONLNd¯áë);18°dONLNd˚∫&‰(#∫
  146. Figure 1-9°dONLNd&)NA0°dONLNd&2)
  147.  typical V°dONLNd2&Ñ)$enn diagram windowà°dONLNd%ñ&†)d22°dONLNd('∫2Í(/∫ Figure 1-10°dONLNd4'2H)NThe parts of a V‡°dONLNdD'H2ö)@enn diagram windowà‡°dONLNdX'¨2∂)d22°dONLNd[3∫>Í(;∫ Figure 1-11°dONLNdg3>)NA0°dONLNdh3>-)     correctl¿°dONLNdq3.>9) y cć°dONLNdt39>k) onstructed VÜ0°dONLNdÄ3k>ù)2 enn diagramà∞°dONLNdç3Ø>π)D23°dONLNdê?∫JÍ(G∫ Figure 1-12°dONLNdú?J )NThe VP°dONLNd°? JH)enn menu°dONLNd´?ZJd):24°dONLNdÆW∫b·(_∫    Table 1-1.°dONLNd∏Wbc)NParameters passed to ,
  148. Courier°dONLNdÕWcbê)[    NewWindow°dONLNd÷Wêb≈)- in Listing 1-1°dONLNdÁW◊b‹)G4.°dONLNdÈc∫n·(k∫    Table 1-2°dONLNdÛcnE)NThe Macintosh Ÿê°dONLNdcEnJ)=TYê°dONLNdcJnd)oolbox‹ °dONLNd
  149. cvnÄ),10°dONLNdo∫z·(w∫    Table 1-3°dONLNdozç)NThe Macintosh Operating Systemp°dONLNd7o†z•)ò1[–°dONLNd8o§z©)1°dONLNd:á∫íÊ(è∫ Listing 1-1°dONLNdFáí)NA0°dONLNdGáíÉ) simple Macintosh applicationÖ–°dONLNdfáïíö)á3
  150. ∂Hº4∑Hº ∏∫∏
  151. ˇ·ˇ‚7^
  152. °dONLNdh™H∂s(≥H    Chapter 2 °dONLNdr´∫∂·)rMemory    9Ä°dONLNdz´Ù∂˛):27°dONLNd}ø∫ ‰(«∫
  153. Figure 2-1°dONLNdàø ⁄)N4Memory organization in the cooperative multitasking °dONLNdº…‘9*
  154. environment∞°dONLNd……L‘V)D30°dONLNdÃ’∫‡‰(›∫
  155. Figure 2-2°dONLNd◊’‡°)N(Organization of an application partition    @°dONLNd’¥‡æ)¨32°dONLNd·∫ω(È∫
  156. Figure 2-3°dONLNd·Ï\)NThe application stack °dONLNd&·oÏy)g34°dONLNd)Ì∫¯‰(ı∫
  157. Figure 2-4°dONLNd4̯)NA0°dONLNd5̯T) fragmented heapà0°dONLNdGÌf¯p)X35°dONLNdJ˘∫‰(∫
  158. Figure 2-5°dONLNdU˘)NA0°dONLNdV˘S) compacted heapê°dONLNdg˘eo)W36°dONLNdj∫‰(∫
  159. Figure 2-6°dONLNduÅ)NOrganization of an application’^ê°dONLNdîÅà)ys ‡ °dONLNdñá™)A5 world‡¿°dONLNd†ºΔ)537°dONLNd£∫‰(∫
  160. Figure 2-7°dONLNdÆ)NA0°dONLNdØí)" pointer to a nonrelocatable blockㆰdONLNd”§Æ)ñ39°dONLNd÷∫(‰(%∫
  161. Figure 2-8°dONLNd·()NA0°dONLNd‚(É) handle to a relocatable block 0°dONLNdï(ü)á41°dONLNd)∫4‰(1∫
  162. Figure 2-9°dONLNd)4∂)N,Purging and reallocating a relocatable block
  163. ¿°dONLNd>)…4”)¡44
  164. XH^4YH^ Z∫Z
  165. ˇ·ˇ‚7^
  166. °dONLNdALHXs(UH    Chapter 3 °dONLNdKM∫XÓ)r    Resources    ‡°dONLNdVMX )G49°dONLNdYa∫l‰(i∫
  167. Figure 3-1°dONLNddalj)NSearching for a resource@°dONLNd~a}lá)u54°dONLNdÅm∫x‰(u∫
  168. Figure 3-2°dONLNdåmx–)N1The ResEdit version of the Preferences dialog box °dONLNdøm„xÌ)€58°dONLNd¬y∫щ(Å∫
  169. Figure 3-3°dONLNdÕyÑ)NA0°dONLNdŒyÑV) resource diagramÉ°dONLNd·yhÑr)Z59°dONLNd‰Ö∫ê‰(ç∫
  170. Figure 3-4°dONLNdÔÖêv)NThe Preferences dialog boxá0°dONLNd Öàêí)Ä61°dONLNdù∫®·(•∫    Table 3-1°dONLNdù®)NTÄ–°dONLNdù®~)ypical locations of resourcesÖ°dONLNd8ùê®ö)É53°dONLNd;©∫¥·(±∫    Table 3-2°dONLNdE©¥Ç)NSome standard resource types∞°dONLNdc©ï¥ü)ç55ˇp@ˇ ˇˇˇˇ@
  171. ˇ·ˇ‚7^
  172. 4⁄*ˇ¯, Palatino
  173. .(·*viii4^*¿¯,     Helvetica    °dONLNd\úg»(dú Listing 3-1°dONLNd \Ígä)N(Rez input for the Preferences dialog box    °dONLNd6\ùgß)≥57°dONLNd9hús»(pú Listing 3-2°dONLNdEhÍs)NThe stÅ@°dONLNdKhsä)"ructure of a resource containing V
  174. °dONLNdmhäsæ)á enn diagram °dONLNdyrÍ}(zÍ preferences`°dONLNdÜr,}6)B61°dONLNdâ~úâ»(Üú Listing 3-3°dONLNdï~Íâ')NReading a userŸ°dONLNd£~'â()=’Ø@°dONLNd§~)â_)s preferences1¿°dONLNd≥~râ|)I62°dONLNd∂äúï»(íú Listing 3-4°dONLNd¬äÍïL)NCreating a preferences fi@°dONLNd€äMïT)cle`°dONLNdfläfïp)64°dONLNd‚ñú°»(ûú Listing 3-5°dONLNdÓñÍ°ä)N&Copying a resource from one resource fip°dONLNdñã°Ω)°le to another    †°dONLNd$ñœ°Ÿ)D65°dONLNd'¢ú≠»(™ú Listing 3-6°dONLNd3¢Í≠w)N#Saving current preferences settings0°dONLNdX¢ä≠î)†66
  175. —*◊¯4“*◊¯ ”ú”¯
  176. ˇ·ˇ‚7^
  177. °dONLNd[≈*—U(Œ*    Chapter 4 °dONLNdeΔú—Ω)rEvents     ‡°dONLNdmΔ–—⁄)469°dONLNdp⁄úÂΔ(‚ú
  178. Figure 4-1°dONLNd{⁄ÍÂë)N*Sources of events sent to your applicationå°dONLNdß⁄£Â≠)π73°dONLNd™Úú˝»(˙ú Listing 4-1°dONLNd∂ÚÍ˝S)NInitializing your applicationÉê°dONLNd’Úe˝o){74°dONLNdÿ˛ú    »(ú Listing 4-2°dONLNd‰˛Í    9)NInitializing the main X¿°dONLNd˙˛9    >)OTÿ¿°dONLNd˚˛=    Ç)oolbox Managers‹‡°dONLNd ˛î    û)W75°dONLNd
  179. ú»(ú Listing 4-3°dONLNd
  180. Í`)NHandling disk-inserted eventsÖ°dONLNd:
  181. r|)à77°dONLNd=ú!»(ú Listing 4-4°dONLNdIÍ!!)NAn event loopÜ °dONLNdX3!=)I77°dONLNd["ú-»(*ú Listing 4-5°dONLNdg"Í-Ô)NT™p°dONLNdh"Ô-Z)racking mouse events in th∞ °dONLNdÇ"Z-~)k    e close b≤°dONLNdã"~-á)$ox3¿°dONLNdè"ö-§)79°dONLNdí.ú9»(6ú Listing 4-6°dONLNdû.Í9Ô)NT™p°dONLNdü.Ô9)
  182. racking th´°dONLNd©.9:)'
  183. e cursor i´P°dONLNd≥.;9ó)%n an arbitrary rectangle.@°dONLNdÕ.™9¥)o80
  184. ]*c¯4^*c¯ _ú_¯
  185. ˇ·ˇ‚7^
  186. °dONLNd–Q*]U(Z*    Chapter 5 °dONLNd⁄Rú]ƒ)rDrawing    Ÿ°dONLNd„R÷]‡):83°dONLNdÊfúqΔ(nú
  187. Figure 5-1°dONLNdÒfÍqG)NSamples of QuickDraw’◊°dONLNdfGqk)] s abilities÷°dONLNdf~qà)785°dONLNdrú}Δ(zú
  188. Figure 5-2°dONLNd!rÍ}>)NThe coordinate plane–°dONLNd7rQ}[)g86°dONLNd:~úâΔ(Üú
  189. Figure 5-3°dONLNdE~Íâ)NA0°dONLNdF~â)
  190.  rectangleÑÄ°dONLNdR~)â3)987°dONLNdUäúïΔ(íú
  191. Figure 5-4°dONLNd`äÍï?)NPixels and rectangles°dONLNdwäRï\)h88°dONLNdzñú°Δ(ûú
  192. Figure 5-5°dONLNdÖñÍ°Ô)NTÄ–°dONLNdÜñÔ°)
  193. wo regionsP°dONLNdíñ-°7)>90°dONLNdï¢ú≠Δ(™ú
  194. Figure 5-6°dONLNd†¢Í≠)NA0°dONLNd°¢≠) bitmÅ@°dONLNd¶¢≠)apLJ°dONLNd™¢≠))92°dONLNd≠ÆúπΔ(∂ú
  195. Figure 5-7°dONLNd∏ÆÍπ)N&Calculating the overlap regions of a Vä`°dONLNdfiÆπ±)ï enn diagram凰dONLNdÎÆ√πÕ)D98°dONLNdÓ∫ú≈Δ(¬ú
  196. Figure 5-8°dONLNd˘∫Í≈o)NBit images in a document windowp°dONLNd∫Ç≈å)ò99°dONLNd“ú›»(⁄ú Listing 5-1°dONLNd)“Í›†)N.Saving and restoring the current graphics port     °dONLNdY“≥›Ω)…93°dONLNd\fiúÈ»(Êú Listing 5-2°dONLNdhfiÍÈÃ)N7The structure of a record describing a document window’_P°dONLNdüfiÃÈ”)‚s °dONLNd°ËÍÛ(Ígeometry¿°dONLNd´Ë"Û,)894°dONLNdÆÙúˇ»(¸ú Listing 5-3°dONLNd∫Ù͡d)N Initializing the geometry record¿°dONLNd‹ÙwˇÅ)ç95°dONLNdflú »(ú Listing 5-4°dONLNdÎÍ ˙)NDefiÄ °dONLNdÔ˙ J)ning circular regions°dONLNd] g)c96°dONLNd     ú»(ú Listing 5-5°dONLNd Í˙)NDefiÄ °dONLNd ˙)ning no†°dONLNd  !)ncÑp°dONLNd" !Y)    ircular regionsp°dONLNd3 lv)K96°dONLNd6ú#»( ú Listing 5-6.°dONLNdBÍ#)NReading ,
  197. Courier°dONLNdJ#+)#'ICON'°dONLNdP+#â) resources into memory°dONLNdhõ#™)p100.°dONLNdl$ú/»(,ú Listing 5-7°dONLNdx$Í/†)N+Drawing the tools area of a document windowà‡°dONLNd•$≤/¡)»100°dONLNd©0ú;»(8ú Listing 5-8°dONLNdµ0Í;Z)NDrawing a portion of an iconÖ`°dONLNd”0l;{)Ç101°dONLNd◊<úG»(Dú Listing 5-9°dONLNd„<ÍGù)N+Retrieving a status message from a resourceÖ °dONLNd<ØGæ)≈102°dONLNdHúSÕ(Pú Listing 5-10°dONLNd!HÍSs)N"Informing the user of an argument’›@°dONLNdCHsSƒ)âs validity or invalidity‹†°dONLNd]H◊SÊ)d103°dONLNdaTú_Õ(\ú Listing 5-11°dONLNdnTÍ_\)NDisplaying a status messageÄ°dONLNdãTo_~)Ö103
  198. É*â¯4Ñ*⯠ÖúÖ¯
  199. ˇ·ˇ‚7^
  200. °dONLNdèw*ÉU(Ä*    Chapter 6 °dONLNdôxúɶ)rW·‡°dONLNdöx¶É»)
  201. indows    Ä°dONLNd¢x€ÉÍ)5107°dONLNd¶åúóΔ(îú
  202. Figure 6-1°dONLNd±åÍó)NA0°dONLNd≤åó¯) VÄ°dONLNd¥å¯óJ)enn diagram windowáÄ°dONLNd»å\óa)d1›‡°dONLNd…å`óe)14@°dONLNd åeój)1°dONLNdÃòú£Δ(†ú
  203. Figure 6-2°dONLNd◊òÍ£Ñ)N&An inactive window containing controlsá–°dONLNdˇòñ£•)¨127ˇr@ˇ ˇˇˇˇ@
  204. ˇ·ˇ‚7^
  205. 4⁄∫˙, Palatino
  206. ., (‡ix4^H¿,     Helvetica    °dONLNd\∫gÊ(d∫ Listing 6-1.°dONLNd \g)NThe ,
  207. Courier°dONLNd\gU) WindowRecord°dONLNd\Ugê)< data structure°dONLNd-\¢gß)M1’ê°dONLNd.\¶g∞)12.°dONLNd1h∫sÊ(p∫ Listing 6-2°dONLNd=hs¬)N,Determining if a window is a document window`°dONLNdkh’s⁄)Õ1Z¿°dONLNdlhŸs„)14°dONLNdot∫Ê(|∫ Listing 6-3°dONLNd{tç)N"Determining if a window is a dialo°dONLNdùté§)Üg box†°dONLNd§t∂ª)(1[°dONLNd•t∫ƒ)14°dONLNd®Ä∫ãÊ(à∫ Listing 6-4°dONLNd¥ÄãŸ)N2Determining if a window is a desk accessory windowÑ`°dONLNdËÄÎã)„1⁄¿°dONLNdÈÄÔã˘)15°dONLNdÏå∫óÊ(î∫ Listing 6-5°dONLNd¯åóπ)N,The structure of a document record for the V
  208. °dONLNd$åπó˛)±enn Diagrammer °dONLNd3ñ°3(û applicationÇ°dONLNd@ñE°J)=1ŸP°dONLNdAñI°S)15°dONLNdD¢∫≠Ê(™∫ Listing 6-6°dONLNdP¢≠M)NCreating a new V°dONLNd`¢M≠W)Een†°dONLNdb¢W≠e)
  209. n diá∞°dONLNdf¢e≠ü) agram windowà°dONLNdt¢±≠∂)L1fi`°dONLNdu¢µ≠ø)17°dONLNdxÆ∫πÊ(∂∫ Listing 6-7°dONLNdÑÆπ~)NHandling mouse-down events`°dONLNd†Æëπ†)â120°dONLNd§∫∫≈Ê(¬∫ Listing 6-8°dONLNd∞∫≈T)NDragging a window–°dONLNd√∫g≈v)_121°dONLNd«Δ∫—Ê(Œ∫ Listing 6-9°dONLNd”Δ—w)NHandling clicks in a window’ÿ∞°dONLNdÔΔw—∑)os content region›∞°dONLNdΔ…—ÿ)R121°dONLNd“∫›Î(⁄∫ Listing 6-10°dONLNd“›_)NHandling a click in a fiÉ°dONLNd*“_›Ñ)W    gure iconÖ0°dONLNd5“ñ›•)7123°dONLNd9fi∫ÈÎ(Ê∫ Listing 6-11°dONLNdFfiÈf)NHandling update events    °dONLNd^fiyÈà)q124°dONLNdbÍ∫ıÎ(Ú∫ Listing 6-12°dONLNdoÍı¡)N-Handling window activations and deactivations 0°dONLNdûÍ‘ı„)Ã126°dONLNd¢ˆ∫Î(˛∫ Listing 6-13°dONLNd؈Ö)N Handling clicks in the close boxÖ∞°dONLNd—ˆó¶)è128°dONLNd’∫Î(
  210. ∫ Listing 6-14°dONLNd‚N)NClosing a windowÅ–°dONLNdÙ`o)X129°dONLNd¯∫Î(∫ Listing 6-15°dONLNd6)N Closing a V†°dONLNd6@).en@°dONLNd@N)
  211. n diÜP°dONLNdNà) agram window܆°dONLNd$ö©)L129
  212. =HC4>HC ?∫?
  213. ˇ·ˇ‚7^
  214. °dONLNd(1H=s(:H    Chapter 7 °dONLNd22∫=˙)r Dialog Boxes    P °dONLNd@2=)S131°dONLNdDF∫Q‰(N∫
  215. Figure 7-1°dONLNdOFQ)NAn É °dONLNdRFQ=)    About box0°dONLNd]FPQ_);133°dONLNdaR∫]‰(Z∫
  216. Figure 7-2°dONLNdlR]8)N An alert boxÉ0°dONLNdzRJ]Y)B134°dONLNd~^∫i‰(f∫
  217. Figure 7-3°dONLNdâ^i)NA0°dONLNdä^il) Preferences dialog boxà`°dONLNd£^~iç)p134°dONLNdßv∫ÅÊ(~∫ Listing 7-1°dONLNd≥vÅZ)NDialog item numbers0°dONLNd»vmÅ|)e135°dONLNdÃÇ∫çÊ(ä∫ Listing 7-2°dONLNdÿÇçÜ)NCreating a modeless dialog boxÜ¿°dONLNd¯Çòçß)ê138°dONLNd¸é∫ôÊ(ñ∫ Listing 7-3°dONLNdéôo)NSetting up application-defi‡°dONLNd#épô±)hned dialog itemsã`°dONLNd5é√ô“)S139°dONLNd9ö∫•Ê(¢∫ Listing 7-4°dONLNdEö•h)NDrawing application-defiÇp°dONLNd]öh•©)`ned dialog items°dONLNdoöº•À)T140°dONLNds¶∫±Ê(Æ∫ Listing 7-5°dONLNd¶±Æ)N(Handling events in a modeless dialog boxã°dONLNd©¶¿±œ)∏141°dONLNd≠≤∫ΩÊ(∫∫ Listing 7-6°dONLNdπ≤ΩÕ)N1Setting the state of radio buttons and checkboxes톰dONLNdÏ≤flΩÓ)◊142°dONLNdæ∫…Ê(Δ∫ Listing 7-7°dONLNd¸æ…)NDisplaying a modal dialog box¿°dONLNdæí…°)ä145°dONLNd ∫’Ê(“∫ Listing 7-8°dONLNd+ ’&)NOutlinin†°dONLNd3 '’B)g the dÑ@°dONLNd: B’n) efault butto    °dONLNdF o’Ã)-n of a modal dialog box0°dONLNd_ fi’Ì)o146°dONLNdc÷∫·Ê(fi∫ Listing 7-9°dONLNdo÷·)NA0°dONLNdp÷·J) modal dialog fiч°dONLNdÄ÷J·x)<lter function¿°dONLNdè÷ã·ö)A147
  218. H 4H  ∫
  219. ˇ·ˇ‚7^
  220. °dONLNdì˘Hs(H    Chapter 8 °dONLNdù˙∫€)rMenus    Ñ °dONLNd§˙̸)3149°dONLNd®∫‰(∫
  221. Figure 8-1°dONLNd≥)NA0°dONLNd¥l) typical pull-down menu¿°dONLNdÕ~ç)p151°dONLNd—∫%‰("∫
  222. Figure 8-2.°dONLNd‹%)NDefi°dONLNd‡%2)ning a °dONLNdÁ2%P)'MENU'°dONLNdÌP%v)     resource°dONLNd¯à%ó)8153.°dONLNd¸&∫1‰(.∫
  223. Figure 8-3°dONLNd&1n)NEditing a menu commandч°dONLNd&Ä1è)x153°dONLNd#2∫=‰(:∫
  224. Figure 8-4.°dONLNd.2=)NAn °dONLNd12=3)'MBAR'°dONLNd723=Ñ) resource in ResEdit°dONLNdM2ñ=•)c154.°dONLNdQJ∫U·(R∫    Table 8-1°dONLNd[JUÜ)NReserved keyboard equivalentsᇰdONLNdzJòUß)ê161°dONLNd~b∫mÊ(j∫ Listing 8-1°dONLNdäbmó)N!Setting up the menu bar and menusㇰdONLNd≠b©m∏)°155°dONLNd±n∫yÊ(v∫ Listing 8-2°dONLNdΩny)NDefiÄ °dONLNd¡nyÀ)'ning menu numbers and menu item numbersáÄ°dONLNdÍn›yÏ)≈156°dONLNdÓz∫ÖÊ(Ç∫ Listing 8-3°dONLNd˙zÖo)NHandling menu selectionsÖ`°dONLNdzÅÖê)y157°dONLNdÜ∫ëÊ(é∫ Listing 8-4°dONLNd$Üë.)N    Handling ê°dONLNd-Ü.ëà)&Apple menu selectionsâp°dONLNdDÜöë©)l159°dONLNdHí∫ùÊ(ö∫ Listing 8-5°dONLNdTíùR)NHandling Comman@°dONLNdcíSù_)Kd-kÄ¿°dONLNdfí_ùò) ey equivalentsP°dONLNdví´ù∫)L160°dONLNdzû∫©Ê(¶∫ Listing 8-6°dONLNdÜû©J)NAdjusting menus°dONLNdóû]©l)U161ˇ
  225. 8@ˇ ˇˇˇˇ@
  226. ˇ·ˇ‚7^
  227. 4⁄*ˇ¯, Palatino
  228. .(·*x4^*¿¯
  229. h*n¯4i*n¯ júj¯
  230. ˇ·ˇ‚7^,     Helvetica°dONLNd\*hU(e*    Chapter 9 °dONLNd
  231. ]úhœ)r    Processes    ⁄`°dONLNd]·h)E163°dONLNdqú|Δ(yú
  232. Figure 9-1°dONLNd$qÍ|ñ)N*The desktop with several applications openã0°dONLNdPq®|∑)æ166°dONLNdT}úàΔ(Öú
  233. Figure 9-2°dONLNd_}Íà)NA0°dONLNd`}à¯) VÄ°dONLNdb}¯àñ)&enn diagram before automatic adjusting¿°dONLNdä}®à∑)∞174°dONLNdéâúîΔ(ëú
  234. Figure 9-3°dONLNdôâÍî)NA0°dONLNdöâî¯) VÄ°dONLNdúâ¯îé)%enn diagram after automatic adjustingå@°dONLNd√â†îØ)®175°dONLNd«°ú¨√(©ú    Table 9-1.°dONLNd—°Í¨$)NThe bits in the ,
  235. Courier°dONLNd·°$¨G):message°dONLNdË°G¨N)# fi°dONLNdΰN¨‘)!eld of an operating-system event .°dONLNd ´Í∂(≥Írecordˇ–°dONLNd´∂$)+172°dONLNd√úŒ»(Àú Listing 9-1.°dONLNd$√ÍŒV)NThe Rez input for a sample °dONLNd?√VŒt)l'SIZE'°dONLNdE√tŒú)
  236.  resource °dONLNdQ√ÆŒΩ):169.°dONLNdUœú⁄»(◊ú Listing 9-2°dONLNdaœÍ⁄r)N Handling operating-system eventsÜ °dONLNdÉœÑ⁄ì)ö171°dONLNdá€úÊ»(„ú Listing 9-3°dONLNdì€ÍÊ;)NHandling null eventsÖ°dONLNd©€MÊ\)c173°dONLNd≠ÁúÚ»(Ôú Listing 9-4°dONLNdπÁÍÚJ)NQuitting your application°dONLNd‘Á]Úl)s175°dONLNdÿÛú˛»(˚ú Listing 9-5°dONLNd‰ÛͲG)NHandling serious errorsÄ`°dONLNd˝ÛY˛h)o178°dONLNdˇú
  237. »(ú Listing 9-6.°dONLNdˇÍ
  238. $)NChecking that °dONLNdˇ$
  239. V):
  240. FindFolder°dONLNd%ˇV
  241. Ä)2  is present°dONLNd2ˇí
  242. °)<179.°dONLNd6 ú»(ú Listing 9-7°dONLNdB ÍÄ)N&Determining whether a trap is availabl@°dONLNdh ÅÜ)óe°dONLNdk òß)180°dONLNdoú"»(ú Listing 9-8ˇˇ€l.°dONLNd{Í"s)N%Checking for the availability of the ˇˇ§é§à°dONLNd†s"¥)âWaitNextEventˇˇ€l§à°dONLNd≠¥"÷)A     functionÙ°dONLNd∏È"¯)5181ˇ@ˇ ˇˇˇˇ@
  243. ˇ·ˇ‚7^
  244. 4⁄∫˙, Palatino
  245. ., (·xi    3, Ã(#∫PREF6Å)3ACE 4^H¿
  246. vHú4vHú óHó
  247. ˇ·ˇ‚7^ˇˇ¬òˇ◊°dONLNd\∫ui(n∫About This Book
  248. °dONLNdú∫®Í*7 This book, @°dONLNdúή])1Inside Macintosh: Overview‡ °dONLNd5ú\®^)q,` °dONLNd6ú_®k) prß@°dONLNd9úk®≈) ovides a general intr›†°dONLNdNú≈®˙)Z oduction to °dONLNdZ©∫µ√(≤∫prG °dONLNd\©ƒµõ)
  249. -ogramming for Macintosh computers and to the Q¿°dONLNdâ©õµ‡)◊Inside Macintosh3¿°dONLNdô©·µ)F  library of °dONLNd•∂∫¬Ω(ø∫rE°dONLNd¶∂欌)eferÒ °dONLNd™∂Œ¬@)ence books. Unless you ar °dONLNd√∂A¬T)se alr °dONLNd»∂T¬)(eady an experienced developer of softwar@°dONLNd∂¬)πe °dONLNdÚ√∫œf(Ã∫%for Macintosh computers, you should r°dONLNd√gœ)≠(ead this book for a general overview of °dONLNd?–∫‹>(Ÿ∫the Macintosh system softwarê¿°dONLNd[–>‹~)Ñe and of the prµ`°dONLNdj–~‹)@ogramming techniques that you °dONLNdà›∫Èà(Ê∫,should use when developing your application.°dONLNdµÔ∫˚D* This book is written for both pr§`°dONLNd’ÔD˚˚)ä*ofessional developers and “hobbyists.” It °dONLNdˇ¸∫ö(∫/assumes only that you understand fundamental pr¬°dONLNd.¸ö )‡ogramming concepts and °dONLNdE    ∫ô(∫2that you have had experience using a high-level prJ†°dONLNdw    ö)‡ogramming language such °dONLNdè∫"Ä(∫0as Pascal or C. It is helpful, but not necessary˘¿°dONLNdø"Ú)≈, to have some experience °dONLNdŸ#∫/√(,∫prG °dONLNd€#ƒ/.)
  250. ogramming for a graphi®‡°dONLNdÒ#./:)jc u†@°dONLNdÙ#;/)*ser interface (like the Macintosh desktop °dONLNd0∫<Ì(9∫ metaphor). ë °dONLNd)0Ì<z)3!At the very least, you should alrc`°dONLNdJ0{<)éeady have extensive experience °dONLNdi=∫I–(F∫usingI °dONLNdn=—I)  one or morP@°dONLNdy=I¥)3&e applications on a Macintosh computer>`°dONLNdü=¥I–)∞. Befor≤ °dONLNd¶=–I) e you start °dONLNd≤J∫V√(S∫prG °dONLNd¥JƒV)
  251. ogramming, yæ`°dONLNd¿JV)>o3‡°dONLNd¡JV9) u need to u˙`°dONLNdÃJ9Vh)1
  252. nderstand ê@°dONLNd÷JiVÅ)0what {°dONLNd€JÇV)the basic elements of the °dONLNdıW∫c>(`∫Macintosh desktop metaphor φ°dONLNdW>cF)Ñar±†°dONLNdWGcN)    e ˚@°dONLNdWNcÆ)(windows, menus, scr™Ä°dONLNd(WØc)aoll bars, and so forth) °dONLNd@d∫pü(m∫3and how the user expects those elements to operate.°dONLNdtv∫ÇC*This book leads by example. Frâ@°dONLNdívCÇÄ)âom the very fi.Ä°dONLNd†vÅÇı)>rst page, the fundamental °dONLNd∫É∫è√(å∫prG °dONLNdºɃè5)
  253. ogramming techniques ar¢Ä°dONLNd”É5èç)qe illustrated by sour€Ä°dONLNdËÉçè)Xce code that you can compile °dONLNdê∫ú(ô∫into actual, working rÔ‡°dONLNdêú∑)_#outines and applications. GraduallyK°dONLNd>ê∑ú)û, you will learn how °dONLNdSù∫©>(¶∫to implement the major featurˆ°dONLNdpù>©Ó)Ñ(es of a Macintosh application, including,Zapf Dingbats°dONLNdô≥∫∫ø(π∫n
  254. °dONLNdõ∞Δº…) rE°dONLNdú∞ ºá)*esponding to user actions and other events°dONLNd«≈∫Ãø(À∫n
  255. °dONLNd…¬ΔŒŒ) crµ@°dONLNdÀ¬ŒŒ•),eating and managing windows and dialog boxes°dONLNd¯◊∫fiø(›∫n
  256. °dONLNd˙‘Δ‡7) handling menu selections°dONLNdÈ∫ø(Ô∫n
  257. °dONLNdÊΔÚ@) storing application data in rD °dONLNd2ÊAÚY){esourå`°dONLNd7ÊYÚf)ces°dONLNd;˚∫ø(∫n
  258. °dONLNd=¯Δw) %managing your application’s memory ef†°dONLNdb¯x~)≤fi`°dONLNdd¯~õ)ciently°dONLNdl∫ø(∫n
  259. °dONLNdn
  260. ΔÛ)
  261. sharing pr°dONLNdx
  262. Ù‡).3ocessing time and available memory with other open °dONLNd´Δ"˚(Δ applications°dONLNd∏+∫2ø(1∫n
  263. °dONLNd∫(Δ4\) !checking available system softwarR°dONLNd€(]4~)óe featur«†°dONLNd„(~4á)!es°dONLNdÊ=∫Dø(C∫n
  264. °dONLNdË:ΔF˝) handling errq°dONLNdÙ:˝Fj)7ors or unexpected occurrAÄ°dONLNd :kFü)n ences safely°dONLNdK∫W(T∫This book also pr{@°dONLNd*KW)L8ovides guidelines on how to maximize your application’s °dONLNdbX∫d3(a∫compatibility with the entir¥ °dONLNd~X3d)y-e family of Macintosh computers and minimize °dONLNd´e∫q(n∫the amount of work rû`°dONLNdøeq/)^equirµ†°dONLNdƒe/q
  265. )6ed to localize your application (that is, to adapt it °dONLNd˙r∫~˚({∫Kfor use in other geographic locations). Compatibility and localizability arò†°dONLNdEr˚~({˚e °dONLNdG∫ã‘(à∫featur¨°dONLNdM‘ãè))es that you should always plan in advancer°dONLNdvêã)º. In general, your best guide °dONLNdîå∫ò
  266. (ï∫to writing softwarY‡°dONLNd¶å
  267. òï)P!e that follows these guidelines iv`°dONLNd«åïò˚)ãs to use the techniques °dONLNdflô∫•ˆ(¢∫illustrated thr2¿°dONLNdÓô˜•/)= oughout the ¨@°dONLNd˙ô/•t)8Inside Macintoshé@°dONLNd    
  268. ôu•∫)F series of books.ˇ@ˇ ˇˇˇˇ@
  269. ˇ·ˇ‚7^
  270. 4⁄*˙¯, Palatino
  271. .(·*xii    3, Ã(#úPREF6Å)3ACE 4^*¿¯
  272. ^*x¯4^*x¯
  273. à*ê¯4â*ꯠä*ä˛
  274. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdu*à[(É*About mY°dONLNdu\àÕ)2Inside MacintoshˇˇˇˇˇˇU˛(É0
  275. °dONLNdôú•Ø(¢úThe ª¿°dONLNdôØ•Ù)Inside Macintoshù¿°dONLNd+ôı•©)F+ library of books is a complete technical r6‡°dONLNdVô™•∫)µefer„°dONLNdZô∫•Î) ence to the °dONLNdf¶ú≤fi(Øúsystem softwarM‡°dONLNdt¶fl≤)Ce pr^†°dONLNdx¶≤ê)"ovided for Macintosh computers by º`°dONLNdö¶ê≤€)†Apple Computerd‡°dONLNd®¶€≤Ú)K, Inc. °dONLNdØ≥úø¢(ºúY@Ä°dONLNd∞≥¢ø)ou’ll need some or all of the Ö@°dONLNdŒ≥ød)}Inside Macintoshg@°dONLNdfi≥eø⁄)F books—in addition to the °dONLNd¯¿úÃ$(…údocumentation for your specifiT °dONLNd¿%ÃM)â    c softwar© °dONLNd¿Mî)(e development envir»°dONLNd2¿®Ã◊)[onment—t†°dONLNd:¿ÿÃfl)0o °dONLNd<ÕúŸ§(÷úw◊°dONLNd=Õ§Ÿ<)#rite applications and other softwarI@°dONLNd`Õ=Ÿî)ôe components that r‰¿°dONLNdsÕîŸÓ)Wun in the Macintosh °dONLNdá⁄úÊÓ(„úOperating System.°dONLNdôÏú¯‘*Books in the j°dONLNd¶Ï’¯)9Inside MacintoshL°dONLNd∂ϯA)F
  276.  series ar˘@°dONLNd¿ÏA¯Ø)&e designed primarily as r °dONLNdŸÏ∞¯¿)oefer≈@°dONLNd›Ï¿¯Û) ence books °dONLNdˢúÆ(ú@and not as step-by-step tutorials. (The main exception to that r3¿°dONLNd(˘Øˆ(Øule is this book, °dONLNd:ú(úInside Macintosh: OverviewËÄ°dONLNdTt)q, which is a general intr °dONLNdmt≥)goduction to prÈ`°dONLNd{≥˜)?ogramming on °dONLNdàúG(ú%Macintosh computers and to the other ¨°dONLNd≠Gå)´Inside Macintoshé°dONLNdΩç≤)F     books.) ††°dONLNdΔ≤Ì)%Nonetheless, °dONLNd” ú,•()úthì¿°dONLNd’ •,≠)    er"`°dONLNd◊ Æ,∏)    e iT`°dONLNd⁄ ∏,¬)
  277. s sN`°dONLNd› √,Ã) uf{¿°dONLNdfl Ã,“)    fiàÄ°dONLNd· “,Ï)@cient “how-to” material in each book that you should be able to °dONLNd!-ú90(6ú!successfully implement the featurN`°dONLNdB-19)ï,es of some particular part of the Macintosh °dONLNdn:úFfi(Cúsystem softwarM‡°dONLNd|:flF˜)Ce by rÛ@°dONLNdÇ:˜F=)eading the appr» °dONLNdë:=Fí)Fopriate chapters in fl‡°dONLNd•:íF◊)UInside Macintosh¡‡°dONLNdµ:ÿF›)F. °dONLNd∑GúSÆ(PúMor/¿°dONLNd∫GØS«)eover°dONLNdøG«S{)*, some of these books contain special intr`°dONLNdÈG{S·)¥oductory chapters that °dONLNdTú`((]úexplain general concepts and pr °dONLNdT)`ÿ)ç'ovide implementation details for specifiˆ°dONLNdGTÿ`fi)Øc °dONLNdIaúm(júparts of the system softwarË¿°dONLNddam¢)w!e. For example, the chapter “Intr˚°dONLNdÖa¢mÈ)èoduction to File °dONLNdñnúz(wúManagement” in the book i†°dONLNdÆnzo)vInside Macintosh: Files0Ä°dONLNd≈npz|)^ prw†°dONLNd»n|zŒ) ovides a complete °dONLNd⁄{úáƒ(Ñú?explanation of how to implement the typical File menu commands.°dONLNdçúô¡*    If you ar °dONLNd#ç¬ôÛ)& e new to prΩ¿°dONLNd.çÛôº)1*ogramming for the Macintosh system softwarr†°dONLNdXçΩô⁄) e, you °dONLNd_öú¶È(£úshould begin by r°dONLNdpöͶ8)Neading this book, n °dONLNdÇö8¶™)NInside Macintosh: Overview÷†°dONLNdúö©¶⁄)q . Once you °dONLNdßßú≥(∞úunderstand the material prd‡°dONLNd¡ß≥E)w esented her@°dONLNdÃßF≥Ï)3'e, you can then usefully turn to other °dONLNdÛ¥ú¿·(ΩúInside Macintoshb°dONLNd¥‚¿ı)FA books. In all likelihood, you’ll next want to look at two books °dONLNdD¡úÕ ( úcovering the Macintosh T    ¿°dONLNd\¡ Õ,)poolbox:,Zapf Dingbats°dONLNdd◊úfi°(›ún
  278. °dONLNdf‘®‡&) Inside Macintosh: Macintosh T“Ä°dONLNdÉ‘%‡i)}oolbox Essentials°dONLNdïÈú°(Ôún
  279. °dONLNdóÊ®Ú) Inside Macintosh: Mor¯Ä°dONLNd¨ÊÚ=)\e Macintosh TÆ°dONLNdπÊ=ÚV)9oolbox°dONLNd¿˜úÛ(úPIf your application is concerned with either text or graphics, you need to look °dONLNdú‰*at one or both of@°dONLNd!ÂÁ)I:°dONLNd#ú!°( ún
  280. °dONLNd%®#) Inside Macintosh: Imaging°dONLNd?,ú3°(2ún
  281. °dONLNdA)®5¯) Inside Macintosh: Tb°dONLNdT)¯5)Pext°dONLNdX:úF¢(CúY@Ä°dONLNdY:¢F)ou’ll also need to learn mor,¿°dONLNdu:FÃ)y(e about the main parts of the Macintosh °dONLNdùGúS(PúOperating System. „¿°dONLNdØGSˆ)TY§@°dONLNd∞GˆS√).ou can get most of the information you need frM†°dONLNdfiGƒSÓ)Œ    om these °dONLNdÁTú`©(]úthrX¿°dONLNdÍT©`—)    ee books:°dONLNdÙjúq°(pún
  282. °dONLNdˆg®s) Inside Macintosh: Memory°dONLNd|úÉ°(Çún
  283. °dONLNdy®Ö) Inside Macintosh: Files°dONLNd)éúï°(îún
  284. °dONLNd+ã®ó¸) Inside Macintosh: Pr3¿°dONLNd?ã˝ó)UocesseD`°dONLNdEãó)s°dONLNdGúú®Ω(•úSee the “°dONLNdOúΩ®Â)!Afterwor}@°dONLNdWúÊ®.))d, beginning on î@°dONLNdgú.®E)Hpage o °dONLNdlúF®U)183o °dONLNdoúU®Ç) , for a mor9†°dONLNdzúÉ®).e detailed description of °dONLNdî©úµ^(≤ú-the contents of these and other books in the ß °dONLNd¡©^µ£)¬Inside Macintoshâ °dONLNd—©§µ¡)F series.ˇ,@ˇ ˇˇˇˇ@
  285. ˇ·ˇ‚7^
  286. 4⁄∫˙, Palatino
  287. .Ñ`(·xiii    3, Ã(#∫PREF6Å)3ACE 4^H¿
  288. ^Hx4^Hx
  289. àHê4âHê äHä
  290. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNduHàç(ÉHThe New 3“°dONLNduèà)GInside MacintoshˇˇˇˇˇˇU˛(É0
  291. °dONLNdô∫•Ú(¢∫The original ΩÄ°dONLNd&ôÚ•7)8Inside MacintoshüÄ°dONLNd6ô8•°)F library of books appear@°dONLNdNô¢•˘)jed in six volumes frÛ °dONLNdbô¯•)Vom °dONLNde¶∫≤˜(Ø∫H1985 to 1991. Those volumes each focused on a particular version of the °dONLNd≠≥∫ø¸*system softwarM‡°dONLNdª≥˝øB)Ce, sometimes pr¥ °dONLNd ≥Bøà)Eompted by the r`†°dONLNdŸ≥âø’)Gelease of new har¥†°dONLNdÍ≥’øÏ)LdwarÏ`°dONLNdÓ≥ÏøÛ)e °dONLNd¿∫Ãœ(…∫confiC‡°dONLNdı¿–Ã≠)4gurations. Often, the later volumes of the original [@°dONLNd)¿≠ÃÚ)›Inside Macintosh=@°dONLNd9¿ÛÃı)F °dONLNd:Õ∫ŸV(÷∫!described only new system softwarX‡°dONLNd[ÕVŸ¯)ú$e components or changes to existing °dONLNd⁄∫ʸ(„∫system softwarM‡°dONLNdç⁄˝Ê:)C e components¥†°dONLNdô⁄:Ê<)=.°dONLNdõÏ∫¯‚(ı∫The new -¿°dONLNd£Ï„¯())Inside Macintosh¿°dONLNd≥Ï)¯Q)F     books arÄ°dONLNdºÏQ¯Ö)( e intended t∑¿°dONLNd»ÏÖ¯ê)4o rr@°dONLNdÀÏ믉) eplace the original ?`°dONLNdflϯˇ)TInside °dONLNdÊ˘∫‰(∫    MacintoshpÄ°dONLNdÔ˘Â,)+ books and to pr`°dONLNdˇ˘-b)H ovide a mor`°dONLNd
  292. ˘bπ)5e complete and mor“Ä°dONLNd˘π‚)W
  293. e useful r≤@°dONLNd&˘‚Ú))efer^`°dONLNd*˘Û)ence to °dONLNd2∫>(∫the Macintosh system softwarê¿°dONLNdN>Æ)Ñe. The most obvious impr'‡°dONLNdfØ    )qovement in the new °dONLNdy∫(∫books is that they ark¿°dONLNdé#)Ye orÔ‡°dONLNdí#    )4ganized principally by topic. For example, the book °dONLNdΔ ∫,()∫Inside Macintosh: FilesF‡°dONLNd› ,Ì)^3 contains virtually all the available information r¿‡°dONLNd Ì,)’
  294. elated to °dONLNd-∫9¿(6∫fiå¿°dONLNd-¿9∑)8les, including complete descriptions of the File Manager7°dONLNdT-∑9Ó)˜, the Standar»†°dONLNda-Ó9    )7d File °dONLNdh:∫FÛ(C∫Package, the ‡¿°dONLNdu:ÛF3)9Alias Manager
  295. `°dONLNdÇ:4F÷)A%, and the Disk Initialization Manager††°dONLNdß:’F)° . Similarlyª‡°dONLNd≤:F),, °dONLNd¥G∫S‚(P∫    the book _ °dONLNdΩG„S3))Inside Macintosh: TA °dONLNd–G3S?)Pextx†°dONLNd”G?S) - contains all information about handling text¢`°dONLNdGS)≈."`°dONLNdGS    ) °dONLNdT∫`(]∫This topic-oriented orK¿°dONLNdT`Î)`0ganization of books makes it easier for you to fiZÄ°dONLNdITÎ`    )—nd the °dONLNdPa∫m(j∫information you need«Ä°dONLNddamè)`. It also makes it easier for ††°dONLNdÇaèm)uApple to add books to the °dONLNdún∫zˇ(w∫Inside Macintoshb°dONLNd¨nzã)F suite as new technologies emerÊ@°dONLNdÀnãzÍ)ãge in the years ahead.°dONLNd‚Ä∫å@(â∫At the same time that the entir»@°dONLNdÄ@åü)Üe suite of books was r´Ä°dONLNdÄüå≠)_eor؆°dONLNdÄ≠å)ganized, the chapters °dONLNd0ç∫ôÎ(ñ∫ in the new â °dONLNd;çÎô0)1Inside Macintoshk °dONLNdKç1ôa)F
  296.  books werèÄ°dONLNdUçaôü)0e completely rÄ°dONLNdcç†ô)?ewritten. Information that °dONLNd~ö∫¶    (£∫may have been prW¿°dONLNdéö    ¶M)Oeviously scatter!¿°dONLNdûöN¶h)Eed acrº`°dONLNd§öh¶    )%oss multiple volumes of the original °dONLNd…ß∫≥ˇ(∞∫Inside Macintoshb°dONLNdŸß≥x)F is now combined into easilŒ¿°dONLNdÙßx≥Ö)xy a›‡°dONLNd˜ßÖ≥) ccessible chapters. Information °dONLNd¥∫¿(Ω∫that is no longer rÇ°dONLNd*¥¿Å)Nelevant or useful has been r∞Ä°dONLNdF¥Å¿˜)yemoved. Most importantly‡°dONLNd^¥˜¿ )v, the °dONLNdd¡∫Õœ( ∫new Ú°dONLNdh¡œÕ)Inside Macintosh‘°dONLNdx¡Õ!)F pr °dONLNd{¡"Õb)ovides far morñ†°dONLNdâ¡bÕÓ)@e explanatory material and sourW °dONLNd®¡ÔÕ)çce code °dONLNd∞Œ∫⁄G(◊∫samples than the original. Wher¶`°dONLNdœŒG⁄c)çe apprπ@°dONLNd’Œc⁄µ)opriate, material frT °dONLNdÈŒ∂⁄)Som the Macintosh °dONLNd˙€∫Á¿(‰∫Tµ¿°dONLNd˚€øÁ†)2echnical Notes has been incorporated into the new @Ä°dONLNd-€°ÁÊ)‚Inside Macintosh"Ä°dONLNd=€ÁÁ
  297. )F    . FinallyØÄ°dONLNdF€    Á)", °dONLNdHË∫ÙU(Ò∫#each chapter has been extensively rȆ°dONLNdkËUÙä)õ eviewed by @°dONLNdvËãÙ¯)6Apple engineers, testing °dONLNdèı∫4(˛∫personnel, and Developer T{Ä°dONLNd©ı4ê)zechnical Support staf4`°dONLNdæıëñ)]f.
  298. H#4    H#
  299. 3H;44H; 5H5
  300. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd¡ H3*(.HConventions Used in This BookˇˇˇˇˇˇU˛(.0
  301. °dONLNdflD∫Pˇ(M∫Inside Macintoshb°dONLNdÔDPâ)F uses various conventions to pr熰dONLNdDâPÊ)âesent information. W¬°dONLNd"DÂPÓ)\or¸Ä°dONLNd$DÓP)    ds that °dONLNd,Q∫]Ω(Z∫rE°dONLNd-Qæ]’)equir\@°dONLNd2Q’]) e special trw°dONLNd>Q]s)/eatment appear in specifiú¿°dONLNdWQs]Ù)o c fonts or font styles. Certain °dONLNdw^∫jb(g∫%information, such as parameter blocks1°dONLNdú^cjú)©, appears in s%@°dONLNd™^ùj):pecial formats so that you °dONLNd≈k∫wŸ(t∫can scaÓ‡°dONLNdÃkŸwÔ)n it qÑ °dONLNd“kw )uicklyŒ¿°dONLNdÿk
  302. w ).ˇd@ˇ ˇˇˇˇ@
  303. ˇ·ˇ‚7^
  304. 4⁄*˙¯, Palatino
  305. .(·*xiv    3, Ã(#úPREF6Å)3ACE 4^*¿¯
  306. k*r¯4l*r¯ múm(
  307. ˇ·ˇ‚7^,     Helveticaˇˇ‹.ˇ◊°dONLNd\úkÓ(gúSpecial Fontsˇˇˇˇˇˇ€r(g0
  308. °dONLNdrú~Ï({úAll code listings, r~ °dONLNd"rÏ~")P eserved worfi °dONLNd-r"~æ)6$ds, and the names of actual data str’°dONLNdQræ~’)úucturZ‡°dONLNdVr÷~‰)es, .°dONLNdZúã—(àú constants, fi°dONLNdg—ã9)5elds, parameters, and rR`°dONLNd~9ãe)h
  309. outines ar$¿°dONLNdàeãæ),e shown in Courier (,
  310. Courier$¿°dONLNdúæãÓ)Ythis is °dONLNd§åúòΔ(ïúCourier°dONLNd´åΔòÕ)*)..°dONLNdÆûú™¶(ßúWï°dONLNdØû•™Æ)    orœÄ°dONLNd±ûÆ™˚)    ds that appear in ¯†°dONLNd√û˚™")Mboldfaceg°dONLNdÀû#™.)( ar¨°dONLNdŒû.™¥) e key terms or concepts and ar˘‡°dONLNdÏû¥™Ã)Üe defi5†°dONLNdÚûÕ™Î)ned in °dONLNd˘´ú∑”(¥ú the Glossaryº`°dONLNd´“∑‘)6.
  311. ‹*„¯4›*„¯ fiúfi(
  312. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdÕú‹§(ÿúT$é°dONLNdÕ§‹˜)ypes of Notesˇˇˇˇˇˇ€r(ÿ0
  313. °dONLNd„úÔ∞(ÏúTher¿°dONLNd„±Ô¡)e ar`°dONLNd„¡ÔL)!e several types of notes used in ¡@°dONLNd?„LÔë)ãInside Macintosh£@°dONLNdO„íÔî)F.
  314. ˝* ¯4˛* ¯    °dONLNdQ¸úØ(úNote
  315. ˇ·ˇ‚7^
  316. °dONLNdV    ú£*A∫†°dONLNdW    £q)2 note like this contains information that is inter"°dONLNdâ    rÿ)œesting but possibly not °dONLNd°ú!Ÿ(úGessential to an understanding of the main text. (An example appears on °dONLNdË!ú-≥* page Z‡°dONLNdÌ!¥-π)8Z‡°dONLNdÓ!π-æ).),Zapf Dingbats.¿°dONLNd˘$ƒ,…) u
  317. :*H¯4;*H¯°dONLNd˚;úCª(AúIMPORTÄ°dONLNd;ªCÀ)ANT
  318. ˇ·ˇ‚7^
  319. °dONLNdFúR£(OúA∫†°dONLNdF£R°)> note like this contains information that is essential for an °dONLNdDRú^ò([ú7understanding of the main text. (An example appears on <†°dONLNd{Rô^∞)˝page Ä°dONLNdÄR±^∂)5Ä°dONLNdÅR∂^ª).)Î`°dONLNdåU¿]Δ)
  320. s
  321. k*y¯4l*y¯
  322. °dONLNdékàuê(sàs°dONLNdèlút•(rúWúÄ°dONLNdêl•t–)    ARNING
  323. ˇ·ˇ‚7^
  324. °dONLNdówúɶ(ÄúWï°dONLNdòw•ÉG)    'arnings like this indicate potential pr*‡°dONLNdøwHÉ’)£oblems that you should be awar…@°dONLNd›w’É‹)çe °dONLNdflÉúèO(åú)of as you design your application. Failur^†°dONLNdÉOè⁄)≥e to heed these warnings could °dONLNd'èúõü(òúrE°dONLNd(è†õb).esult in system crashes or loss of data. (TherT`°dONLNdVèbõr)¬e arc°dONLNdZèrõ—)e no warnings in this °dONLNdpõúß∑(§úbook.)U†°dONLNdûΩ¶√)!s
  325. ≠*»¯4Æ*»¯
  326. ÿ*‡¯4Ÿ*‡¯ ⁄*⁄˛
  327. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdÅ≈*ÿ6(”*DRÆ°dONLNdÇ≈7ÿ∑)evelopment EnvirS7°dONLNdí≈∏ÿÓ)ÅonmentˇˇˇˇˇˇU˛(”0
  328. °dONLNdôÈúıÚ(ÚúThe system softwar↰dONLNd´ÈÚı˝)Ve rò@°dONLNdÆÈ˝ıå) !outines described in this book ar+‡°dONLNdœÈçıŸ)êe available using °dONLNd·ˆú¬(ˇúBPascal, C, or assembly-language interfaces. How you access these r+†°dONLNd#ˆ√Â(ˇ√outines °dONLNd+ú6( ú depends on the development envir‘¿°dONLNdK6v)öonment you arù¿°dONLNdXwË)Ae using. This book shows °dONLNdqúfi(úsystem softwarM‡°dONLNdflÍ)Ce r\Ä°dONLNdÇÍ“) 6outines in their Pascal interface using the Macintosh °dONLNd∏ú)•(&úPrN†°dONLNd∫¶)‘)
  329. ogrammergÄ°dONLNd¬’)Ë)/’s W¿°dONLNdΔË)1)orkshop (MPW).°dONLNd’/ú;%(8ú!All code listings in this book arr¿°dONLNdˆ/%;fl)â(e shown in Pascal. They show methods of °dONLNd<úHfi(Eúusing various r ‡°dONLNd-<flHÒ)C?outines and illustrate techniques for accomplishing particular °dONLNdlIúU∑(Rútasks. m °dONLNdsI∑U–)AAll code listings have been compiled and, in most cases, tested. °dONLNd¥Vúb≈(_úHowever †°dONLNdªV≈b )), Æ@°dONLNdΩV…bÓ)?Apple Computer does not intend that you use these code samples °dONLNd¸cúoÚ(lúin your application.°dONLNduúÅ*This book occasionally uses  °dONLNd-uÅ$)}GrÙ@°dONLNd/u#Å*)
  330. eeªÄ°dONLNd1u+Å7)tM†°dONLNd3u8Å;)ec@°dONLNd4u<ÅQ) and P`°dONLNd9uRÅY)VùÄ°dONLNd:uXÅù)enn Diagrammer«¿°dONLNdHuùÅÊ)E as the names of °dONLNdYÇúéà(ãú7sample applications for illustrative purposes; these ar¢°dONLNdêÇàé«)Ïe not actual prfi °dONLNdüÇ«éÚ)?
  331. oducts of °dONLNd©èúõÁ(òúApple Computer(Ä°dONLNd∑èÁõ˘)K, Inc»†°dONLNdºè˘õ˚).ˇ∫@ˇ ˇˇˇˇ@
  332. ˇ·ˇ‚7^
  333. 4⁄∫˙, Palatino
  334. .‡(· xv    3, Ã(#∫PREF6Å)3ACE 4^H¿
  335. ^Hx4^Hx
  336. àHê4âHê äHä
  337. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNduHàÇ(ÉHFor Morõ”°dONLNduÉàÂ);e InformationˇˇˇˇˇˇU˛(É0
  338. °dONLNdô∫•◊(¢∫APDAH¿°dONLNdô◊•„) is ¿°dONLNdô„•O) Apple’s worldwide sour¯ °dONLNd3ôN•å)kce for over thr¿°dONLNdBôç•¥)?ee hundrº†°dONLNdJô¥•˛)'ed development °dONLNdY¶∫≤(Ø∫tools, technical rw¿°dONLNdk¶≤)Hesour¿°dONLNdp¶≤\)ces, training prµ†°dONLNdĶ\≤˚)B#oducts, and information for anyone °dONLNd£≥∫øŒ(º∫inter
  339. ¿°dONLNd®≥œøn)$ested in developing applications on M`°dONLNdÃ≥nøÚ)üApple platforms. Customers rj°dONLNdË≥Úø)Ñeceive °dONLNdÔ¿∫Ãı(…∫the quarterly f`°dONLNd˝¿ˆÃ)<APDA[@°dONLNd¿Ã) T€@°dONLNd¿ÃL)ools Catalog ~°dONLNd¿MÃó)4featuring all curr @°dONLNd"¿òÀ)Kent versions of Ù`°dONLNd2¿⁄Ø)BApple °dONLNd8Õ∫ŸÄ(÷∫+development tools and the most popular thirÈ¿°dONLNdcÕÄŸ˙)Δd-party development tools. °dONLNd~⁄∫Ê≈(„∫Or ‡°dONLNdÄ⁄ΔÊ) dering is easy; therü@°dONLNdî⁄Ê))Se ar≠‡°dONLNdò⁄)Ê˚).e no membership fees, and application forms arΔ‡°dONLNdΔ⁄˚Ê)“e not °dONLNdÃÁ∫ÛΩ(∫rE°dONLNdÕÁæÛ’)equir\@°dONLNd“Á’Û1)ed for most of our prF@°dONLNdÁÁ1ÛS)\oducts. o‡°dONLNdÔÁSÛp)"APDA8†°dONLNdÛÁpÛ{) ofT`°dONLNdˆÁ{Û˛) fers convenient payment and °dONLNdÙ∫r(˝∫+shipping options, including site licensing.°dONLNd>∫¿*Tµ¿°dONLNd?ø–)o or¿°dONLNdC–Î)der pr‡°dONLNdIÏ')oducts or to rÒ‡°dONLNdW&Δ):#equest a complimentary copy of the Ç@°dONLNdz«„)°APDAw °dONLNd~„Î) T˜ °dONLNdÄ͸)ools °dONLNdÖ∫Ÿ(∫Catalogó`°dONLNdåŸ)
  340. , contact °dONLNdó%∫1◊(.∫APDAH¿°dONLNdõ%◊1Ÿ) °dONLNdù2∫>(;∫Apple Computer(Ä°dONLNd´2>)K, Inc. °dONLNd≥?∫K¿(H∫P?†°dONLNd¥?øK) .O. Box 319°dONLNd¿L∫X…(U∫Buf… °dONLNd√L…XÌ)falo, NYG†°dONLNdÀLÓX )%  14207-0319°dONLNd§‹∫ËΩ(Â∫IfiÄ°dONLNd•‹Ωˇ)f you pr@°dONLNd≠‹·Ë )$ ovide commerã °dONLNdπ‹ Ë;)?cial pr@°dONLNd¿‹<ËÛ)+oducts and services, call 408-974-4897 for °dONLNdÎÈ∫ım(Ú∫'information on the developer support pr  °dONLNdÈnı¬)¥ograms available fr‹‡°dONLNd%Ȭı“)Tom H°dONLNd(È”ı)Apple.°dONLNd/˚∫(∫For information of rA°dONLNdC˚e)Xegistering signatur°dONLNdV˚ey)Ses, fi.`°dONLNd\˚y†)
  341. le types, ‹@°dONLNdf˚ü )&Apple events, and other °dONLNd~∫=(∫technical information, contact°dONLNdù∫&!*Macintosh Developer T.@°dONLNd≤!&k)gechnical Support°dONLNd√'∫3(0∫Apple Computer(Ä°dONLNd—'3)K, Inc.°dONLNdÿ4∫@˚(=∫20525 Mariani +†°dONLNdÊ4˚@)AA‡°dONLNdÁ4@Q)venue, M/S 75-3T°dONLNd¯A∫M˚(J∫Cupertino, CA¿°dONLNdA˚M()A
  342.  95014-629Û†°dONLNdA(M-)-9
  343. [Hi4\Hi,     Helvetica°dONLNd\∫dŸ(b∫IMPORTÄ°dONLNd\ŸdÈ)ANT
  344. ˇ·ˇ‚7^
  345. °dONLNdg∫sÙ(p∫See the sectioGÄ°dONLNd)gıs˝);n ò‡°dONLNd+g˝sx)“Using Developer Services”˙Ä°dONLNdEgxs∑){ beginning on u¿°dONLNdSg∏sœ)@page P†°dONLNdXg–sfl)189P†°dONLNd[gfls‰) iπ°dONLNd]g‰s¸)n the °dONLNdcs∫‚(|∫Afterwor+@°dONLNdks„))    d for morÄ°dONLNdtsg)*e information about ˛¿°dONLNdàsfº)YApple developer pr¥‡°dONLNdösΩÛ)W ograms and °dONLNd•∫ãfl(à∫    services.,Zapf Dingbats˛¿°dONLNd∑ljäÍ)*s
  346. °dONLNd÷^∫j¿(g∫Tµ¿°dONLNd◊^øjÁ)elephone… °dONLNd‡^jê)U800-282-2732 (United States)… °dONLNd˝iuw* 800-637-0029 (Canada)… °dONLNdtÄè* 716-871-6555 (International)°dONLNd1Ñ∫ê…(ç∫Fax… °dONLNd5ÑêG)Z 716-871-651‰@°dONLNd@ÑGêN)31 °dONLNdDî∫†È(ù∫    AppleLink… °dONLNdNî†1)ZAPDA°dONLNdT§∫∞(≠∫America Online… °dONLNdc§∞1)ZAPDA°dONLNdi¥∫¿Û(Ω∫
  347. CompuServe… °dONLNdt¥¿C)Z
  348. 76666,2405°dONLNdă∫–›(Õ∫Internet… °dONLNd⃖ì)ZAPDA@applelink.apple.comˇJ@ˇ ˇˇˇˇ@
  349. ˇ·ˇ‚7^
  350. 4^*¿¯ˇ¨@ˇ ˇˇˇˇ@
  351. ˇ·ˇ‚7^
  352. 4⁄∫˙,     Helvetica    .(‡∫Contents, Palatino
  353. (‡1    3, Ã(#∫CHAPTER ßí)h1
  354. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  355. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  356.  
  357.  
  358.  
  359.  
  360.  
  361. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  362. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  363. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  364.  
  365.  
  366.  
  367.  
  368.  
  369. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˜˙ˇˇ˙ˇ˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜ˇˇˇˇˇˇ(JH
  370. Figure 1-0*     Listing 1-0*    T)able 1-0
  371. zH,
  372. 4zH, H°dONLNdˇˇ+m Contentsˇˇˇˇˇˇ
  373. ˇ·ˇ‚7^ˇˇ∫Ρ◊(qH1°dONLNdˇˇ)rIntr4 °dONLNdˇˇ)+oductio2    °dONLNdˇˇ)Yn
  374. °dONLNdˇˇ(D∫Getting Started‘‡°dONLNdˇˇ)W3°dONLNdˇˇ(Q∫The Macintosh System Softwart†°dONLNdˇˇ)âe>@°dONLNdˇˇ)6°dONLNdˇˇ(^ƒThe Macintosh T◊°dONLNdˇˇ)Ioolbox– °dONLNdˇˇ)27°dONLNdˇˇ(kƒThe Macintosh Operating System2†°dONLNdˇˇ)®1¶°dONLNdˇˇ)1°dONLNdˇˇ(xƒAdditional System SoftwarÄ°dONLNdˇˇ)x
  375. e Services_†°dONLNdˇˇ)?12°dONLNdˇˇ(ÖŒTµ¿°dONLNdˇˇ) ext Handling⁄ °dONLNdˇˇ)N12°dONLNdˇˇ(íŒInterapplication Communicationº†°dONLNdˇˇ)•14°dONLNdˇˇ(üŒQuickTfi‡°dONLNdˇˇ) imed‡°dONLNdˇˇ)%17°dONLNdˇˇ(¨ŒCó°dONLNdˇˇ)ommunications TJ°dONLNdˇˇ)MoolboxC °dONLNdˇˇ)218°dONLNdˇˇ(πƒSystem SoftwarS`°dONLNdˇˇ)E
  376. e Routines `°dONLNdˇˇ)B19°dONLNdˇˇ(Δ∫ The Sample •@°dONLNdˇˇ)6 Application#`°dONLNdˇˇ)I21°dONLNdˇˇ(”∫Conventions for Sample CodeCÄ°dONLNdˇˇ)ô24ˇJ@ˇ ˇˇˇˇ@
  377. ˇ·ˇ‚7^
  378. 4^*¿¯ˇ.¸@ˇ ˇˇˇˇ@
  379. ˇ·ˇ‚7^, Palatino&e.3+ä"CHAPTER ”)>1
  380. 4⁄ä˙,     Helvetica    (‡äGetting Started
  381. (‡3
  382. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  383. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  384.  
  385.  
  386.  
  387.  
  388.  
  389. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  390. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  391. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  392.  
  393.  
  394.  
  395.  
  396.  
  397. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˜˙ˇˇ˙ˇ˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  398. 4Å4w?òÄ
  399. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  400. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  401.  
  402.  
  403.  
  404.  
  405.  
  406. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˜˙ˇ˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛¸ˇˇ
  407. ˇ˛ˇ˛¸ˇ˛¸ˇ˝˚ˇ˛˛˛ˇ˝
  408. ˇ˛ˇ˛
  409. ˇ˛ˇ˛˛˛ˇ˝˜˛˛ˇ˝
  410. ˇ˛ˇ˛
  411. ˇ˛ˇ˛˙ˇ˜˛˝ˇ˛ˇ˙˛ˇ˚¸ˇ˛˜˛˛ˇ˝
  412. ˇ˛ˇ˛
  413. ˇ˛ˇ˛˛ˇˇ˝˜˛¸ˇˇ
  414. ˇ˛ˇ˛    ¸ˇˇ˜˛˛ˇ˝
  415. ˇ˛ˇ˛
  416. ˇ˛ˇ˛˛˛ˇ˝˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜    ˇˇ—ÚˇÆ°dONLNd8äC≤(@ä Introductioá÷°dONLNd 8≤C∂)(nˇˇˇˇˇˇ≠>(@1
  417. °dONLNd\ähî(eäWï°dONLNd\ìh&)    !elcome inside. This chapter begin‡°dONLNd/\'hD)îs the d9°dONLNd6\DhÑ)iscussion of prÄ°dONLNdE\Ñh˙)@ogramming for Macintosh °dONLNd]iäu6(rä&computers by describing the general or: °dONLNdÉi7uÉ)≠ganization of the `°dONLNdïiÑu)MMacintosh system software¿°dONLNdÆiu)|,ˇ¿°dONLNdØiu ) a °dONLNd≤väÇΔ(äcollection of rp`°dONLNd¡vΔÇÌ)<Boutines that you’ll use to simplify your development of Macintosh °dONLNdÉäè(åä applications. The system softwar}Ä°dONLNd#Éè,)ëe pré@°dONLNd'É,è≠)ovides, among other things, r‡°dONLNdDÉÆè
  418. )Çoutines that you can °dONLNdYêäúØ(ôä    use to crz‡°dONLNdbêØú)%Oeate and manage the essential parts of your application’s user interface. This °dONLNd±ùä©ı(¶ächapter illustrates the or’Ä°dONLNdÀùı©ª)k,ganization and content of the system softwarH†°dONLNd˜ùº©)«e by dissecting a °dONLNd    ™ä∂(≥ävery simple sample application.
  419. ΩHÿ4æHÿ
  420. ËH4ÈH ÍHÍ
  421. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd)’HË¥(„HGetting StartedˇˇˇˇˇˇU˛(„1
  422. °dONLNd9˘ä(ä"Let’s begin by looking at the sour¶†°dONLNd[˘ÿ)ì+ce code for a simple application. Consider '@°dONLNdܢŸ)º Listing 1-1«Ä°dONLNd뢠   )..
  423. (H04)H0")H_
  424. ˇ·ˇ‚7^    °dONLNdìä)∂(&ä Listing 1-1°dONLNdüŒ)‘)DA0°dONLNd†‘)I) simple Macintosh application,
  425. Courier
  426. .°dONLNdæ8HD®(AHPROGRAM GreetMe;°dONLNdœFHRZ*VAR°dONLNd‘TZ`ä+gWindow:°dONLNd‡T¢`fi)H
  427. WindowPtr;°dONLNdÒT `»)~{pointer to a window record}°dONLNdbZnä(kZgString:°dONLNdb¢nÃ)HStr255;°dONLNd)b nn)~{the string t°dONLNd6bnn™)N
  428. o display}°dONLNdBpZ|~(yZgRect:°dONLNdLp¢|¿)HRect;°dONLNdXp |∞)~{the window’s rectangle}°dONLNdq~Häf(áHBEGIN°dONLNdxåZòÃ+InitGraf(@thePort);°dONLNdñå ò§)Δ{initialize QuickDraw}°dONLNdÆöZ¶ñ(£Z
  429. InitFonts;°dONLNd√ö ¶∂)Δ{initialize Font Manager}°dONLNdfi®Z¥¢(±Z InitWindows;°dONLNdı® ¥¬)Δ{initialize Window Manager}°dONLNd∂Z¬ñ(øZ
  430. InitCursor°dONLNd∂ñ¬ú)<;°dONLNd(∂ ¬&)ä{°dONLNd)∂&¬Ú)"initialize the cursor to an arrow}°dONLNdY“ fi&(€ {°dONLNdZ“&fi‡)set the position of the window}°dONLNd{‡ZÏ,(ÈZ#SetRect(gRect, 100, 100, 400, 200);°dONLNd†ÓZ˙ˆ*gString := 'Hello, world!'°dONLNd∫Óˆ˙¸)ú;°dONLNdΔÓ ˙&)*{°dONLNd«Ó&˙§)set the greeting to b°dONLNd‹Ó§˙Ï)~ e displayed}°dONLNdˆ
  431.  D( {creat°dONLNd¸
  432. Db)$e a w°dONLNd
  433. bÜ)indow}°dONLNd    Z$Ï(!ZCgWindow := NewWindow(NIL, gRect, '', TRUE, dBoxProc, WindowPtr(-1),°dONLNdU&ÿ2+~  FALSE, 0);°dONLNdb4Z@¿(=ZSetPort(gWindow);°dONLNd~4 @‘)Δ{set the current drawing port}°dONLNdûBZN‰(KZWITH gWindow^.portRect °dONLNdµB‰N)äDO°dONLNd¬B NŒ)<{set the position of the pen}°dONLNd‚Pl\∞(Yl6MoveTo(((right - left) DIV 2) - (StringWidth(gString) °dONLNdP∞\¬(Y∞DIV°dONLNdP¬\⁄) 2),°dONLNd%^¢j&(g¢(bottom - top) DIV 2);°dONLNd=lZxÿ(uZTextFont(systemFont);°dONLNd]l xt)Δ{set the font}°dONLNdmzZÜ“(ÉZDrawString(gString);°dONLNdåz ÜÜ)Δ{draw the string}°dONLNd†ñZ¢~(üZREPEAT°dONLNd±ñ ¢)Δ({loop until the mouse button is pressed}°dONLNd€§Z∞®(≠ZUNTIL Button;°dONLNdÈ≤Hæ`(ªHEND.ˇ∏@ˇ ˇˇˇˇ@
  434. ˇ·ˇ‚7^
  435. 4*\¯, Palatino&e.3+l"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@l Introduction4⁄*˙¯
  436. (‡*4    )BGetting Started4^*¿¯
  437. °dONLNd\lhø(elThe application GrX¿°dONLNd\øhÌ)S    eetMe defifl`°dONLNd\Ìh).ned by ¨‡°dONLNd#\h<)! Listing 1-1M °dONLNd.\=hÎ)/% simply displays the window shown in °dONLNdSiluÑ(rlFigurR¿°dONLNdXiÑuò)e 1-1@°dONLNd]iòu) and exits as soon as the use‡°dONLNdziu$)|r prO†°dONLNd~i$u@)esses t\@°dONLNdÖi@uå)he mouse button.
  438. ó*®¯4ò*®¯"ò*]
  439. ˇ·ˇ‚7^    °dONLNdñçlòñ(ïl
  440. Figure 1-1°dONLNd°çÆòc)B,The window created by the simple application
  441. °dONLNdŒl√(lThis application is r∏¿°dONLNd„√4)Wemarkably simple, but als{@°dONLNd¸5Y)r    o quite rJ`°dONLNdZÊ)%evealing about some important °dONLNd#l&‘(#laspects of Macintosh prÓ`°dONLNd:‘&v)h$ogramming. Consider the call that cr€Ä°dONLNd^v&Ô)¢eates the window in which °dONLNdx'l3Ö(0lthe gr1Ä°dONLNd~'Ü3Ã)eeting is drawn:,
  442. Courier.°dONLNdè>lJ§(Gl4gWindow := NewWindow(NIL, gRect, '', TRUE, dBoxProc,°dONLNdÀLÍXÜ+~ WindowPtr(-1), FALSE, 0);°dONLNdÊdlp¥(mlThis call to the °dONLNd˜d¥pÍ)H    NewWindow°dONLNddÍp)6  function crR`°dONLNd dpû)0eates a window at the specifiR`°dONLNd)dûpÂ)Ñed location in fr$¿°dONLNd:dÂpı)Gont °dONLNd>ql}(zl"of any existing windows on the scrR`°dONLNd`q},)ò    een. The R`°dONLNdiq,}b)(    NewWindowR`°dONLNdrqb}Á)6 function is a good example of .°dONLNdë~lä¢(álthe kind of r–`°dONLNdû~¢äŒ)6
  443. outines prñ‡°dONLNd®~œäQ)-ovided by the system softwarfi °dONLNdƒ~Qäz)Ç
  444. e. These rØ °dONLNdŒ~{ä£)*    outines g=†°dONLNd◊~§äß))r†°dONLNdÿ~®ä˜)eatly simplify the °dONLNdÎãlót(îlcrµ@°dONLNdÌãtóŒ)eation of the standarH¿°dONLNdãœó÷)[<d “look and feel” of Macintosh applications. By using these °dONLNd>òl§o(°lrE°dONLNd?òp§”)outines, you can ensurµ‡°dONLNdUò”§‡)c?e that your application conforms as closely as possible to the °dONLNdî•l±ç(Ælstandar±Ä°dONLNdõ•ç±g)!1d Macintosh user interface and hence that users fi¨‡°dONLNdÕ•h±„)€nd your application easy to °dONLNdÈ≤læ©(ªllearn and use.ˇˇç6.°dONLNd¯ƒl–*(Let’s take a closer look at the call to ˇ˛ß¢vÊ°dONLNd ƒ–D)¢    NewWindowˇˇç6ãÊ°dONLNd)ƒC–[)5. The ˇ˛ß¢¶R°dONLNd/ƒ[–ë)    NewWindowˇˇç6¶R°dONLNd8ƒë–º)6  function rì°dONLNdCƒº–”)+equire~°dONLNdHƒ”–¯)    es eight .°dONLNdQ—l›¯(⁄lparameters, whose meanings ar¨`°dONLNdn—¯›7)åe described in ä`°dONLNd}—8›>)@T¿ °dONLNd~—=›_)able 1-1Õ†°dONLNdÜ—_›a)".
  445. *¯4*¯ l¯
  446. ˇ·ˇ‚7^    °dONLNdàˆlì(˛l    Table 1-1.°dONLNd툙)>Parameters passed to 
  447. °dONLNdßı;)[    NewWindow    °dONLNd∞ˆ;F)6 in °dONLNd¥ˆFp) Listing 1-1°dONLNdˇˇ)* .°dONLNdÀlò(l    ParameterÏj°dONLNd’÷˙)jMeaning
  448. .°dONLNdfil(~(%lNIL.Ïj°dONLNd‚÷(˛)jThe addr$™°dONLNd͡(L))ess of a window rÔ™°dONLNd˚L(^)Mecord
  449. °dONLNdˇ_(í)d, a data str;Í°dONLNd ì(™)4uctur¡ °dONLNd™(Ï)e that contains .Ïj°dONLNd!'÷3s(0÷ information about the new windowj°dONLNdA's3´)ù. Specifying j°dONLNdN'´3Ω)8NIL£
  450. °dONLNdQ'º3‹) as the .Ïj°dONLNdY2÷>Î(;÷addrËÍ°dONLNd]2Î>$)ess of this str
  451. °dONLNdl2%><):ucturíÍ°dONLNdq2<>W)e instrÙJ°dONLNdx2W>æ)ucts the system softwarñJ°dONLNdè2ø>ı)he to allocate Ïj°dONLNdù=÷IÌ(F÷that ráä°dONLNd£=ÓI)equirû °dONLNd®=IM)ed storage itself..°dONLNdºOl[ä(XlgRect.Ïj°dONLNd¬O÷[I)jThe window’s bounding r$™°dONLNdŸOJ[ß)tectangle. This is the r™°dONLNdOß[·)]ectangle that Ïj°dONLNd˛Z÷fG(c÷encloses the new windowˆä°dONLNdZGfØ)q. The values of the desir≈*°dONLNd.Z∞f¡)ied rÔä°dONLNd2Z¡fÒ) ectangle ar√J°dONLNd=ZÒf¯)0e .Ïj°dONLNd?e÷qÙ(n÷specifiÏj°dONLNdFeÙq*) ed by the præ °dONLNdRe*qI)6evious æ °dONLNdYeIqh)call to æ °dONLNdaehqå)SetRecæ °dONLNdgeåqí)$tæ °dONLNdheíqï),æ °dONLNdieïq…)
  452.  which defiæ °dONLNdte…q‰)4nes thæ °dONLNdze‰qÎ)e .Ïj°dONLNd|p÷|(y÷upperÜj°dONLNdÅpÒ|
  453. )-left a¢ä°dONLNdàp
  454. |1)nd lowerS*°dONLNdêp2|9)(-rô™°dONLNdíp9|G)igh‚ä°dONLNdïpG|Q)t c*°dONLNdòpR|ê) orners of the r3™°dONLNdßpê|∑)>    ectangle..°dONLNd≤Çléx(ãl''.Ïj°dONLNdµÇ÷éø)j3The window’s title. The new window has no title barúä°dONLNdËÇøé‚)È
  455. , so this Ïj°dONLNdÚç÷ô,(ñ÷parameter is specifiÍ°dONLNdç-ôë)Wed as the empty string.
  456. ßjı¯òÄ(t<HHL°¨ˇˇˇˇˇˇt<®lÛ:⁄ˇĀĀü€ˇîü€ˇîò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îòÙ``˝ÅåÙîòÙ``˝ÅåÙîòÙ
  457. cΔc¿f<mèåÙîòÙ˛f`ffqôåÙîòÙ
  458. Êff`ffaôåÙîòÙ
  459. gÊf`ffaôåÙîòÙ
  460. ff`ffaôÄÙîòÙ
  461. f&ffdfaôåÙîòÙ
  462. cΔcΔ¯<aèåÙî òÓî òÓîò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îò‹îü€ˇîü€ˇîĀĀ⁄ˇÙˇ@@ˇ ˇˇˇˇ@
  463. ˇ·ˇ‚7^
  464. 4H\, Palatino&e.3+ä"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@ä Introduction4⁄ä˙(‡äGetting Started
  465. (‡5
  466. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  467. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  468.  
  469.  
  470.  
  471.  
  472.  
  473. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  474. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  475. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  476.  
  477.  
  478.  
  479.  
  480.  
  481. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˜˙ˇˇ˙ˇ˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  482. 4Å4w?òÄ
  483. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  484. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  485.  
  486.  
  487.  
  488.  
  489.  
  490. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˜˙ˇ˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛¸ˇˇ
  491. ˇ˛ˇ˛¸ˇ˛¸ˇ˝˚ˇ˛˛˛ˇ˝
  492. ˇ˛ˇ˛
  493. ˇ˛ˇ˛˛˛ˇ˝˜˛˛ˇ˝
  494. ˇ˛ˇ˛
  495. ˇ˛ˇ˛˙ˇ˜˛˝ˇ˛ˇ˙˛ˇ˚¸ˇ˛˜˛˛ˇ˝
  496. ˇ˛ˇ˛
  497. ˇ˛ˇ˛˛ˇˇ˝˜˛¸ˇˇ
  498. ˇ˛ˇ˛    ¸ˇˇ˜˛˛ˇ˝
  499. ˇ˛ˇ˛
  500. ˇ˛ˇ˛˛˛ˇ˝˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿.°dONLNdqΩä…ê(ΔäT°dONLNdrΩê…û)he ,
  501. Courier°dONLNduΩû…‘)    NewWindow°dONLNd~Ω‘…)6  function rR`°dONLNdâΩ…l),eturns a window pointerï°dONLNd†Ωk…¬)k, which is the addrg`°dONLNd≥Ω¬…)Wess in memory of a .°dONLNdΔ ä÷µ(”äwindow ræ°dONLNdŒ µ÷«)+ecor2`°dONLNd“ »÷)d. The window r«‡°dONLNd· ÷#)Iecor<@°dONLNd $÷)2d contains important information about the window °dONLNd◊ä„œ(‡ä(such as its curr≠`°dONLNd(◊œ„/)Eent location on the scra°dONLNd?◊0„x)aeen and the curr? °dONLNdO◊x„
  502. )H%ent font and size of text that is to °dONLNdt‰äå(Ìä7be drawn in the window). When you call a system softwars°dONLNd´‰åó(Ìåe rņ°dONLNdƉó) outine to perform some °dONLNd≈Òä˝Ò(˙äoperation on a window˙`°dONLNd⁄Ò˝)f@, you’ll typically pass a window pointer as a parameter to that .°dONLNd˛ä
  503. é(ärR`°dONLNd˛é
  504. ˜)outine. For example, in R`°dONLNd3˛˜
  505. ')i Listing 1-1R`°dONLNd>˛'
  506. œ)0&, the window pointer is passed to the R`°dONLNdd˛œ
  507. ˘)®SetPortR`°dONLNdk˛˘
  508. ˚)* .°dONLNdl äì(äprG °dONLNdn î≤)
  509. ocedurfi`°dONLNdt ≤O)#e to set the new window as the curr∫†°dONLNdó O¨)ùent drawing windowT@°dONLNd© ¨Æ)].
  510. %H34&H3°dONLNd´&ä.©(,äIMPORTÄ°dONLNd±&©.π)ANT
  511. ˇ·ˇ‚7^
  512. .°dONLNdµ1ä=ë(:äYï°dONLNd∂1ê=“)ou need to call ï°dONLNdΔ1“=¸)BSetPortï°dONLNdÕ1¸=)* beforg`°dONLNd”1=§) e you do anything at all that af9¿°dONLNdÛ1§=Õ)è
  513. fects the .°dONLNd˝=äIÈ(Fäcontents of a windowÎ@°dONLNd=ËIø)^0, such as drawing graphics or text in the windowÀ`°dONLNdA=øIƒ)◊, °dONLNdCIäU[(Rä/or even just erasing the contents of the window∏`°dONLNdrIZU\)–.,Zapf Dingbats8`°dONLNd|LbTh)s
  514. .°dONLNd~Zäf(cäAnother notable element of °dONLNdôZf7)} Listing 1-1°dONLNd§Z7fU)0 is the °dONLNd¨ZUfë)
  515. DrawString°dONLNd∂Zëfù)< prR`°dONLNdπZùf∫) ocedur$¿°dONLNdøZ∫fÍ)
  516. e, which d$¿°dONLNd…ZÍf)0    raws the .°dONLNd“gäs¶(päspecifiÓ °dONLNdŸg¶s˝)ed string in the currTÄ°dONLNdÓg˛sP)Xent font at the curr]¿°dONLNd    gPsÛ)R&ent drawing location. By default, the °dONLNd    (täÄú(}äcurrØ°dONLNd    ,túÄz)0ent drawing location in a new window is the uppev‡°dONLNd    \t{Ä~)flr;‡°dONLNd    ]tÄÖ)-lx °dONLNd    _tÖÄØ)
  517. eft corner†°dONLNd    itØÄÈ)*. In this case, .°dONLNd    yÅäçé(äärR`°dONLNd    zÅéçX)+emaining at that location would make the gr$¿°dONLNd    •ÅXçÑ) 
  518. eeting unr˜ °dONLNd    ØÅÉç—)+eadable, because ˜ °dONLNd    ¿Å—ç)N
  519. DrawString˜ °dONLNd     Åç)< .°dONLNd    ÀéäöÊ(óäuses the vertical coor.@°dONLNd    ·éÁö)]
  520. dinate of Ÿ °dONLNd    Îéö ))the 6Ä°dONLNd    Ôé!ö3)curreÄ°dONLNd    Ûé3ö )5ent point as the baseline of the text to be printed. .°dONLNd
  521. (õäߺ(§ä Instead, GrR`°dONLNd
  522. 3õºß)2eetMe calls the R`°dONLNd
  523. Cõß()HMoveToR`°dONLNd
  524. Iõ(ß4)$ pr$¿°dONLNd
  525. Lõ4ßQ) ocedur˜ °dONLNd
  526. RõPßü)e to move the curr…Ä°dONLNd
  527. dõüß)Oent pen location to a point .°dONLNd
  528. Į䥟(±äthat centers the grŒÄ°dONLNd
  529. 쮟¥9)Oeeting in the window:.°dONLNdÇäé¢(ãäTRUE.Ïj°dONLNdÇÙé)j<An indication of whether the new window should initially be .Ïj°dONLNdAçÙô°* )visible or not. This parameter is set to Ïj°dONLNdjç°ôπ)≠TRUEÏj°dONLNdnçπô) to indicate that the .Ïj°dONLNdÑòÙ§ò(°Ù$window is indeed to be made visible..°dONLNd™™ä∂∫(≥ädBoxProc.Ïj°dONLNd≥™Ù∂ê)j!The type of window you want to crÎj°dONLNd‘™ê∂)úeate. The Macintosh user Ïj°dONLNd̵١(æÙinterfachÍ°dONLNdıµ¡J)" e includes anj°dONLNdµJ¡V)4 grBä°dONLNdµV¡Ô) #eat variety of window types for difÌÍ°dONLNd'µÔ¡˚)ôfer–j°dONLNd*µ˚¡ ) ent Ïj°dONLNd.¿ÙÃ=(…Ùpurposes. For pr·Í°dONLNd>¿=õ)Iesent purposes, the standarãÍ°dONLNdY¿∂Ã)yd modal dialog box .Ïj°dONLNdlÀÙ◊(‘Ùis appræ °dONLNdsÀ◊v) opriate. The constant æ °dONLNdâÀv◊¶)bdBoxProcæ °dONLNdëÀ¶◊À)0 identifiæ °dONLNdöÀÀ◊)%es that type of .Ïj°dONLNd™÷Ù‚(flÙwindow˙j°dONLNd∞÷‚)$..°dONLNd≥ËäÙÿ(ÒäWindowPtr(-1).Ïj°dONLNd¡ËÙÙ±)j+The new window’s initial plane (or layer) rZ °dONLNdÏË≤Ù    )æelative to any other Ïj°dONLNdÛÙˇ(¸Ù<existing windows. This parameter is a window pointer to the Ïj°dONLNd=˛Ù
  530. * window ej°dONLNdD˛
  531. [)(behind which ØÍ°dONLNdQ˛[
  532. ˙)? you want the new window to appeatä°dONLNdq˛˚
  533. ˛)†r© °dONLNdr˛˛
  534. ).) °dONLNds˛
  535. ) The Ïj°dONLNdx    Ù6(Ùsystem softwar∫J°dONLNdÜ    7B)Ce r»Í°dONLNdâ    B—)  ecognizes two special values her °dONLNd©    “)êe. If you pass ˇ˛—f.Ïj°dONLNd∏Ù (ÙNILˇˇõ"é
  536. °dONLNdª V) in this parameter¢°dONLNdÕV Ã)P, the new window appears ©∫°dONLNdÊàÏ)vbehind©∫°dONLNdÏÏ )   all other .Ïj°dONLNd˜Ù+÷((Ù0windows. If you pass –1, the new window appears ¢ä°dONLNd'◊+Ë)„in frˆ*°dONLNd,Ë+ˇ)ont ofÍ°dONLNd2+) all .Ïj°dONLNd7*Ù6t(3Ùother windows. Because the Ïj°dONLNdR*t6™)Ä    NewWindowÏj°dONLNd[*™6˝)6 function expects a .Ïj°dONLNdo5ÙAâ(>Ù window pointer in this parameter€Í°dONLNdè5âA¸)ï, you need to typecast the .Ïj°dONLNd™@ÙLK(IÙspecial value –1 as Ïj°dONLNdæ@KLô)WWindowPtr(–1)Ïj°dONLNdÀ@ôLú)N.°dONLNdŒRä^®([äFALSE.Ïj°dONLNd‘RÙ^)jAAn indication of whether the window has a close box or not. This ˇˇ˙\.Ïj°dONLNd]ÙiI* parameter is set to ˇˇÔ’⁄°dONLNd)]Jih)VFALSEˇˇ˙\’⁄°dONLNd.]hi    )' to indicate that no close box is desir{°dONLNdU]
  537. i)¢ed.°dONLNdZoä{ê(xä0.Ïj°dONLNd\oÙ{U)jAn application-specifi}Í°dONLNdroV{`)bc r3*°dONLNduoa{q) eferflJ°dONLNdyoq{™) ence numberg*°dONLNdÑo™{)9. This number is put Ïj°dONLNdôzÙÜC(ÉÙinto a particular fi\™°dONLNd≠zDÜ∞)Peld of the new window r*°dONLNdƒz±Ü√)mecoruä°dONLNd»z√Ü)d, and can be Ïj°dONLNd÷ÖÙëü(éÙ&useful to you if the window has specifiJ°dONLNd˝Ö†ë)¨c data associated with it. Ïj°dONLNdêÙú+(ôÙ Because therr*°dONLNd$ê,úˆ)8-e is no such data associated with this windowñ
  538. °dONLNdQêıú )…, this Ïj°dONLNdXõÙßO(§Ùparameter is set to 0.
  539. gHn4gHn jäj
  540. ˇ·ˇ‚7^    °dONLNdˇˇ(dä    Table 1-1.°dONLNdˇˇ)>Parameters passed to 
  541. °dONLNdˇˇ)[    NewWindow    °dONLNdˇˇ)6 in °dONLNdˇˇ) Listing 1-1°dONLNdˇˇ)*  (continued).°dONLNdˇˇ(|ä    ParameterÏj°dONLNdˇˇ)jMeaningˇ@ˇ ˇˇˇˇ@
  542. ˇ·ˇ‚7^
  543. 4*\¯, Palatino&e.3+l"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@l Introduction4⁄*˙¯
  544. (‡*6    )BThe Macintosh System Software4^*¿¯,
  545. Courier
  546. .°dONLNd\<hΔ(e<WITH gWindow^.portRect °dONLNd\Δh“)äDO°dONLNd$\h∞)<{set the position of the pen}°dONLNdDjNví(sN6MoveTo(((right - left) DIV 2) - (StringWidth(gString) °dONLNdzjív§(síDIV°dONLNd}j§vº) 2),°dONLNdáxÑÑ(ÅÑ(bottom - top) DIV 2);°dONLNdûêlúÄ(ôlThe °dONLNd¢êÄú§)MoveTo°dONLNd®ê§ú∞)$ prR`°dONLNd´ê∞úÕ) ocedur$¿°dONLNd±êÕúÿ)e r˜ °dONLNd¥ê◊úÓ)
  547. equir…Ä°dONLNdπêÓú )1es 2 parameters, the horizontal and vertical coorõ‡°dONLNdÍê úÓ)‹dinates .°dONLNdÚùl©Ó(¶lRwithin the window of the new drawing position. The origin—point (0,0)—of a window °dONLNdD™l∂◊*is at its upper left cornerà°dONLNd_™◊∂!)k. Horizontal coor;¿°dONLNdp™"∂U)K dinates incr…@°dONLNd|™U∂§)3ease as you move õ†°dONLNd癕∂¨)Pfr¥Ä°dONLNd虨∂º)om ~°dONLNdí™Ω∂Û)left to right, °dONLNd°∑l√∂(¿land vertical coors@°dONLNd≤∑∂√È)J dinates incr¿°dONLNdæ∑Í√9)4ease as you move ” °dONLNdœ∑9√@)OfrÏ°dONLNd—∑@√P)om µÄ°dONLNd‘∑Q√∏)top to bottom. The coorN¿°dONLNdÎ∑π√€)hdinates .°dONLNdÛƒl–ò(Õl
  548. passed to °dONLNd˝ƒò–º),MoveTo°dONLNdƒº–»)$ arR`°dONLNdƒ»–    ) e calculated fr$¿°dONLNdƒ    –∑)A(om the left, top, bottom, and right coor˜ °dONLNd=ƒ∂–˜)≠dinates of the °dONLNdL—l›»(⁄lwindow (obtained frR`°dONLNd_—»›È)\om the R`°dONLNdf—È›)!portRectR`°dONLNdn—›")0 fiR`°dONLNdq—"›z)    eld of the window r$¿°dONLNdÑ—z›å)Xecor˜ °dONLNdà—ã›ò)d).
  549. ‰*ˇ¯4Â*ˇ¯
  550. *¯4*¯ *˛
  551. ˇ·ˇ‚7^ˇˇ©.ˇÆ°dONLNdå¸*    (
  552. *The Macintosh System SoftwarÍ∑°dONLNd®¸    )fleˇˇˇˇˇˇU˛)Á1
  553. °dONLNd™ l,‰()lWThe richness of the Macintosh user interface is closely matched by the richness of the °dONLNd-l9fl*Macintosh system softwar3`°dONLNd-‡9Î)te rB°dONLNd-Î9%) outines. TherB °dONLNd)-%95):e arP¿°dONLNd--59N)e curr…`°dONLNd3-N9÷)ently several thousand system ˇ˛·Ü.°dONLNdQ:lFè(ClsoftwarR`°dONLNdX:èFò)#e rF°dONLNd[:ôFÊ)
  554. outines that, like ˇ¸§í™ÿ°dONLNdn:ÊF)M    NewWindowˇ˛·Üøÿ°dONLNdw:F()5, arsæ°dONLNd{:)F¯)1e available to application developers for use in .°dONLNd¨GlSú(PlDwriting applications for the Macintosh operating system. FortunatelyR °dONLNdGúSÒ(Pú, you don’t need to °dONLNdTl`ª(]llearn all of those r°dONLNdTª`ı)Ooutines beforƒ°dONLNd%Tı`)::e starting to develop applications for the Macintosh. The °dONLNd_alm”(jlsample application defiÓ °dONLNdva”mÒ)gned in ^†°dONLNd}aÚm ) Listing 1-1˛‡°dONLNdàa mŒ).' uses only a dozen or so system softwarú¿°dONLNdØaœm÷)Øe °dONLNd±nlzo(wlrE°dONLNd≤npzï)    outines. f°dONLNdªnïzú)%A††°dONLNdºnúz) typical application might dirîÄ°dONLNd⁄nz|)Åectly call a few hundr»`°dONLNdn|z≤)_ed of these r† °dONLNd˝n≤z‘)6outines.°dONLNdÄlåì(âl    The entirFÄ°dONLNdÄîå)(e collection of system softwarâ`°dONLNd-Äå!)Çe rò°dONLNd0Ä!åfi) -outines is logically divided into functional °dONLNd]çlôu(ñlgr‘ °dONLNd_çuôÂ)    oups—usually known as ˆ`°dONLNduçÂô)pmanagersÿ¿°dONLNd}çôl),—that handle specifiÄ°dONLNdëçmô÷)\c tasks or user interface .°dONLNd´öl¶Ë(£lelements. For example, the °dONLNdΔö˶)|    NewWindow°dONLNdœö¶$)6 rR`°dONLNd—ö$¶ç)outine belongs to the W≈¿°dONLNdËö嶓)hindow Manager`°dONLNdıö“¶È)F, the .°dONLNd˚ßl≥(∞l$part of the Macintosh system softwarë@°dONLNdß≥q)§e that allows you to cr °dONLNd6ßr≥√)beate, move, hide, r˜@°dONLNdI߬≥◊)Pesize؇°dONLNdNßÿ≥‚), a؇°dONLNdQß‚≥)
  555. nd °dONLNdT¥l¿%(Ωl'otherwise manipulate windows. SimilarlyË °dONLNd{¥$¿∞)∏!, the parts of the system softwarÆ@°dONLNdú¥±¿Á)çe that allow °dONLNd©¡lÕì( l    you to crx‡°dONLNd≤¡ìÕê)'4eate and manipulate menus belong to the Menu Manager °dONLNdÊ¡êÕí)˝.°dONLNdË”lflr(‹lY@Ä°dONLNdÈ”rfl)$our application calls system softwar2Ä°dONLNd”fl)üe rA °dONLNd”flR) outines to cr≠†°dONLNd”Rflá)6 eate standar4¿°dONLNd)”àflŒ)6d user interface °dONLNd:‡lÏ«(Èlelements and to coor/@°dONLNdN‡»Ïfl)\@dinate its actions with other open applications. The main other °dONLNdéÌl˘q(ˆl<application that your application needs to work with is the [†°dONLNd Ìr˘è(ˆrFinderY¿°dONLNd–Ìê˘í),Ÿ¿°dONLNd—Ìí˘ø)  which is rñÄ°dONLNd‹Ì¿˘Ò). esponsible °dONLNdÁ˙lÀ(lfor keeping track of fi≥‡°dONLNd˛˙À?)_les and managing the user®Ä°dONLNd˙@î)u’s desktop. UsuallyÁ¿°dONLNd*˙ìÁ)S, the user launches °dONLNd>lÌ(lZyour application by double-clicking its icon (or one of its document’s icons) in a Finder °dONLNdòl ê*windowé°dONLNdûê ·)$. The Finder isn’t r∞°dONLNd≤· ú)Q*eally part of the Macintosh system softwarj¿°dONLNd‹ù Ó)ºe, but it is such an °dONLNdÒ!l-≈(*lOimportant piece of the Macintosh graphic user interface that it’s sometimes difp`°dONLNd    @!≈-À(*≈fi} °dONLNd    B!À-È)cult to °dONLNd    J.l:ì(7l    tell wherì¿°dONLNd    S.ì:L)')e the Finder ends and the systems softwar$¿°dONLNd    |.M:Í)∫%e begins. In fact, the system softwar' °dONLNd    °.Í:Ò)ùe °dONLNd    £;lGu(DlprG °dONLNd    •;vGª)
  556. ovides a set of rE°dONLNd    ∂;ªGi)E%outines—known as the Finder Interface∫@°dONLNd    €;iGÏ)Æ—that you can use to interact °dONLNd    ˘HlT∞(Qlwith the Finder°dONLNd
  557. H∞T≤)D.°dONLNd
  558.  
  559. Zlfs(clAG@°dONLNd
  560. Ztf¶) s shown in j@°dONLNd
  561. Z¶fæ)2Figur=°dONLNd
  562. Zæf“)e 1-2⁄Ä°dONLNd
  563.  Z“fM), most of the system softwarò°dONLNd
  564. <ZNfY)|e r¶†°dONLNd
  565. ?ZYfÑ)
  566. outines ark°dONLNd
  567. IZÖfÿ),e part of either the °dONLNd
  568. ^glsB(pl-Macintosh Operating System or the Macintosh T◊†°dONLNd
  569. ãgAsa)’oolbox.ˇc∫@ˇ ˇˇˇˇ@
  570. ˇ·ˇ‚7^
  571. 4H\, Palatino&e.3+ä"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@ä Introduction4⁄ä˙(‡äThe Macintosh System Software
  572. (‡7
  573. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  574. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  575.  
  576.  
  577.  
  578.  
  579.  
  580. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  581. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  582. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  583.  
  584.  
  585.  
  586.  
  587.  
  588. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˜˙ˇˇ˙ˇ˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  589. 4Å4w?òÄ
  590. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  591. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  592.  
  593.  
  594.  
  595.  
  596.  
  597. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˜˙ˇ˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛¸ˇˇ
  598. ˇ˛ˇ˛¸ˇ˛¸ˇ˝˚ˇ˛˛˛ˇ˝
  599. ˇ˛ˇ˛
  600. ˇ˛ˇ˛˛˛ˇ˝˜˛˛ˇ˝
  601. ˇ˛ˇ˛
  602. ˇ˛ˇ˛˙ˇ˜˛˝ˇ˛ˇ˙˛ˇ˚¸ˇ˛˜˛˛ˇ˝
  603. ˇ˛ˇ˛
  604. ˇ˛ˇ˛˛ˇˇ˝˜˛¸ˇˇ
  605. ˇ˛ˇ˛    ¸ˇˇ˜˛˛ˇ˝
  606. ˇ˛ˇ˛
  607. ˇ˛ˇ˛˛˛ˇ˝˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  608. gHw4gHw"hH]
  609. ˇ·ˇ‚7^    °dONLNd\äg¥(dä
  610. Figure 1-2°dONLNd \ÃgN)BOverview of the system software
  611. °dONLNd+€äÁ≤(‰äCThis section describes the division of the Macintosh system softwar2`°dONLNdn€≥Á(‰≥e into its logical parts. °dONLNdàËäÙW(Òä-Understanding this division of system softwaru`°dONLNdµËWÙÔ)Õ#e into managers and other units is °dONLNdÿıä<(˛ä'essential to understanding Macintosh prº °dONLNdˇı<fi)≤$ogramming, as well as the general orv@°dONLNd#ıfl)£ ganization °dONLNd.äï( äof …`°dONLNd1ï⁄) Inside Macintosh´`°dONLNdA€›)F.
  612. 3H:44H: 5ä5
  613. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdC$ä3Á(/äThe Macintosh ˘d°dONLNdQ$Á3Ô)]T’í°dONLNdR$Ó3)oolboxˇˇˇˇˇˇ€r(/1
  614. °dONLNdY:äF‡(CäThe system softwar↰dONLNdk:‡FÎ)Ve rò@°dONLNdn:ÎF0) outines used in z‡°dONLNd~:1F_)F Listing 1-1 °dONLNdâ:`F)/% allow you to manage elements of the °dONLNdÆGäSè(Pä;Macintosh user interface. These parts of the system softwar◊ °dONLNdÈGèS“(Pèe belong to the E†°dONLNd˘G”S)D
  615. Macintosh °dONLNdTä`ê(]äT¿°dONLNdTê`Ø)oolbox,¿°dONLNd
  616. TØ`') (sometimes also called the Ù¿°dONLNd&T'`£)xMacintosh User Interface T˘@°dONLNd@T¢`¡){oolbox@°dONLNdFT¬`·) ). By of0¿°dONLNdNT·`)    fering a °dONLNdWaäm—(jäcommon set of r¨°dONLNdfa—m    )GIoutines that every application can call to implement the user interface, °dONLNdØnäz†(wäthe T °dONLNd¥n†z)oolbox not only ensurx°dONLNd…nz∏)`+es familiarity and consistency for the userÀ‡°dONLNdÙn∑z˚)∑, but also helps °dONLNd{äáç(ÑärE°dONLNd{éáë)9educe your application’s code size and development time. ¿°dONLNd?{ëáÒ(ÑëAt the same time, the °dONLNdUàäîê(ëäTµ¿°dONLNdVàèî∏)    oolbox of †°dONLNd_à∏î€))    fers a grk‡°dONLNdhà‹î)$eat deal of flõ¿°dONLNdvàîfi)6.exibility; your application can, whenever appr∏@°dONLNd§àfiî)Ãopriate, use °dONLNd±ïä°¯(ûäits own code instead of TÓ`°dONLNd ï˜°)moolbox r,Ä°dONLNd“ï°Ä)%outines, and it can defiwÄ°dONLNdÍïÄ°)dne its own types of windows, °dONLNd¢äÆ◊(´ämenus, and contr^¿°dONLNd¢◊Æ@)Mols. In general, howeverч°dONLNd/¢@Æ°)i, you should use the T@†°dONLNdE¢°Æ≈)aoolbox r~¿°dONLNdM¢≈Æ·)$outine¡ °dONLNdS¢·ÆÍ)s t¿Ä°dONLNdV¢ÎÆÚ)
  617. o °dONLNdXØäª(∏ämaximize compatibility with pr~ °dONLNdvتY)åesent and futur∏¿°dONLNdÖØYªÊ)C e versions of the system softwar¿°dONLNd•ØÁªÓ)ée.
  618. wà√4váwàò2@ç@çwà∑œœ?—ˇ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄò2@Äç@Äç∑à˜?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄò2Ä¿çÄ¿ç˜à7?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?Ïˇ‡ÏˇÄ?Ïˇ‡ÏˇÄ?Ïˇ‡ÏˇÄ?Ïˇ‡¿ÏˇÄ?Ïˇ‡  ÏˇÄ?Ïˇ‡@ÏˇÄ?Ïˇ‡ÄÏˇÄ?Ïˇ‡ÄÏˇÄ?Ïˇ‡ÏˇÄ?Ïˇ‡ÏˇÄ?Ïˇ‡ÄÏˇÄ?Ïˇ‡@ÏˇÄ?Ïˇ‡@ÏˇÄ?Ïˇ‡`0ÏˇÄ?Ïˇ‡ÄÏˇÄ?Ïˇ·˛ÏˇÄ?Ïˇ‚˛ÏˇÄ?Ïˇ‚˛ÏˇÄ?ÏˇÏ?ÅüÏˇÄ?Ïˇ¿@_ÏˇÄ?ÏˇÏ0?ÏˇÄ?Ïˇ‚0_ÏˇÄ?Ïˇ‚0_ÏˇÄ?Ïˇ·»üÏˇÄ?Ïˇ‡Ä<ˇ√ΡÄ?Ïˇ‡`0ΡÄ?Ïˇ‡ΡÄ?Ïˇ‡ΡÄ?Ïˇ‡ΡÄ?Ïˇ‡‡ΡÄ?Ïˇ‡˘ÎˇÄ?Ïˇ‡ÄΡÄ?Ïˇ‡ÄΡÄ?Ïˇ‡@ΡÄ?Ïˇ‡ ÏˇÄ?Ïˇ‡ÏˇÄò2¿ç¿ç7àw?Ïˇ‡ ÏˇÄ?Ïˇ‡ ÏˇÄ?Ïˇ‡¿ÏˇÄ?Ïˇ‡ÏˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄò2@ç@çwà∑?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄò2@Äç@Äç∑à˜?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ?—ˇÄ—ˇÄœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2Ä¿çÄ¿ç˜à7œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœ ;Ãå˛ 0˛¿<¸ ÓE§Ä˛`Hĸ(D¸PÓÖÑ˝@ĸ!D@˛PÓ%!êÑ Ìh@@ í-$≈íÛñ''‚iÉù˚$›Ò%!†àE1†@ ≤÷eöíAh)M6Ñ¢ë%&hÒ%!† —J!¿F !‰)¥!Apà§N$ÇBëj$pÒ%!¿!$%í¬ÄH"2`ÿ"Ç$Äà“êIâE!≤xÄÒ%!‡Ä~ x8;üA¡¿Ë#úêÇ$qpúéI9!!®pÒ˘@ˆÄ˛Ä˛Ì˘@˜˛˝Ìò2¿ç¿ç7àw˘Ę˛˝Ìœœœ‡É ‡@Δ˝"›Ä B›û;AJ4Δ˜8ÎÇê¥ì&H‚äNi°RI,RE-ÉìYñ“H‚$â¡dä¢Ñâѣ꧂–‚ôæDûr¥äRàƒ …`‚§ÓY√\iù$sí pɆé‚@‚ı ‹œœœœœ¯˛Äa鲠    p‡ Áà˚íQ˝â˛ÁÄ˚$Y ÀÄÁÊ町ăVsåì(É`∞ÅÓp(ÑÈ#mh'K@#¢§Ññ”@Ä@îê”ZHÈ"IpÄ!"¢•ÄÄAAúàÈ'ìÄL§"$    I…|Ä Å)!| êÈÑípw{ÉÃNé≥Ü@x«…¿≥ù`Ȉ˘˛Ëˆ˘˛Ëˆ8˘˛ÄÈœœœ$ 1ÄÉÄ˝ÄL`˛0‡Ò HÄΔIJÄ¿ˆ Ò
  619. à)Ä ˝ÄÄ ˙ ($ñé)ƒaJ5aµ¢è<åΔÛ9‡ls¡Ì∏Á-≠ç7L Ù($„h%"öRIFÑîÕÑíô)&D†“â@ñ2ë"4≈ÜI¥–Ù($Ç!à&Búdâá(黣$Ö@°
  620. Å%Ç$äâ$‡Ù'#"ºBE Dû®    KI%¶s…âa'¡(M¢DIÑûMÛ($ÑXb9√\jG}ˆY9çNrAÿ‰Ç»y#ÑIjH‡Ù Ò@˙È Ò@˙È Ò8‡˙Èœœœœœœœœœœœœœœœœœ˛w˛@<0›H˛$˛¿‹à˛    H@ !flêá p”œF!=‹Ì‡ò2@ç@çwà∑„Zi PQRC !fi)‡ÉíH†P¢Ñ‚ BDr
  621. ‡ 0¿â*»$@DòÇr(‡ÉúpÅ›ÙûåÙ@¯Ëq뻇 ˛"àÄ˛ÄŸ˛"⑲v‘œœœ t¸‹`0ซ† ˛Ä‹£œ!⁄o5¬–ÒÄfi!$¶Ç-§îç`R@fiÚ(«)(®é@§›Ih4RiKÄ¥¿fi}ñG√íV}Ç#fi˝€ ˝ÿ 8˝8ÿœœœ 0t@˝Ä¿fi`,¿˝A fi† HÄÇ fi†ß Hö?—ºÌ fi#Hí–HäJbIÑ fiÙP¢‡ë"DJÑ@fiÒ-ô•îÑÚ(ÑÄfizŒ·—>‰ÉQ»›œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@Aç@Aç∑à∏œò2@ç@çwà∑œœ–3— “–Ä—–Ä “— “–Ä—–Ä “    ‚Ò  „‚0Ú
  622. „ÑÒÄ „@ÄÛ
  623. ‚ĆÚÄ ‰†ÛˆÔ†Û ˜Ô ÛˆÚˇ¸Ä @ÚĈ?ˇÄÛáÂÚˆ}˚Úàé»àÒÄ ˜fløÉÒ¸ˇ
  624. œˇˇøˇ¿?Òˆ˚˜ÇD !xÓ° @a†Ò ˆˇˇ£Û˚ˇ    œˇøˇ‚""0ÒÙÜD !0 †Ñ`!ÄÙÒ˚ˇ    œˇøˇ‡?¯ÒÙè˙ˇOˇè˝ˇâˇêÚÄ ı˚ˇ Ï«ˇò¬!¡ÛÙBÇÇhÜflˇ˜ˇˇ¡ÄÛ ı*2f2¢2¢ÿá:zc7ˇˇ‚Ä
  625. ÛÙ˚ˇ êáˇœˇˇå`ÄÚÄÙ!!ÑÑÄHAÑ ¿ ÛÙü¸ˇ˝áˇœˇ˚ˇˇË¿àÚÄ ı!Ö1Ö`?F0` ÛÙ¸ˇ˝!ˇÁˇ˚ˇ˛ @Û ı2‚¢b"")!*&#´¢b2 ÚÙ?¸ˇ ˘#ˇÁˇ˝ˇˇ0ÒÄÙ  Å@    ‰ âˇˇ¯ÄÙÙø¸ˇ¯ˇÔˇ¯˛àê˛¿ÛÄ ı˚@¸˛pÙÙ ˚ ¿¸˛=¿ı ı˚ˇ¯¯˚ˇ¯£7`ıÙ˚ ·Ä¸Ò∞ÙÄÙ˚¡˚QòıÙ˚ˇ¸˚ˇ¯˘œÙÄ Ó˘)EĈÌ˘Ω dĈ Ó ¯∑Ñ4Ĉ̯ˇÜ¿ıÄÙ@¸0¯lÇ@ˆÙ@¸`¯,É@ıÄ ıLÿ˝¿`˙'Ä@ˆÙ_˝ Ä˙$Ä@ˆ ı[˝∏˙'Ä@ˆÙå˝‡  ˙#@ıÄÌ4~N˙1@ˆÌhãêà˙@ıÄ Ó@»˙@ˆÌQ X˙`ˆò2@Äç@Äç∑à˜ Ób" h˙  ˆÌ@ H˙ ıÄÏ`H˙0ˆÎ†H˙ÄıÄ Ï H˘¿|ˆÎ X˘`÷ˆ Íh˘0>#ˆÈH˘`ıÄÈH˘ƒEĘÈH˘àÄĈÄ ÍH˘ÙÈX˘ı Íh˘ ıÌÔˇˇ¯Oˇˇ¸¸ÛÄÌœøxH6ʸ@ıÌÔøxHÛÌÄ Ó     #œÆxHqÄÔÌ˛ˇ¯_˛ˇÄÔ Ó2˛"(j˛"¿ÔÌ(˝àH˛à‡ÓÄÌd˛DHL˛D`ÔÌ»˝àHàà¯∞ÓÄ Ó¢˛"(J""˙8ÔÓë˛YˇÔ Ô˝"(b"#˛$ÔÓ¸àH˛àéÓÄÓ˝DH˝DGÔÓ ¸àH˛àâÓÄ Ô˝" ˝"#ÄÓ¸¸¿ Ô2˝" ¸"` Óh˜à†ÔÄ ÓˆDp Ó»˜àòÔÄ ¢˜"(Ôˆ ˆ"& ÔˆàäÔÄÔ ˆDGÔˆàâÄÄ ı"¿ÒÔ1ı@Ò Ù"`Ò Ôhıà∞ÄÔƒıDPÒ
  626. ÔÙàòÄ Ò¢ı",ÒÙÒ ÒÛ"Ò ÙàãÄ ÙDEÄÚ ÛàÄÒÄ ÒÛ"¿Ú1Û`Ú ÒbÛ" Ú »Ûà∞ÒÄƒÙDLXÚÒÛàüåÒÄ ÚÛ"/$ÚÒÛñÚ ÚÛ"'„ÚÒ Ûàè˘ÒÄÒ ÛDG˝ÄÛÒÛà㯿ÚÄò2Ä¿çÄ¿ç˜à7 Ú2Ò"@ÛÒ1Ò@Û Ú"@Û Ò8Òà¿ÚÄÒÒˇÄÛ    ÈHÍÄ  ÍHÎ
  627. ÈXÎ  ÍhÎÒ˛HÍÄÒ˛HÎÒ    f√œ∑Δ`HÍÄ Ú    ˇÉ'‚iHÎÒ    ÿÉ&#®ÄXΠڠ    gÉ'‚ÁphΠ   ÈHÍÄ
  628. ÈHΠ   ÈHÍÄ  ÍHÎ
  629. ÈxÎ  Í@Π   È8pÍÄ
  630. È00Π   È`ÍÄ  Í ¿Î
  631. ÈÄÎ  ÍÍ–Ä    ÈÍÈÈÄ  ÍÍ
  632. È¿Î  Í  Î    È@ÍÄ
  633. ÈÄΠ   ÈÄÍÄ ÎÎ ÍΠÎÄÏ Í@ÎÄ Í@Ï Í`0ÎÄ ÎÄÏÎ˛Ï Ï˛Ï Î˛ÎÄΠ    ?ÅÄ@ ÒΠ   ¿@@(Ä Ï
  634. 0 +π[ú‹ÚÎ
  635. 0@:edÕ2Ú Ï
  636. 0@FecM2ÚÎ
  637. »ÄGπ]ÓÒÄÍÄ<ˇ√‡ ÔÍ`0‡ ÓĠ· ÔÍ‡Ì Î‡Ì Í‡‡ÏÄ͢‡Ì ÈćÏÄ ÍÄ‡Ì È@‡Ì  Í Î    ÈÍÄò2¿ç¿ç7àw
  638. ȠΠ   È ÍÄ  Í¿Î    ÈÍ “–Ä—–Ä ÏÄÌÎÄ¿Ì Ï¿`ÌÎ1Ä `0ÏÄÎ`¿0 Ìη¿8p8ÏÄ Ï!x ÌÎ!X>Ì Ï!0h"ÌÎ!H"ÏÄÎ!PH&ÌÎ!êH*ÏÄ Ï!H"ÌÎ!X2Ì Ï!0h"ÌÎ!H2ÏÄ΄PHÌ¯ÙˇÇ∞HıˇÄ˘Ä ˙Äı HÙ‡˙˘Ù XÄı8˙ ˙Ù`h‡ı˙˘Ù@H8ı˘Ä˘Ùˇƒ¿HıˇáÄ˚˘1ÙàãÄHıàΔÄ˙Ä ˙!ÙHĈB¿˚˘!ıˇ¯Xıˇ√@˚ ˙!0ÛhÛB@˚˘!0ÛHÛB`˙Ģ!`ÛHÛB`˚˘!†ÛHÛB†˙Ä ˙! ÛHÛB ˚˘! ÛXÛC ˚ ˙! ÛhÛB ˚˘! ÛHÛB ˙Ģ?`ÛHÛ~`˚˘†ÛHÛ†˙Ä ˙ Û»Û ˚˘8ÛÛ8˚ ˙0Û&Û0˚˘`ÛåÛ`˙Ģ¿ÚÿÛ¿˚˘ÄÚpÛÄ˙Ä  È Î— “–Äıˇ¸˛?ıˇ¿ıˇ¸ı˛ ı`ıÄ ı ı`ıı ı`0ı1  ¿ ɇ¿ˇ¯ Ã¡Ä~x˝ `ˇ¬ o`c¿ ˝1
  639. ¿Ü0˛  ¸Äx˝ `¿B cf` ˝Ä3+˝œüüΔ?s˜˘‡4DH ˇŒ˘˘¸Œ~ÔÄaƒDB=Ô¸Ôf7Ôfl˛3flofi˝Ê=˚˛ˇ`àà ˝˚˝Ôfi{{∑˛aàà¬oov˜„flœˇÄÄ3 ˇfiflÊ=√˛ˇ`  ˇ¯˝Ì˛{{∑˛`¿Boovˇ‡}ÔÄ31flÔflΩ„Ô{˝‡ˇ¯ ˝Ô˝˚fiŒ~ÔÄ`ˇ¬ΩÔ¸˜ÁœœˇÄò2@ç@çwà∑" ˚ ˛` ı`0˚ ¸"˚
  640. ¿ ı`˚¸Äı˛ ı`ı$¯˛ ÄÅ@˚`‡¯Ä$ Ä¯˛ ÄÄ˚`Ň¯(ofl>˘˛!ôòÛÌÒò¸`;˚˘¯˙( ?üø˘˛!Ñø–…¯ö|¸`mˇ˝¸˙(ª‹?˘˛ ∂…àÍ ¸`ÌÔ˝‡˙Ä(üø˘˛ –…¯π‹¸`9˝Ωº˙˜˛ ı`ıÄ 0˜˛ ı`ıı˛ ı`ı& }˚˛˛ ¯
  641. `0G‡˙&A˚˛˛ Ģ    `HA˘Ä0
  642. E0”ù«m Ó˛˛!òÕ-òhÓ„≥Fw`Ö3Y-˚0
  643. }x®“i˙û!á=Û*|T94˙ØJ`Ö4·*º˚Ä0
  644.  E@´S©äê °≥* TŸ‘¬®J`Y4Q*†˚0
  645. E8©“Ázéñ˛˛ úÃÈ‹Tys∫ßK`4Û…*ú˚  ¸˚˛ ˘Ä˛`ı ¸˚˛ ˙˝`ıÄı˛ ı`ı(à˘˛ Ä"`D0¯Ä( ÿ˘˛  `JH¯-ÿÕŸ£ù«m Ó˛!\‚Óósú4æO`Jį- ŸÍ•QP“i˙ûî˛!ǶS"ôídLôJ`Nį-©
  646. •QSS©äê¶S"ôíjdLôJ`QH¯Ä-®Íô!Q“Ázéñ˛ “‚ûs:\3û;`Q0¯&˝ ˝˛ ˝˝`ıÄ& ˝@˝˛ ˝˝`ıı˛ ˝˝`ı) p˙@˛ Ä¯`0˛    @ ‡
  647. 'H˘@˛ ¯`H˝Ä
  648. Ä-Ióf;úÊ–‹‡˛!2∏¯`ÅöhûM‹Œ`åkôF-K’üG/©Ú@˛!Çy¯`ÇUTôRm)íödÜÄ- Jà6[(©@˛ A¯`JUTôQ≠)–íödÜ-q…wNÁ®Ú`˛ :ò¯`1ïTyNÏ…`åkôF ˙ ˝˛ ı`ı˚¿˝˛ ı`ıÄ!ı˛ ı    `RIJ@)p˘˛ Ä˘    `ZIJ@Ä( H˘˛ @¯`Zm<≥∞iÁ3‡/Kc30”ù«m Ó˛!;ñ`˙`ZôM¥¯˘î @/ rîˇ¯®“i˙ûî˛!â—¶Y˙`$ôJ¥¿Ÿî @/BîFË´S©äê÷¶X–˙`$i:S∏gÁ2`Ä*Bcª0©“Ázéñ˛ S∫W`˙`˙Ñ˝#˙˝˛  ¯`˙Ñ˝Ä# ˙˝˛  ¯`˙Ñ˝ı˛  ¯`ı 0¿L˚˛ ı`ıH¿    ˚˛ ı`ıÄÖÛ1=\ø˛ ı`ıÑœ°-M˛¸˛ ı`ıÄ HÃ!-M¸˛ ı`ı0À†ÌLϸ˛ ı`ı ı˛ ı`ıı˛ ı`ıÄı˛ ı`ıı˛ ı`ıÄ ı˛ ı`ııˇ˛˛?ıˇ‡ıˇ˛ ıˇ˛˛ıˇ‡ıˇ˛–Ä—–Äò2@Äç@Äç∑à˜ “— “–Ä—–Ä “—–3 —ÃÄœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2Ä¿çÄ¿ç˜à7œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœ ;Ãå˛ 0˛¿<¸ ÓE§Ä˛`Hĸ(D¸PÓÖÑ˝@ĸ!D@˛PÓ%!êÑ Ìh@@ í-$≈íÛñ''‚iÉù˚$›Ò%!†àE1†@ ≤÷eöíAh)M6Ñ¢ë%&hÒ%!† —J!¿F !‰)¥!Apà§N$ÇBëj$pÒ%!¿!$%í¬ÄH"2`ÿ"Ç$Äà“êIâE!≤xÄÒ%!‡Ä~ x8;üA¡¿Ë#úêÇ$qpúéI9!!®pÒ˘@ˆÄ˛Ä˛Ì˘@˜˛˝Ìò2¿ç¿ç7àw˘Ę˛˝Ìœœœ‡É ‡@Δ˝"›Ä B›û;AJ4Δ˜8ÎÇê¥ì&H‚äNi°RI,RE-ÉìYñ“H‚$â¡dä¢Ñâѣ꧂–‚ôæDûr¥äRàƒ …`‚§ÓY√\iù$sí pɆé‚@‚ı ‹œœœœœ¯˛Äa鲠    p‡ Áà˚íQ˝â˛ÁÄ˚$Y ÀÄÁÊ町ăVsåì(É`∞ÅÓp(ÑÈ#mh'K@#¢§Ññ”@Ä@îê”ZHÈ"IpÄ!"¢•ÄÄAAúàÈ'ìÄL§"$    I…|Ä Å)!| êÈÑípw{ÉÃNé≥Ü@x«…¿≥ù`Ȉ˘˛Ëˆ˘˛Ëˆ8˘˛ÄÈœœœ$ 1ÄÉÄ˝ÄL`˛0‡Ò HÄΔIJÄ¿ˆ Ò
  649. à)Ä ˝ÄÄ ˙ ($ñé)ƒaJ5aµ¢è<åΔÛ9‡ls¡Ì∏Á-≠ç7L Ù($„h%"öRIFÑîÕÑíô)&D†“â@ñ2ë"4≈ÜI¥–Ù($Ç!à&Búdâá(黣$Ö@°
  650. Å%Ç$äâ$‡Ù'#"ºBE Dû®    KI%¶s…âa'¡(M¢DIÑûMÛ($ÑXb9√\jG}ˆY9çNrAÿ‰Ç»y#ÑIjH‡Ù Ò@˙È Ò@˙È Ò8‡˙Èœœœœœœœœœœœœœœœœœ˛w˛@<0›H˛$˛¿‹à˛    H@ !flêá p”œF!=‹Ì‡ò2@ç@çwà∑„Zi PQRC !fi)‡ÉíH†P¢Ñ‚ BDr
  651. ‡ 0¿â*»$@DòÇr(‡ÉúpÅ›ÙûåÙ@¯Ëq뻇 ˛"àÄ˛ÄŸ˛"⑲v‘œœœ t¸‹`0ซ† ˛Ä‹£œ!⁄o5¬–ÒÄfi!$¶Ç-§îç`R@fiÚ(«)(®é@§›Ih4RiKÄ¥¿fi}ñG√íV}Ç#fi˝€ ˝ÿ 8˝8ÿœœœ 0t@˝Ä¿fi`,¿˝A fi† HÄÇ fi†ß Hö?—ºÌ fi#Hí–HäJbIÑ fiÙP¢‡ë"DJÑ@fiÒ-ô•îÑÚ(ÑÄfizŒ·—>‰ÉQ»›œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@Aç@Aç∑à∏œˇ√$@ˇ ˇˇˇˇ@
  652. ˇ·ˇ‚7^
  653. 4*\¯, Palatino&e.3+l"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@l Introduction4⁄*˙¯
  654. (‡*8    )BThe Macintosh System Software4^*¿¯
  655. °dONLNd\lhÑ(elFigurR¿°dONLNd\Ñhò)e 1-3@°dONLNd
  656. \òh]). illustrates the main parts of the Macintosh Tå¿°dONLNd8\]h})≈oolbox.
  657. ä*õ¯4ã*õ¯"ã*]
  658. ˇ·ˇ‚7^    °dONLNd@Älãñ(àl
  659. Figure 1-3°dONLNdKÄÆã◊)B Parts of thÇÄ°dONLNdVÄ◊ã
  660. )) e Macintosh [‡°dONLNdbÄ
  661. ã)3T€‡°dONLNdcÄã()oolbox
  662. ∞*æ¯4∞*Ω¯°dONLNdjØl∫(∑lNote
  663. ˇ·ˇ‚7^
  664. °dONLNdoªl«¨*For historical rÄ°dONLNdª≠«h)A*easons, some collections of system softwarØ`°dONLNd©ªh«s)ªe ræ°dONLNd¨ªs«û)
  665. outines arÇ`°dONLNd∂ªü«¶),e °dONLNd∏«l”o(–lrE°dONLNdπ«p”Ñ)eferr„¿°dONLNdæ«Ñ”O)-ed to as packages. One example is the Standar˝Ä°dONLNdΫO”ë)Àd File Package °dONLNd˙”lfl’(‹l(which allows you to prã@°dONLNd”’fl )iesent the standar~ °dONLNd"” fl.)Kd fi&†°dONLNd&”/flì)le opening and saving °dONLNd<fllÎà(Ël@dialog boxes). In general, the distinction between managers and °dONLNd|Îl˜fi* packages is unimportant. 3Ä°dONLNdïÎfi˜¯)rAccor¿°dONLNdöί˜)dingly÷ °dONLNd†Î˜=)
  666. , the new •Ä°dONLNd™Î>˜É)+Inside MacintosháÄ°dONLNd∫Îјö)F has, °dONLNd¿˜lØ(lwhenever appr∏¿°dONLNdÕ˜Ø?)C"opriate, adopted the practice of r‡°dONLNdÔ˜@†)ëenaming packages as °dONLNdlØ( lJmanagers. For instance, the Disk Initialization Manager (described in the °dONLNdMlÑ* book ¿°dONLNdRÖ‚)Inside Macintosh: Files»†°dONLNdi‚)]) was prw†°dONLNdqÇ)$eviously known as the Disk °dONLNdål'Õ($lInitialization Package.,Zapf Dingbatsg °dONLNd¨”&ÿ)gu
  667. °dONLNdÆ,l8≠(5lConsider the fi≈`°dONLNdΩ,≠8Í)Arst few lines oJ °dONLNdÃ,Î8)>f °dONLNdŒ,Ò8G)Listing 1-1 on page ‡°dONLNd‚,G8L)V3‡°dONLNd„,L8N):,
  668. Courier.°dONLNdÂClOfi(LlInitGraf(@thePort);°dONLNdC2O∂)Δ{initialize QuickDraw}°dONLNdQl]®(Zl
  669. InitFonts;°dONLNd/Q2]»)Δ{initialize Font Manager}°dONLNdI_lk¥(hl InitWindows;°dONLNd`_2k‘)Δ{initialize Window Manager}°dONLNd|mlyÆ(vl InitCursor;°dONLNdím2y⁄)Δ{initialize cursor to arrow}
  670. ú3ó¯4õ2ú3òR@à@àú3øëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØÛæˇÙÄæÙΩÙΩÙΩ    Ù¿    Ù ¿òà@ià@iúëø
  671. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍıˇÄ
  672. ˚ĸ`ıı ¸˛¸ ¸ ¸¸A‡ÄˇòR@Äà@Äàø3·ëÙ˘ò@3ÃÙw¿ÄÄ3ÃÙˇÄ¡ò@3>>œÙ˛¡ôòàÄ˝3œÙ˛Òôò@˝3œÙˇÄ¡ô¯àÄ3?33œÙˇÄ¡ôÄ@3033œÙ¡ôààÄ2133œÙ6¡ò@<33œÙΩÙΩÙΩÙΩÙΩÙΩˇÙΩU
  673. Ù
  674. ı™Ø ˇ
  675. ÙıUT 
  676. Ù
  677. ı™¨ 
  678. ÙıUT Ù
  679. ı™≠˚ˇøÔˇ‡ÙÓˇÙıUTÄÓ3˛„˚0ÌÙ
  680. ı™≠˙øÔˇ‡3˛0˚pÓˇÙıUTÄÓ 3>>36xˇÄ0ÌˆÒˇøÔˇ‡˝3    3#38åÿ0ÓˇˆÒˇÄÓ˝3330|ÿ0ÌÙ
  681. ı™≠˙øÔˇ‡3?33˛30Ãÿ0ÓˇÙıUTÄÓ3033˛30Ãÿ0ÌÙ
  682. ı™≠˙øÔˇ‡2133˛30Ãÿ0ÓˇÙıUTÄÓ <33„0|ÿ0ÌÙ
  683. ı™≠˚ˇøÔˇ‡˙¸ÓˇÙıUT‰#ËÙ
  684. ı™¨‰Ë
  685. ÙıUT 
  686. Ù
  687. ı™Ø ˇÙıUT @◊Ù
  688. ı™¨ ?à@B◊ÙıUT @à‡@‚◊'Ù
  689. ı™¨  Å»@¬@H¸Ä¿DÈ&ÙıUTÄ  »H@Ç˝H¸Ä@@È*Ù
  690. ı™ ¨Ä  àì@2;åÇ‹pÓ01ñ≥¡ÃRÏŒÍ*ÙıU T Å     ÉBIPBRTRêIHJXƒ§ÇRE)Í*Ù
  691. ı™ ¨ Å
  692. sÛGIP2RTRêIxBPá†ÅíRE)Í*ÙıU T  ,êC∏H†
  693. R(RêI@JPÑ$ÄRRE)Í+Ù
  694. ı™!¨ 0  ?ÿ     A0†rL(Rp)01êÉCåN$… ÎÙıUT 0   p
  695. Û@‡˙flÙ
  696. ı™¨  `@@˙`flÙıUT ?¿@◊Ù
  697. ı™¨ @◊
  698. ÙıUW ˇ
  699. Ù
  700. ı™¨ 
  701. ÙıUW ˇ
  702. Ù
  703. ı™¨ 
  704. ÙıUT 
  705. Ù
  706. ı™¨ 
  707. ÙıUT 
  708. Ù
  709. ı™¨ 
  710. ÙıUT Ù
  711. ı™¨¯Ä¯˜˚ÙıUT¯Ä¯˜˚&Ù
  712. ı™¨˙åìÄ˚Δq1¿Û dú˙v3âé¸$ÙıUT˙B§˙    !IJÚ ˙I
  713. JP¸%Ù
  714. ı™¨˙N√˙    'IyÄÛv˙I:Kø&ÙıUT˙R†Ä˚    )I@@Ûï˙IJJ¸ò@àÄi@àÄiøë·
  715. ¸C0ÄÄ¸C0Ä$@¸@`Ä$@¸@¿Ä<@¸@¿Äf@¸@ÄôÄ¸@¿Äˇ¸@¿ÄÅ¸ Å¸˛B¸˛<
  716. ¸˚
  717. ¸˚ııˇ¸ıUT
  718. ˛ˇÍ˘™¨
  719. ˛5˘UT
  720. ˛:˘™¨
  721. ˛5˘UT
  722. ˛ˇ∫˘™¨
  723. ˛5˘UT
  724. ˛ˇ∫˘™¨
  725. ˛5˘UT
  726. ˛ˇ∫˘™¨
  727. ˛5˘UT
  728. ˛ˇ∫˘™¨
  729. ˛5˘UT
  730. ˛ˇ∫˘™¨
  731. ˛5˘UT
  732. ˛ˇ∫˘™¨
  733. ˛5˘UT
  734. ˛:˘™¨
  735. ˛5˘UT
  736. ˛ˇ˙˘™¨
  737. ˛5˘UT
  738. ˛:˘™¨
  739. ˛5˘UT ˛:˘™¨Ò ˛5˘UT‡Ú ˛:˘™¨0Ú˛5UT˛UUTÚ˛:™´˛ˇÚ™™¨Ú˛5US˛ˇıUUTÚ˛:™´˛ˇÚ™™¨Ú˛5US˛ˇıUUTÚ˛:™´˛ˇÚ™™¨Ú˛5US˛ˇıUUTÚ˛ :™´øˇˇÚ™™¨Ú˛ˇıUS˛ˇıUUTÚ˛:™´˛ˇÚ™™¨Ú˛ˇıUT˛UUTÚ ˛:˘™¨Ú ˛5˘UTÚ ˛:˘™¨Ú˛5˙ˇ’TÚ˛;˙ˇͨڲ5˙ˇ’TÚ˛ ;ᡡ˝flˇˇÍ¨Ú˛ 5ªˇˇ˝flˇˇ’TÚ˛ ;ª7Ÿ•Ÿ∂3ͨÚ˛ 5Ü⁄∂úµÌ’TÚ˛ ;æ⁄∞Ω÷∂aͨÚ˛ 5æ›wΩ÷∑Ø’TÚòRÄ¿àÄ¿à·3ë%Ù
  740. ı™¨˙éó˙    'q3ÄÛ t∏˙I;âú¸ÙıUTÓ@Ê˙Ù
  741. ı™¨Ó@Ê˙
  742. ÙıUT  Ù
  743. ı™¨¯˛˚ˇ¿ˇ˚˛˙&ÙıUT˘Ä˝>|Ä˝Ä˚(Ù
  744. ı™¨˘˝‡ÚÄx˝˚,ÙıUT˙Ä¿˛p˛8Ú˛˛Ä¿¸*Ù
  745. ı™¨˙˝8IJÚ‡˛¿˝8¸(ÙıUT˙`˝ ¸¿Ù¸0`˝¸*Ù
  746. ı™¨˚Ä˝Ä0¸0Ù ¸ ĽĽ&ÙıUT˚˚¿`¸Ù¸˚¿˝&Ù
  747. ı™¨˚ ˚0ĸÙ`¸Ä ˚0˝$ÙıUT˚˚˚ÙÄ˚@˚˝$Ù
  748. ı™¨˚`˚ ˙¿ˆ˙0`˚˝$ÙıUT˚¿˚˙`ˆ˙¿˚˝"Ù
  749. ı™¨¸˘†˙ˆ˙˘Ä˛"ÙıUT¸˘@˙ˆ˙˘@˛"Ù
  750. ı™¨¸˘†˙ˆ ˙˘ ˛$ÙıUT¸˙˙ˆ@˙Ä˙˛$Ù
  751. ı™¨¸˙˙ˆÄ˙@˙˛$ÙıUT¸ ˙˘Ä¯˘  ˙˛$Ù
  752. ı™¨¸@˙˘@¯˘@˙˛$ÙıUT¸¿˙˘`¯˘¿˙˛$Ù
  753. ı™¨¸Ä˙˘ ¯˘Ä˙˛&ÙıUT˝˘ Ä˙¯˙˘Äˇ&Ù
  754. ı™¨˝˘@@˙¯˙˘@ˇ&ÙıUT˝˘@@˙¯˙˘@ˇ&Ù
  755. ı™¨˝˘Ä ˙¯ ˙˘ ˇ(ÙıUT˝ ˙Ä0˙¯`˙ Ä˙0ˇ(Ù
  756. ı™¨˝˙˙¯@˙Ä˙ˇ(ÙıUT˝˙˙¯Ä˙@˙ˇ(Ù
  757. ı™¨˝˙˙¯Ä˙@˙ˇ(ÙıUT˝ ˙˘Ä˙˘  ˙ˇ(Ù
  758. ı™¨˝ ˙˘Ä˙˘  ˙ˇ(ÙıUT˝ ˙˘Ä˙˘  ˙ˇ(Ù
  759. ı™¨˝@˙˘@˙˘@˙ˇ(ÙıUT˝@˙˘@˙˘@˙ˇ(Ù
  760. ı™¨˝¿˙˘`˙˘¿˙ˇ(ÙıUT˝Ä˙˘ ˙˘Ä˙ˇ(Ù
  761. ı™¨˝Ä˙˘ ˙˘Ä˙ˇ(ÙıUT˝Ä˙˘ ˙˘Ä˙ˇ)Ù
  762. ı™¨˛˘ ˛Ä˙˙˙˛˘Ä)ÙıUT˛˘ ˛Ä˙˙˙˛˘Ä)Ù
  763. ı™¨˛˘ ˛Ä˙˙˙˛˘Ä)ÙıUT˛˘ ˛Ä˙˙˙˛˘Ä)Ù
  764. ı™¨˛˘ ˛Ä˙˙˙˛˘Ä)ÙıUT˛˘@˛@˙˙˙˛˘@)Ù
  765. ı™¨˛˘@˛@˙˙˙˛˘@)ÙıUT˛˘@˛@˙˙˙˛˘@-Ù
  766. ı™¨˛˘@˛@˙˙˙˛˝@-ÙıUT˛˘@˛@˙˙˙˛0˝@/ˆˇÍı™¨˛˘@˛@˙˙˙˛‡˝@-ÙıUT˛˘@˛@˙˙˙˛˛¿˝@-Ù
  767. ı™¨˛˘@˛@˙˙˙˛‡˝@-ÙıUT˛˘@˛@˙˙˙˛0˝@-Ù
  768. ı™¨˛˘@˛@˙˙˙˛˝@)Ùıˇ¸˛˘@˛@˙˙˙˛˘@)Ù ı˛˘@˛@˙˙˙˛˘@)Ùı˛˘@˛@˙˙˙˛˘@)Ù ı˛˘@˛@˙˙˙˛˘@)Ùı˛˘ ˛Ä˙˙˙˛˘Ä)Ù ı<˛˘ ˛Ä˙˙˙˛˘Ä)Ùıd˛˘ ?ˇÄ˙˙˙˛˘ÄòÄà¿iÄà¿i·ë
  769. ˛ ;ø=yΩŸƒsͨڲ5˙ˇ’TÚ˛;˙ˇÍ¨Ú ˛5˘UTÚ ˛:˘™¨Ú ˛5˘UTÚ ˛:˘™¨Ú ˛5˘UTÚ ˛:˘™¨Ú ˛5˘UTÚ ˛:˘™¨Ú˛5UW˛ˇ’UUTÚ˛ :™¨*™™¨Ú˛ 5UTàUUTÚ˛ :™¨H
  770. ™™¨Ú˛ 5UTHUUTÚ˛ :™¨H
  771. ™™¨Ú˛ 5UTHUUTÚ˛ :™¨H
  772. ™™¨˛Û˛ 5UTàUUTÚ˛ :™¨
  773. ™™¨Ú˛ 5UTˇUUTÚ˛:™¨˛
  774. ™™¨Ú˛5UT˛UUTÚ˛:™¨˛
  775. ™™¨Ú˛5UT˛UUTÚ˛:™¨˛
  776. ™™¨Ú˛5UT˛UUTÚ˛:™¨˛
  777. ™™¨Ú˛ 5UT?ˇˇUUTÚ˛ :™¨@ä™™¨Ú˛ 5UT@çUUTÚ˛ :™¨@ä™™¨Ú˛ 5UT@çUUTÚ˛ :™¨@ä™™¨Ú˛ 5UT@çUUTÚ˛ :™¨@ä™™¨Ú˛ 5UT@çUUTÚ˛ :™¨@ä™™¨Ú˛ 5UT@çUUTÚ˛ :™¨@ä™™¨Ú˛ 5UT@çUUTÚ˛:™´˛ˇ˙™™¨Ú˛5˙UTÚ˛:Ä˚*¨Ú˛5˙UTÚ˛ :ü  *¨Ú˛ 5      UTÚ˛ :Ñ3ã≥§*¨Ú˛ 5JIî(UTÚ˛ :ÑzIì0*¨Ú˛ 5BI    ®UTÚ˛ :Ñ2I$*¨Ú˛5˙UT0Ú˛:Ä˚*¨`Ú ˛5˘UT¿Ú
  778. ˛:˘™¨
  779. ˛5˘UT
  780. ˛:˘™¨
  781. ˛5˘UT
  782. ˛:˘™¨
  783. ˛5˘UT
  784. ˛:˘™¨
  785. ˛5˘UTòR¿à¿à3&ë)Ù ıd˛˘'’U¯Ä˙˙˙˛˘Ä)Ùıt˛˘z™™ØÄ˙˙˙˛˘Ä*Ù ı<˝Ä˚’˛U‡˙ ˙˘Ä˙ˇ*Ùı˝Ä˚∫™™´˙ ˙˘Ä˙ˇ)Ù ı ˝Ä˚5˝U˙ ˙˘Ä˙ˇ+ÙıL˝¿˚Í∫™™´¿˚`˙˘¿˙ˇ,Ù ı<˝@¸’]UUV`˚@˙˘@˙ˇ*Ùı˝@¸¸™˚@˙˘@˙ˇ+Ù ı˝ ¸˝UT˚Ä˙˘  ˙ˇ,Ùı˝ ¸:™Æ™™¨˚Ä˙˘  ˙ˇ,Ù ı˝ ¸u˝UTĸÄ˙˘  ˙ˇ*Ùıˇ¸˝¸¸™®@˝¯Ä˙@˙ˇ2Ù ˙ ˝˝˝    UUWUUX ˝¯Ä˙@˙ˇ2Ù˙ ˝˝˝    ™™´™™∞˝¯@˙Ä˙ˇ2Ù ˙ ˝˝ ˝˛U’Up˝¯`˙ Ä˙0ˇ/Ù˙ ˝˝˝
  786. ¸™†˝¯ ˙˘ ˇ/Ù ˙ ˝˝˝¸U@˝¯˙˘@ˇ1Ù˙ ˝˝˝*˛™Í™¿˝¯˙˘@ˇ2Ù ˙ ˝˝˝u˛UuUÄIJ¯˙˘Äˇ5Ù@ F<¸Ä˛j˛™∫´˝Ä˛ ¯˘Ä˙˛6Ù Ä@ BD¸¿˛’˛U]WÜ@˛`¯˘¿˙˛3Ù8ΔIñ ¢e∏D¸@˚™à˛@¯˘@˙˛4Ù %!RX ¢ñ<¸ ¸UTx ˛Ä¯˘  ˙˛3Ù•Ác– ÚÙ¸¸™®0ˆÄ˙@˙˛3Ù •    R ÑD¸¸UPxˆ@˙Ä˙˛2Ù8«Iê d<¸¸™†Ãˆ ˙˘ ˛0Ù  ˝ ˝¸¸U@܈˙˘@˛/Ù ˝ ˝¸
  787. ¸™†˝ˆ˙˘Ä˛-Ù ˙ ˝˚¿˝UW˝`ˆ˙¿˚˝-Ù˙ ˝˚`˝™Æ ˝¿ˆ˙0`˚˝,Ù ˙ ˝˚˝UX˝ÙÄ˚@˚˝2Ù `˛ ˝˚ *˝™∞IJÙ`¸Ä ˚0˝2Ù   ˛ ˝˚5˝U¿`˛Ù¸˚¿˝6Ù    &)v0 ˛ˇ¸˚Äj˛™´Ä0˛Ä0Ù ¸ ĽĽ2Ù     I)IH ˛˙`˝UV ˝Ä¿Ù¸0`˝¸4Ù    I)Ix ˛˙j˛™∏IJáÚ‡˛¿˝8¸5Ù     â)I@ ˛˙’˛U¿˛p˛∏Ú˛˛Ä¿¸1ÙÜ'I0 8Ñ˘˙™™Ø˝‡ÚÄx˝˚,Ù ˙ $Ñ˘è’U˝>@Ò|Ä˝Ä˚'Ù˙ "≥8ú˘Ä˛˚ˇ¿@Òˇ˚˛˙ˆˆˇ"ƒ§§˘Äˆ@flÙ˙ "ѧº˘Äˆ@flÙ ˙ $ѧ§˙ı flÙ˙ 8É8ú˙ı flÙ ˙  ˙ı flÙ˙  ˙ı flÙ ˙ ˛˙ı flÙ˝| ˛˙ı flÙ ˛É ˛˙ı flÙ˛    8Ä Ä˙ı flÙ ˛    ÷@ ˙ı flÙ˛    ´@ úƒ˙ı flÙ ˛    U@ §•$˙ı flÙ˛    ´@ §•$˙ı flÙ ¿U@ §•$˙ı flÙ@´@ úúƒ˙ı flÙ ÄU@ ˘Äˆ@flÙÅ´@ ˘Äˆ@flÙ     U@ ˛˘Äˆ@flÙ    ´@ ˛˘Äˆ@flÙ     U@ ˛˘Äˆ@flÙ˛    ´@ ˘@ˆÄflÙ ˛    U@ "˘@ˆÄflÙ˛    ´@ "ì$˘@ˆÄflò¿ài¿àië&
  788. 
  789. ˛:˘™¨
  790. ˛5˘UT
  791. ˛:˘™¨
  792. ˛5˘UT
  793. ˛:˘™¨
  794. ˛5˘UT
  795. ˛:˘™¨
  796. ˛5˘UT
  797. ˛:˘™¨
  798. ˛5˘UT
  799. ˛:˘™¨
  800. ˛5˘UT
  801. ˛:˘™¨
  802. ˛5˘UT
  803. ˛:˘™¨
  804. ˛5˘UT
  805. ˛:˘™¨
  806. ˛5˘UT
  807. ˛:˘™¨
  808. ˛5˘UT
  809. ˛:˘™¨
  810. ˛5˘UT
  811. ˛:˘™¨
  812. ˛5˘UT
  813. ˛:˘™¨
  814. ˛5˘UT
  815. ˛:˘™¨
  816. ˛5˘UT
  817. ˛:˘™¨
  818. ˛5˘UT
  819. ˛:˘™¨
  820. ˛5˘UT
  821. ˛:˘™¨
  822. ˛5˘UT
  823. ˛:˘™¨
  824. ˛5˘UT
  825. ˛:˘™¨
  826. ˛5˘UT
  827. ˛:˘™¨
  828. ˛5˘UT
  829. ˛:˘™¨
  830. ˛5˘UT
  831. ˛:˘™¨
  832. ˛5˘UT
  833. ˛:˘™¨
  834. ˛5˘UT
  835. ˛:˘™¨
  836. ˛5˘UT
  837. ˛:˘™¨
  838. ˛5˘UT
  839. ˛:˘™¨
  840. ˛5˘UT
  841. ˛:˘™¨
  842. ˛5˘UT
  843. ˛:˘™¨
  844. ˛5˘UT
  845. ˛:˘™¨
  846. ˛5˘UT
  847. ˛:˘™¨
  848. ˛5˘UT
  849. ˛:˘™¨
  850. ˛5˘UT
  851. ˛:˘™¨
  852. ˛5˘UTòR à à&38ëÙ ˛    U@ "ê•D˘`˜ÄflÙ˛    ´@ "ì°Ñ˘ ˜fiÙ ÄU@ *î•D˘ ˜fiÙ´@ sô$˘˜fiÙ U@ ˘˜fiÙ    Å´@ ˛˘˜fiÙ     @U@ ˛˘˜fiÙ    @´@ ˛˘˜fiÙ     ÄU@ ˛˘˜fiÙ˛    ´@ @ƒ˘˜fiÙ ˛    U@ "D˘˜fiÙ˛    ´@  ›úL˘˜ fiÙ ˛    U@ RRT˘˜ fiÙ˛    ´@ RR\¯Ä¯@fiÙ ¿U@ "RRT¯@¯ÄfiÙ´@ R\L¯`˘ÄfiÙ ÄU@ ¯ ˘›ÙA´@ ¯˘›Ù     @U@ ˛¯˘›Ù    @´@ ˛¯˘›Ù     ÄU@ ˛¯˘›Ù˛    ´@ ¯˘ ›Ù ˛    U@ "˜Ä˙@›Ù˛    ´@  c•‹˜`˚ě٠˛    U@ î%$˜0˚‹Ù˛    ´@ ì%$˜˚‹Ù ÄU@ "ê•$˜˚‹ÙÄ´@ g$˜ĸ`‹Ù     ÄU@ ˛ˆ¿¸¿‹Ù    Å´@ ˛ˆ0˝€Ù     ¿U@ ˛ˆ˝€Ù    Ä´@ ˛ˆ¿˛‡€òà ià i&ë8
  853. 
  854. ˛:˘™¨
  855. ˛5˘UT
  856. ˛:˘™¨
  857. ˛5˘UT
  858. ˛:˘™¨
  859. ˛5˘UT
  860. ˛:˘™¨
  861. ˛5˘UT
  862. ˛:˘™¨
  863. ˛5˘UT
  864. ˛:˘™¨
  865. ˛5˘UT
  866. ˛:˘™¨
  867. ˛5˘UT
  868. ˛:˘™¨
  869. ˛5˘UT
  870. ˛:˘™¨
  871. ˛5˘UT
  872. ˛:˘™¨
  873. ˛5˘UT
  874. ˛:˘™¨
  875. ˛5˘UT
  876. ˛:˘™¨
  877. ˛5˘UT
  878. ˛:˘™¨
  879. ˛5˘UT
  880. ˛:˘™¨
  881. ˛5˘UT
  882. ˛:˘™¨
  883. ˛5˘UT
  884. ˛:˘™¨ ˛5˘UTÒÄòR@à@àú3øëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØÛæˇÙÄæÙΩÙΩÙΩ    Ù¿    Ù ¿òà@ià@iúëø
  885. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍ˚ÄÍıˇÄ
  886. ˚ĸ`ıı ¸˛¸ ¸ ¸¸A‡ÄˇòR@Äà@Äàø3·ëÙ˘ò@3ÃÙw¿ÄÄ3ÃÙˇÄ¡ò@3>>œÙ˛¡ôòàÄ˝3œÙ˛Òôò@˝3œÙˇÄ¡ô¯àÄ3?33œÙˇÄ¡ôÄ@3033œÙ¡ôààÄ2133œÙ6¡ò@<33œÙΩÙΩÙΩÙΩÙΩÙΩˇÙΩU
  887. Ù
  888. ı™Ø ˇ
  889. ÙıUT 
  890. Ù
  891. ı™¨ 
  892. ÙıUT Ù
  893. ı™≠˚ˇøÔˇ‡ÙÓˇÙıUTÄÓ3˛„˚0ÌÙ
  894. ı™≠˙øÔˇ‡3˛0˚pÓˇÙıUTÄÓ 3>>36xˇÄ0ÌˆÒˇøÔˇ‡˝3    3#38åÿ0Óˇ‰ÄÓ˝3330|ÿ0ÌÙ
  895. ı™≠˙øÔˇ‡3?33˛30Ãÿ0ÓˇÙıUTÄÓ3033˛30Ãÿ0ÌÙ
  896. ı™≠˙øÔˇ‡2133˛30Ãÿ0ÓˇÙıUTÄÓ <33„0|ÿ0ÌÙ
  897. ı™≠˚ˇøÔˇ‡˙¸ÓˇÙıUT‰#ËÙ
  898. ı™¨‰Ë
  899. ÙıUT 
  900. Ù
  901. ı™Ø ˇÙıUT @◊Ù
  902. ı™¨ ?à@B◊ÙıUT @à‡@‚◊'Ù
  903. ı™¨  Å»@¬@H¸Ä¿DÈ&ÙıUTÄ  »H@Ç˝H¸Ä@@È*Ù
  904. ı™ ¨Ä  àì@2;åÇ‹pÓ01ñ≥¡ÃRÏŒÍ*ÙıU T Å     ÉBIPBRTRêIHJXƒ§ÇRE)Í*Ù
  905. ı™ ¨ Å
  906. sÛGIP2RTRêIxBPá†ÅíRE)Í*ÙıU T  ,êC∏H†
  907. R(RêI@JPÑ$ÄRRE)Í+Ù
  908. ı™!¨ 0  ?ÿ     A0†rL(Rp)01êÉCåN$… ÎÙıUT 0   p
  909. Û@‡˙flÙ
  910. ı™¨  `@@˙`flÙıUT ?¿@◊Ù
  911. ı™¨ @◊
  912. ÙıUW ˇ
  913. Ù
  914. ı™¨ 
  915. ÙıUW ˇ
  916. Ù
  917. ı™¨ 
  918. ÙıUT 
  919. Ù
  920. ı™¨ 
  921. ÙıUT 
  922. Ù
  923. ı™¨ 
  924. ÙıUT Ù
  925. ı™¨¯Ä¯˜˚ÙıUT¯Ä¯˜˚&Ù
  926. ı™¨˙åìÄ˚Δq1¿Û dú˙v3âé¸$ÙıUT˙B§˙    !IJÚ ˙I
  927. JP¸%Ù
  928. ı™¨˙N√˙    'IyÄÛv˙I:Kø&ÙıUT˙R†Ä˚    )I@@Ûï˙IJJ¸ò@àÄi@àÄiøë·
  929. ¸C0ÄÄ¸C0Ä$@¸@`Ä$@¸@¿Ä<@¸@¿Äf@¸@ÄôÄ¸@¿Äˇ¸@¿ÄÅ¸ Å¸˛B¸˛<
  930. ¸˚
  931. ¸˚ııˇ¸ıUT
  932. ˛ˇÍ˘™¨
  933. ˛5˘UT
  934. ˛:˘™¨
  935. ˛5˘UT
  936. ˛ˇ∫˘™¨
  937. ˛5˘UT
  938. ˛ˇ∫˘™¨
  939. ˛5˘UT
  940. ˛ˇ∫˘™¨
  941. ˛5˘UT
  942. ˛ˇ∫˘™¨
  943. ˛5˘UT
  944. ˛ˇ∫˘™¨
  945. ˛5˘UT
  946. ˛ˇ∫˘™¨
  947. ˛5˘UT
  948. ˛:˘™¨
  949. ˛5˘UT
  950. ˛ˇ˙˘™¨
  951. ˛5˘UT
  952. ˛:˘™¨
  953. ˛5˘UT ˛:˘™¨Ò ˛5˘UT‡Ú ˛:˘™¨0Ú˛5UT˛UUTÚ˛:™´˛ˇÚ™™¨Ú˛5US˛ˇıUUTÚ˛:™´˛ˇÚ™™¨Ú˛5US˛ˇıUUTÚ˛:™´˛ˇÚ™™¨Ú˛5US˛ˇıUUTÚ˛ :™´øˇˇÚ™™¨Ú˛ˇıUS˛ˇıUUTÚ˛:™´˛ˇÚ™™¨Ú˛ˇıUT˛UUTÚ ˛:˘™¨Ú ˛5˘UTÚ ˛:˘™¨Ú˛5˙ˇ’TÚ˛;˙ˇͨڲ5˙ˇ’TÚ˛ ;ᡡ˝flˇˇÍ¨Ú˛ 5ªˇˇ˝flˇˇ’TÚ˛ ;ª7Ÿ•Ÿ∂3ͨÚ˛ 5Ü⁄∂úµÌ’TÚ˛ ;æ⁄∞Ω÷∂aͨÚ˛ 5æ›wΩ÷∑Ø’TÚòRÄ¿àÄ¿à·3ë%Ù
  954. ı™¨˙éó˙    'q3ÄÛ t∏˙I;âú¸ÙıUTÓ@Ê˙Ù
  955. ı™¨Ó@Ê˙
  956. ÙıUT  Ù
  957. ı™¨¯˛˚ˇ¿ˇ˚˛˙&ÙıUT˘Ä˝>|Ä˝Ä˚(Ù
  958. ı™¨˘˝‡ÚÄx˝˚,ÙıUT˙Ä¿˛p˛8Ú˛˛Ä¿¸*Ù
  959. ı™¨˙˝8IJÚ‡˛¿˝8¸(ÙıUT˙`˝ ¸¿Ù¸0`˝¸*Ù
  960. ı™¨˚Ä˝Ä0¸0Ù ¸ ĽĽ&ÙıUT˚˚¿`¸Ù¸˚¿˝&Ù
  961. ı™¨˚ ˚0ĸÙ`¸Ä ˚0˝$ÙıUT˚˚˚ÙÄ˚@˚˝$Ù
  962. ı™¨˚`˚ ˙¿ˆ˙0`˚˝$ÙıUT˚¿˚˙`ˆ˙¿˚˝"Ù
  963. ı™¨¸˘†˙ˆ˙˘Ä˛"ÙıUT¸˘@˙ˆ˙˘@˛"Ù
  964. ı™¨¸˘†˙ˆ ˙˘ ˛$ÙıUT¸˙˙ˆ@˙Ä˙˛$Ù
  965. ı™¨¸˙˙ˆÄ˙@˙˛$ÙıUT¸ ˙˘Ä¯˘  ˙˛$Ù
  966. ı™¨¸@˙˘@¯˘@˙˛$ÙıUT¸¿˙˘`¯˘¿˙˛$Ù
  967. ı™¨¸Ä˙˘ ¯˘Ä˙˛&ÙıUT˝˘ Ä˙¯˙˘Äˇ&Ù
  968. ı™¨˝˘@@˙¯˙˘@ˇ&ÙıUT˝˘@@˙¯˙˘@ˇ&Ù
  969. ı™¨˝˘Ä ˙¯ ˙˘ ˇ(ÙıUT˝ ˙Ä0˙¯`˙ Ä˙0ˇ(Ù
  970. ı™¨˝˙˙¯@˙Ä˙ˇ(ÙıUT˝˙˙¯Ä˙@˙ˇ(Ù
  971. ı™¨˝˙˙¯Ä˙@˙ˇ(ÙıUT˝ ˙˘Ä˙˘  ˙ˇ(Ù
  972. ı™¨˝ ˙˘Ä˙˘  ˙ˇ(ÙıUT˝ ˙˘Ä˙˘  ˙ˇ(Ù
  973. ı™¨˝@˙˘@˙˘@˙ˇ(ÙıUT˝@˙˘@˙˘@˙ˇ(Ù
  974. ı™¨˝¿˙˘`˙˘¿˙ˇ(ÙıUT˝Ä˙˘ ˙˘Ä˙ˇ(Ù
  975. ı™¨˝Ä˙˘ ˙˘Ä˙ˇ(ÙıUT˝Ä˙˘ ˙˘Ä˙ˇ)Ù
  976. ı™¨˛˘ ˛Ä˙˙˙˛˘Ä)ÙıUT˛˘ ˛Ä˙˙˙˛˘Ä)Ù
  977. ı™¨˛˘ ˛Ä˙˙˙˛˘Ä)ÙıUT˛˘ ˛Ä˙˙˙˛˘Ä)Ù
  978. ı™¨˛˘ ˛Ä˙˙˙˛˘Ä)ÙıUT˛˘@˛@˙˙˙˛˘@)Ù
  979. ı™¨˛˘@˛@˙˙˙˛˘@)ÙıUT˛˘@˛@˙˙˙˛˘@-Ù
  980. ı™¨˛˘@˛@˙˙˙˛˝@-ÙıUT˛˘@˛@˙˙˙˛0˝@/ˆˇÍı™¨˛˘@˛@˙˙˙˛‡˝@-ÙıUT˛˘@˛@˙˙˙˛˛¿˝@-Ù
  981. ı™¨˛˘@˛@˙˙˙˛‡˝@-ÙıUT˛˘@˛@˙˙˙˛0˝@-Ù
  982. ı™¨˛˘@˛@˙˙˙˛˝@)Ùıˇ¸˛˘@˛@˙˙˙˛˘@)Ù ı˛˘@˛@˙˙˙˛˘@)Ùı˛˘@˛@˙˙˙˛˘@)Ù ı˛˘@˛@˙˙˙˛˘@)Ùı˛˘ ˛Ä˙˙˙˛˘Ä)Ù ı<˛˘ ˛Ä˙˙˙˛˘Ä)Ùıd˛˘ ?ˇÄ˙˙˙˛˘ÄòÄà¿iÄà¿i·ë
  983. ˛ ;ø=yΩŸƒsͨڲ5˙ˇ’TÚ˛;˙ˇÍ¨Ú ˛5˘UTÚ ˛:˘™¨Ú ˛5˘UTÚ ˛:˘™¨Ú ˛5˘UTÚ ˛:˘™¨Ú ˛5˘UTÚ ˛:˘™¨Ú˛5UW˛ˇ’UUTÚ˛ :™¨*™™¨Ú˛ 5UTàUUTÚ˛ :™¨H
  984. ™™¨Ú˛ 5UTHUUTÚ˛ :™¨H
  985. ™™¨Ú˛ 5UTHUUTÚ˛ :™¨H
  986. ™™¨˛Û˛ 5UTàUUTÚ˛ :™¨
  987. ™™¨Ú˛ 5UTˇUUTÚ˛:™¨˛
  988. ™™¨Ú˛5UT˛UUTÚ˛:™¨˛
  989. ™™¨Ú˛5UT˛UUTÚ˛:™¨˛
  990. ™™¨Ú˛5UT˛UUTÚ˛:™¨˛
  991. ™™¨Ú˛ 5UT?ˇˇUUTÚ˛ :™¨@ä™™¨Ú˛ 5UT@çUUTÚ˛ :™¨@ä™™¨Ú˛ 5UT@çUUTÚ˛ :™¨@ä™™¨Ú˛ 5UT@çUUTÚ˛ :™¨@ä™™¨Ú˛ 5UT@çUUTÚ˛ :™¨@ä™™¨Ú˛ 5UT@çUUTÚ˛ :™¨@ä™™¨Ú˛ 5UT@çUUTÚ˛:™´˛ˇ˙™™¨Ú˛5˙UTÚ˛:Ä˚*¨Ú˛5˙UTÚ˛ :ü  *¨Ú˛ 5      UTÚ˛ :Ñ3ã≥§*¨Ú˛ 5JIî(UTÚ˛ :ÑzIì0*¨Ú˛ 5BI    ®UTÚ˛ :Ñ2I$*¨Ú˛5˙UT0Ú˛:Ä˚*¨`Ú ˛5˘UT¿Ú
  992. ˛:˘™¨
  993. ˛5˘UT
  994. ˛:˘™¨
  995. ˛5˘UT
  996. ˛:˘™¨
  997. ˛5˘UT
  998. ˛:˘™¨
  999. ˛5˘UTòR¿à¿à3&ë)Ù ıd˛˘'’U¯Ä˙˙˙˛˘Ä)Ùıt˛˘z™™ØÄ˙˙˙˛˘Ä*Ù ı<˝Ä˚’˛U‡˙ ˙˘Ä˙ˇ*Ùı˝Ä˚∫™™´˙ ˙˘Ä˙ˇ)Ù ı ˝Ä˚5˝U˙ ˙˘Ä˙ˇ+ÙıL˝¿˚Í∫™™´¿˚`˙˘¿˙ˇ,Ù ı<˝@¸’]UUV`˚@˙˘@˙ˇ*Ùı˝@¸¸™˚@˙˘@˙ˇ+Ù ı˝ ¸˝UT˚Ä˙˘  ˙ˇ,Ùı˝ ¸:™Æ™™¨˚Ä˙˘  ˙ˇ,Ù ı˝ ¸u˝UTĸÄ˙˘  ˙ˇ*Ùıˇ¸˝¸¸™®@˝¯Ä˙@˙ˇ2Ù ˙ ˝˝˝    UUWUUX ˝¯Ä˙@˙ˇ2Ù˙ ˝˝˝    ™™´™™∞˝¯@˙Ä˙ˇ2Ù ˙ ˝˝ ˝˛U’Up˝¯`˙ Ä˙0ˇ/Ù˙ ˝˝˝
  1000. ¸™†˝¯ ˙˘ ˇ/Ù ˙ ˝˝˝¸U@˝¯˙˘@ˇ1Ù˙ ˝˝˝*˛™Í™¿˝¯˙˘@ˇ2Ù ˙ ˝˝˝u˛UuUÄIJ¯˙˘Äˇ5Ù@ F<¸Ä˛j˛™∫´˝Ä˛ ¯˘Ä˙˛6Ù Ä@ BD¸¿˛’˛U]WÜ@˛`¯˘¿˙˛3Ù8ΔIñ ¢e∏D¸@˚™à˛@¯˘@˙˛4Ù %!RX ¢ñ<¸ ¸UTx ˛Ä¯˘  ˙˛3Ù•Ác– ÚÙ¸¸™®0ˆÄ˙@˙˛3Ù •    R ÑD¸¸UPxˆ@˙Ä˙˛2Ù8«Iê d<¸¸™†Ãˆ ˙˘ ˛0Ù  ˝ ˝¸¸U@܈˙˘@˛/Ù ˝ ˝¸
  1001. ¸™†˝ˆ˙˘Ä˛-Ù ˙ ˝˚¿˝UW˝`ˆ˙¿˚˝-Ù˙ ˝˚`˝™Æ ˝¿ˆ˙0`˚˝,Ù ˙ ˝˚˝UX˝ÙÄ˚@˚˝2Ù `˛ ˝˚ *˝™∞IJÙ`¸Ä ˚0˝2Ù   ˛ ˝˚5˝U¿`˛Ù¸˚¿˝6Ù    &)v0 ˛ˇ¸˚Äj˛™´Ä0˛Ä0Ù ¸ ĽĽ2Ù     I)IH ˛˙`˝UV ˝Ä¿Ù¸0`˝¸4Ù    I)Ix ˛˙j˛™∏IJáÚ‡˛¿˝8¸5Ù     â)I@ ˛˙’˛U¿˛p˛∏Ú˛˛Ä¿¸1ÙÜ'I0 8Ñ˘˙™™Ø˝‡ÚÄx˝˚,Ù ˙ $Ñ˘è’U˝>@Ò|Ä˝Ä˚'Ù˙ "≥8ú˘Ä˛˚ˇ¿@Òˇ˚˛˙ˆˆˇ"ƒ§§˘Äˆ@flÙ˙ "ѧº˘Äˆ@flÙ ˙ $ѧ§˙ı flÙ˙ 8É8ú˙ı flÙ ˙  ˙ı flÙ˙  ˙ı flÙ ˙ ˛˙ı flÙ˝| ˛˙ı flÙ ˛É ˛˙ı flÙ˛    8Ä Ä˙ı flÙ ˛    ÷@ ˙ı flÙ˛    ´@ úƒ˙ı flÙ ˛    U@ §•$˙ı flÙ˛    ´@ §•$˙ı flÙ ¿U@ §•$˙ı flÙ@´@ úúƒ˙ı flÙ ÄU@ ˘Äˆ@flÙÅ´@ ˘Äˆ@flÙ     U@ ˛˘Äˆ@flÙ    ´@ ˛˘Äˆ@flÙ     U@ ˛˘Äˆ@flÙ˛    ´@ ˘@ˆÄflÙ ˛    U@ "˘@ˆÄflÙ˛    ´@ "ì$˘@ˆÄflò¿ài¿àië&
  1002. 
  1003. ˛:˘™¨
  1004. ˛5˘UT
  1005. ˛:˘™¨
  1006. ˛5˘UT
  1007. ˛:˘™¨
  1008. ˛5˘UT
  1009. ˛:˘™¨
  1010. ˛5˘UT
  1011. ˛:˘™¨
  1012. ˛5˘UT
  1013. ˛:˘™¨
  1014. ˛5˘UT
  1015. ˛:˘™¨
  1016. ˛5˘UT
  1017. ˛:˘™¨
  1018. ˛5˘UT
  1019. ˛:˘™¨
  1020. ˛5˘UT
  1021. ˛:˘™¨
  1022. ˛5˘UT
  1023. ˛:˘™¨
  1024. ˛5˘UT
  1025. ˛:˘™¨
  1026. ˛5˘UT
  1027. ˛:˘™¨
  1028. ˛5˘UT
  1029. ˛:˘™¨
  1030. ˛5˘UT
  1031. ˛:˘™¨
  1032. ˛5˘UT
  1033. ˛:˘™¨
  1034. ˛5˘UT
  1035. ˛:˘™¨
  1036. ˛5˘UT
  1037. ˛:˘™¨
  1038. ˛5˘UT
  1039. ˛:˘™¨
  1040. ˛5˘UT
  1041. ˛:˘™¨
  1042. ˛5˘UT
  1043. ˛:˘™¨
  1044. ˛5˘UT
  1045. ˛:˘™¨
  1046. ˛5˘UT
  1047. ˛:˘™¨
  1048. ˛5˘UT
  1049. ˛:˘™¨
  1050. ˛5˘UT
  1051. ˛:˘™¨
  1052. ˛5˘UT
  1053. ˛:˘™¨
  1054. ˛5˘UT
  1055. ˛:˘™¨
  1056. ˛5˘UT
  1057. ˛:˘™¨
  1058. ˛5˘UT
  1059. ˛:˘™¨
  1060. ˛5˘UT
  1061. ˛:˘™¨
  1062. ˛5˘UT
  1063. ˛:˘™¨
  1064. ˛5˘UT
  1065. ˛:˘™¨
  1066. ˛5˘UTòR à à&38ëÙ ˛    U@ "ê•D˘`˜ÄflÙ˛    ´@ "ì°Ñ˘ ˜fiÙ ÄU@ *î•D˘ ˜fiÙ´@ sô$˘˜fiÙ U@ ˘˜fiÙ    Å´@ ˛˘˜fiÙ     @U@ ˛˘˜fiÙ    @´@ ˛˘˜fiÙ     ÄU@ ˛˘˜fiÙ˛    ´@ @ƒ˘˜fiÙ ˛    U@ "D˘˜fiÙ˛    ´@  ›úL˘˜ fiÙ ˛    U@ RRT˘˜ fiÙ˛    ´@ RR\¯Ä¯@fiÙ ¿U@ "RRT¯@¯ÄfiÙ´@ R\L¯`˘ÄfiÙ ÄU@ ¯ ˘›ÙA´@ ¯˘›Ù     @U@ ˛¯˘›Ù    @´@ ˛¯˘›Ù     ÄU@ ˛¯˘›Ù˛    ´@ ¯˘ ›Ù ˛    U@ "˜Ä˙@›Ù˛    ´@  c•‹˜`˚ě٠˛    U@ î%$˜0˚‹Ù˛    ´@ ì%$˜˚‹Ù ÄU@ "ê•$˜˚‹ÙÄ´@ g$˜ĸ`‹Ù     ÄU@ ˛ˆ¿¸¿‹Ù    Å´@ ˛ˆ0˝€Ù     ¿U@ ˛ˆ˝€Ù    Ä´@ ˛ˆ¿˛‡€òà ià i&ë8
  1067. 
  1068. ˛:˘™¨
  1069. ˛5˘UT
  1070. ˛:˘™¨
  1071. ˛5˘UT
  1072. ˛:˘™¨
  1073. ˛5˘UT
  1074. ˛:˘™¨
  1075. ˛5˘UT
  1076. ˛:˘™¨
  1077. ˛5˘UT
  1078. ˛:˘™¨
  1079. ˛5˘UT
  1080. ˛:˘™¨
  1081. ˛5˘UT
  1082. ˛:˘™¨
  1083. ˛5˘UT
  1084. ˛:˘™¨
  1085. ˛5˘UT
  1086. ˛:˘™¨
  1087. ˛5˘UT
  1088. ˛:˘™¨
  1089. ˛5˘UT
  1090. ˛:˘™¨
  1091. ˛5˘UT
  1092. ˛:˘™¨
  1093. ˛5˘UT
  1094. ˛:˘™¨
  1095. ˛5˘UT
  1096. ˛:˘™¨
  1097. ˛5˘UT
  1098. ˛:˘™¨
  1099. ˛5˘UTòR@à@à83ZëÙ     ÄU@ ˛ıxÄ€Ù˛    ´@  ñÙı¿¯⁄Ù ˛    U@  ÇÑÙ?ˇŸÙ˛    ´@ 2pÑ Ù ˛    U@ ꉠÙ˛    ´@ 
  1100. êÑ Ù ¿U@ 
  1101. êÑ ÙÄ´@ 
  1102. pÙı◊Ù     U@ ˛ı◊Ù    Å´@ ˛ıYåp⁄Ù     @U@ ˛ıbRÄ⁄Ù    @´@ ˛ıCfi`⁄Ù     ÄU@ ˛ıB⁄Ù˛´@ ˛ıAå‡⁄Ù ˛U@ ˛ Ù˛´@ ˛ Ù ˛?ˇ¯ ˛ Ù˛@ ˛ Ù     ġ¸ ˛ Ù    @Ä ˛ Ù     @Ä ˛ Ù    ÅÄ ˛ Ù     Ä ˛ˇ¸ ÙÄ ˝ Ù ¿ˇ¸ ˝ Ù˛@ ˝0˙ ⁄Ù ˛?ˇ¯ ˝˘ ⁄"Ù˛´@ ˝1Û3gIJxx|⁄!Ù ˛U@ ˝˛3å¿˛<˛Ã⁄!Ù˛´@ ˝˛3 ¿˛ Ï˛Ã⁄ Ù U@ ˝˛3¿˛    ˝Ã⁄ Ù´@ ˝˛3 ˝å˛Ã⁄!Ù U@ ˝˛3 @˛ ˛Ã⁄"Ù´@ ˝1ÒÛIJ xx|⁄Ù U@ ˝˝0œÙ´@ ˝˛0œÙ     U@ ˛ˇ¸˛‡œÙ˛´@ ˛ Ù ˛U@ ˛˙ˇ¯˙ˇ‡‹%Ù˛´@ ˛ˇˇˇ¯ ‹%Ù ˛U@ ‡4ˇˇˇ¯ ‹%Ù˛´@ 04˛ÇÑ¡¯x ‹'ˆˆˇ1Ù¸¬ᜯà ˘È-Ù#@´@ 34˛¬ᜯà ˘È3Ù- @U@ Û4˛¬&ᜯàë¿qsá≈Œ√àéÍ3Ù-A´@ 34˛ÇÑFá√¯àí !ÑHë&$IÍ3Ù- @U@ 34˛ÑᜯàR !Hê‰# Í3Ù-@´@ 34˛ÑᜯàR !œé$$LÍ3Ù- ÄU@ 1Ù˛ Ñᜯà2 !$$JÍ3Ù˛´@ ˛ ˛¬ᡯx 2 !Hë$$IÍ4Ù ˛U@ ˛!ˇˇˇ¯ ¿á‰√»é Î%Ù˛™@ ˛ˇˇˇ¯ ‹%Ù ˛8Ä ˛ˇˇˇ¯ ‹Ù˛É ˛ˇ¸˙ˇ¯˙ˇ‡‹Ù ˝| ˝ Ù˙ ˝ Ù ˙ ˝ Ù˙ ˝ Ù ˙ ˝¯˙ˇ‡‹Ù˙ ˝¯ˇ ‹Ù ˙ ˝¯ˇ ‹Ù˙ ˝¯>Áx ‹$Ù ˙ ˝¯
  1103. Ñ0Áà‡˚ ¸Î$Ù˙ ˝¯
  1104. Ñ0Áà˚¸Îòà@ià@i8ëZ
  1105. 
  1106. ˛:˘™¨
  1107. ˛5˘UT
  1108. ˛:˘™¨
  1109. ˛5˘UT
  1110. ˛:˘™¨
  1111. ˛5˘UT
  1112. ˛:˘™¨
  1113. ˛5˘UT
  1114. ˛:˘™¨
  1115. ˛5˘UT
  1116. ˛:˘™¨
  1117. ˛5˘UT
  1118. ˛:˘™¨
  1119. ˛5˘UT
  1120. ˛:˘™¨
  1121. ˛5˘UT
  1122. ˛:˘™¨
  1123. ˛5˘UT
  1124. ˛:˘™¨
  1125. ˛5˘UT
  1126. ˛:˘™¨
  1127. ˛5˘UT
  1128. ˛:˘™¨
  1129. ˛5˘UT
  1130. ˛:˘™¨
  1131. ˛5˘UT
  1132. ˛:˘™¨
  1133. ˛5˘UT
  1134. ˛:˘™¨
  1135. ˛5˘UT
  1136. ˛:˘™¨
  1137. ˛5˘UT
  1138. ˛:˘™¨
  1139. ˛5˘UT
  1140. ˛:˘™¨
  1141. ˛5˘UT
  1142. ˛:˘™¨
  1143. ˛5˘UT
  1144. ˛:˘™¨
  1145. ˛5˘UT
  1146. ˛:˘™¨
  1147. ˛5˘UT
  1148. ˛:˘™¨
  1149. ˛5˘UT
  1150. ˛:˘™¨
  1151. ˛5˘UT
  1152. ˛:˘™¨
  1153. ˛5˘UT ˛?˛ˇ¸™¨˛0’˝UT˛0¸™¨˛0’˝UT˛0¸™¨˛0’˝UT˛0¸™¨˛0’˝UT˛0¸™¨˛0’˝UT˛0¸™¨˛0’˝UT˛0¸™¨˛0’˝UT˛0¸™¨˛0’˝UTòR@Äà@ÄàZ3}ë-Ù ˙ ˝¯Ñ0Áà≈òpa«Ñ8p.p\·√ÄÔ-Ù˙ ˝¯Ñ<Áà&dàí$DDà0àa$@Ô(Ù ıˇ¸¯Ñ0Áà‚$Dà‰DDÄ àA$Ó)Ùıˇ¸¯Ñ0Áà$D¯$D|p ¯AÛ„ÄÔ)Ù ı¯Ñ0Áà$DÄ$D@ ÄA@Ô)Ùı¯Ñ>Áx $Dà$DDà àA$@Ô)Ù ı¯ˇ ·ƒDpÁÑ8p p@·√àÔÙı¯ˇ ˙‰Ù ı¯ˇ ˙‰Ùı¯˙ˇ‡‹
  1154. Ù ı 
  1155. Ùı Ù ıÔ›ˇ
  1156. Ùı Ù ı¯˙ˇ‡‹Ùı¯ˇ‡‹Ù ı¯ˇ‡‹Ùı¯>ᇋ#Ù ı¯
  1157. Ñ03‡‡˚ ˙ @(ÙÄ˙¯
  1158. Ñ03‡˚˙ @0Ù å˙¯Ñ03‡≈òpa«Ñ8p.ppDpÒ3ÙUôfså„˝¯Ñ<3‡&dàí$DDà0à" "HàÒ3Ù $•âJR¯Ñ03‡‚$Dà‰DDÄ à" PÄÒ3Ù°    JRóò˝¯Ñ03‡$D¯$D|p ¯" "`pÒ3Ù •    JRî˝¯Ñ03‡$DÄ$D@ Ä" "PÒ3ÙôrLì8˝¯Ñ>á‡$Dà$DDà à" "HàÒ/Ù ˝@˙¯ˇ‡·ƒDpÁÑ8p pDqÒÙ˝@˙¯ˇ‡˙‰Ù ı¯ˇ‡˙‰Ùı¯˙ˇ‡‹
  1159. Ù ı  Ùˆˇ¸  Ù ˆ  Ùˆ  Ù ˆ  Ùˆ  Ù ˆ  Ùˆ ˇ Ù ˆ ˇ%ÙËÄ’UTÄ˚˛˛IJı)Ù ËÄ™™¨L<ë.p,<ò≥‡1`8∞‡"#èˆ/Ù$óÄÌÄ’UTDDë0à2DàÃëê…"$Hë ˜-Ù ˝`ÌÄ™™¨DDë à"DààëâC»ëˆ-Ù˝0ÌÄ’UTDDë ¯"DààëâDHüˆ)Ù ËÄ™™¨DDë Ä"DààëâÑHêˆ-Ù˝xÌÄ’UTÑDë à"DààëâÑHëˆ*Ù ËÄ™™¨<è p"<ààû‡ à‡Éœ ˜Ù˝xÌÄ’UT˝Å˚ÄÈÙ ˝ÑÌÄ™™¨˛ë¸ÄÈÙ˝ÑÌÄ’UT˛¸ËÙ ˝ÑÌÄ™™¨›Ù˝ÑÌÄ’UT›Ù ˛ÜÌÄ™™¨›Ù˛ÖÄÓÄ’UT›"Ù ˛Ñ@Ó
  1160. Ä™™¨0˘@Ó$Ù˛x ÓÄ’UT˜@˘˜ˇ0Ù ˛ ÓÄ™™¨Çcaƒ@àé.pXp\·„àé˜ˇ.Ù˛@ÓÄ’UTÇëí$@àë0àdà"a$Hë"ı.Ù ˛@ÓÄ™™¨B˛@U àDà"A$Hë ı-ˆ¸ˇ¿ÄÓÄ’UTB˝ƒ@U ¯D¯"A$Eı.ˆ¸ˇ¿ÄÓÄ™™¨‚˛$@" ÄDÄ"A$Eı.Ù˛ÄÓÄ’UT"˛$@" àDà"A$B"ı.Ù ˛Ä0ÓÄ™™¨"˝√¿" pDp@·„Ç ˆ"Ù˛Ä0ÓÄ’UT˘@ˆ ˛ ˆò@àÄi@àÄiZë}
  1161. ˛0¸™¨˛0’˝UT ˛?˛ˇ¸™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UTˇˇÄ0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛ˇÄ’˝UT˛ˇĸ™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Äˇ˝UT ¸Ä¿˝™¨¸Äˇˇ˛UT¸ÄIJ™¨¸Äˇˇ˛UT¸ÄIJ™¨¸ÄIJUT¸Ä¢"˛™¨Ûˇ‡ÚÛˇ‡Ú¸Äë˛UT¸Ä벙¨¸Äë˛UT¸Ä벙¨¸Äë˛UT¸Ä벙¨¸Äë˛UTòRÄ¿àÄ¿à}3üë$Ù ˛Ä0ÓÄ™™¨˙@˜ ˛@ˆ Ù˛Ä ÓÄ’UT˙Ę¿ÚÙ ˛@ ÓÄ™™¨›Ù˛@ ÓÄ’UT›Ù ˛  ÓÄ™™¨›Ù˛  ÓÄ’UT›'Ù ˛@Ó
  1162. Ä™™¨ÄÑ˘ ˛Û'Ù˛ÄÓ
  1163. Ä’UTÄÑ˘ ˛Û,Ù ˛˛ÌÄ™™¨ÖáÅ≈áfYásé,88ysèÙ'ÙËÄ’UTÜHÄÜHÅô"fHÅÑD2DëâÑHëÙ'Ù ËÄ™™¨DHÄÑHÅ"DHŃ"@ëâ»ëÙ'ÙËÄ’UTDHÄÑOÅ"DOÅD"8ëâHüÙ-Ù   ÓÄ™™¨‰HÄÑH"DHD"ëâHêÙ,Ùà ÌÄ’UT$HÄÑHÅ"DHÅD"DìâHëÙ.Ù äYp7ÓÄ™™¨$GÄdGDG√"8 yœ ıÙÚI'îÄÔÄ’UTÓÒÙ äI ÄÔÄ™™¨ÓàÒÙäI ÄÔÄ’UTÓpÒÙ Ò…ÄÔÄ™™¨›ÙËÄ’UT›Ù ËÄ™™¨›ÙËÄ’UT›Ù ËÄ™™¨›ÙËÄ’UT›Ù ËÄ™™Ø›ˇÙËÄ’UT›Ù ËÄ™™¨›ÙËÄ’UT›Ù ËÄ™™¨›ÙËÄ’UT›Ù ËÄ™™¨›ÙÊˇ’UT›Ù ™™¨›ÙÂ’UT›Ù ™™¨›ÙÂ’UT›Ù ™™¨›ÙÂ’UT›Ù ™™¨›ÙÂ’UW›ˇÙΩˇØØØØØØØØØØØØØØØØØØØØØØØòÄà¿iÄà¿i}ëü
  1164. ¸Ä벙¨¸Äë˛UT¸Ä벙¨¸Äë˛UT¸Ä벙¨¸Äë˛UT¸Ä벙¨¸Äë˛UT¸Ä벙¨¸Äë˛UT¸Ä벙¨¸Ä¢#˛UT¸ÄIJ™¨¸ÄIJUT¸Äˇ˛˛™¨¸ÄÄUUT¸ÄÄ
  1165. ™™¨¸ÄÄUUT¸ÄÄ
  1166. ™™¨¸ÄÄUUT¸ÄÃw
  1167. ™™¨¸ÄÇÑÖUUT¸Äédä™™¨¸ÄíÖUUT ˙ˇé‰ä™™¨¸ÄÄUUT¸ÄÄ
  1168. ™™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨
  1169. ˙ˇ’˝UTıˇ¸„„„„„„„„„„„„„„„„„„„„„„„òR¿à¿àü3¬ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò¿ài¿àiüë¬
  1170. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR à à¬3”ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØòà ià i¬ë”
  1171. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR@à@à83ZëÙ     ÄU@ ˛ıxÄ€Ù˛    ´@  ñÙı¿¯⁄Ù ˛    U@  ÇÑÙ?ˇŸÙ˛    ´@ 2pÑ Ù ˛    U@ ꉠÙ˛    ´@ 
  1172. êÑ Ù ¿U@ 
  1173. êÑ ÙÄ´@ 
  1174. pÙı◊Ù     U@ ˛ı◊Ù    Å´@ ˛ıYåp⁄Ù     @U@ ˛ıbRÄ⁄Ù    @´@ ˛ıCfi`⁄Ù     ÄU@ ˛ıB⁄Ù˛´@ ˛ıAå‡⁄Ù ˛U@ ˛ Ù˛´@ ˛ Ù ˛?ˇ¯ ˛ Ù˛@ ˛ Ù     ġ¸ ˛ Ù    @Ä ˛ Ù     @Ä ˛ Ù    ÅÄ ˛ Ù     Ä ˛ˇ¸ ÙÄ ˝ Ù ¿ˇ¸ ˝ Ù˛@ ˝0˙ ⁄Ù ˛?ˇ¯ ˝˘ ⁄"Ù˛´@ ˝1Û3gIJxx|⁄!Ù ˛U@ ˝˛3å¿˛<˛Ã⁄!Ù˛´@ ˝˛3 ¿˛ Ï˛Ã⁄ Ù U@ ˝˛3¿˛    ˝Ã⁄ Ù´@ ˝˛3 ˝å˛Ã⁄!Ù U@ ˝˛3 @˛ ˛Ã⁄"Ù´@ ˝1ÒÛIJ xx|⁄Ù U@ ˝˝0œÙ´@ ˝˛0œÙ     U@ ˛ˇ¸˛‡œÙ˛´@ ˛ Ù ˛U@ ˛˙ˇ¯˙ˇ‡‹%Ù˛´@ ˛ˇˇˇ¯ ‹%Ù ˛U@ ‡4ˇˇˇ¯ ‹%Ù˛´@ 04˛ÇÑ¡¯x ‹'ˆˆˇ1Ù¸¬ᜯà ˘È-Ù#@´@ 34˛¬ᜯà ˘È3Ù- @U@ Û4˛¬&ᜯàë¿qsá≈Œ√àéÍ3Ù-A´@ 34˛ÇÑFá√¯àí !ÑHë&$IÍ3Ù- @U@ 34˛ÑᜯàR !Hê‰# Í3Ù-@´@ 34˛ÑᜯàR !œé$$LÍ3Ù- ÄU@ 1Ù˛ Ñᜯà2 !$$JÍ3Ù˛´@ ˛ ˛¬ᡯx 2 !Hë$$IÍ4Ù ˛U@ ˛!ˇˇˇ¯ ¿á‰√»é Î%Ù˛™@ ˛ˇˇˇ¯ ‹%Ù ˛8Ä ˛ˇˇˇ¯ ‹Ù˛É ˛ˇ¸˙ˇ¯˙ˇ‡‹Ù ˝| ˝ Ù˙ ˝ Ù ˙ ˝ Ù˙ ˝ Ù ˙ ˝¯˙ˇ‡‹Ù˙ ˝¯ˇ ‹Ù ˙ ˝¯ˇ ‹Ù˙ ˝¯>Áx ‹$Ù ˙ ˝¯
  1175. Ñ0Áà‡˚ ¸Î$Ù˙ ˝¯
  1176. Ñ0Áà˚¸Îòà@ià@i8ëZ
  1177. 
  1178. ˛:˘™¨
  1179. ˛5˘UT
  1180. ˛:˘™¨
  1181. ˛5˘UT
  1182. ˛:˘™¨
  1183. ˛5˘UT
  1184. ˛:˘™¨
  1185. ˛5˘UT
  1186. ˛:˘™¨
  1187. ˛5˘UT
  1188. ˛:˘™¨
  1189. ˛5˘UT
  1190. ˛:˘™¨
  1191. ˛5˘UT
  1192. ˛:˘™¨
  1193. ˛5˘UT
  1194. ˛:˘™¨
  1195. ˛5˘UT
  1196. ˛:˘™¨
  1197. ˛5˘UT
  1198. ˛:˘™¨
  1199. ˛5˘UT
  1200. ˛:˘™¨
  1201. ˛5˘UT
  1202. ˛:˘™¨
  1203. ˛5˘UT
  1204. ˛:˘™¨
  1205. ˛5˘UT
  1206. ˛:˘™¨
  1207. ˛5˘UT
  1208. ˛:˘™¨
  1209. ˛5˘UT
  1210. ˛:˘™¨
  1211. ˛5˘UT
  1212. ˛:˘™¨
  1213. ˛5˘UT
  1214. ˛:˘™¨
  1215. ˛5˘UT
  1216. ˛:˘™¨
  1217. ˛5˘UT
  1218. ˛:˘™¨
  1219. ˛5˘UT
  1220. ˛:˘™¨
  1221. ˛5˘UT
  1222. ˛:˘™¨
  1223. ˛5˘UT
  1224. ˛:˘™¨
  1225. ˛5˘UT ˛?˛ˇ¸™¨˛0’˝UT˛0¸™¨˛0’˝UT˛0¸™¨˛0’˝UT˛0¸™¨˛0’˝UT˛0¸™¨˛0’˝UT˛0¸™¨˛0’˝UT˛0¸™¨˛0’˝UT˛0¸™¨˛0’˝UTòR@Äà@ÄàZ3}ë-Ù ˙ ˝¯Ñ0Áà≈òpa«Ñ8p.p\·√ÄÔ-Ù˙ ˝¯Ñ<Áà&dàí$DDà0àa$@Ô(Ù ıˇ¸¯Ñ0Áà‚$Dà‰DDÄ àA$Ó)Ùıˇ¸¯Ñ0Áà$D¯$D|p ¯AÛ„ÄÔ)Ù ı¯Ñ0Áà$DÄ$D@ ÄA@Ô)Ùı¯Ñ>Áx $Dà$DDà àA$@Ô)Ù ı¯ˇ ·ƒDpÁÑ8p p@·√àÔÙı¯ˇ ˙‰Ù ı¯ˇ ˙‰Ùı¯˙ˇ‡‹
  1226. Ù ı 
  1227. Ùı Ù ıÔ›ˇ
  1228. Ùı Ù ı¯˙ˇ‡‹Ùı¯ˇ‡‹Ù ı¯ˇ‡‹Ùı¯>ᇋ#Ù ı¯
  1229. Ñ03‡‡˚ ˙ @(ÙÄ˙¯
  1230. Ñ03‡˚˙ @0Ù å˙¯Ñ03‡≈òpa«Ñ8p.ppDpÒ3ÙUôfså„˝¯Ñ<3‡&dàí$DDà0à" "HàÒ3Ù $•âJR¯Ñ03‡‚$Dà‰DDÄ à" PÄÒ3Ù°    JRóò˝¯Ñ03‡$D¯$D|p ¯" "`pÒ3Ù •    JRî˝¯Ñ03‡$DÄ$D@ Ä" "PÒ3ÙôrLì8˝¯Ñ>á‡$Dà$DDà à" "HàÒ/Ù ˝@˙¯ˇ‡·ƒDpÁÑ8p pDqÒÙ˝@˙¯ˇ‡˙‰Ù ı¯ˇ‡˙‰Ùı¯˙ˇ‡‹
  1231. Ù ı  Ùˆˇ¸  Ù ˆ  Ùˆ  Ù ˆ  Ùˆ  Ù ˆ  Ùˆ ˇ Ù ˆ ˇ%ÙËÄ’UTÄ˚˛˛IJı)Ù ËÄ™™¨L<ë.p,<ò≥‡1`8∞‡"#èˆ/Ù$óÄÌÄ’UTDDë0à2DàÃëê…"$Hë ˜-Ù ˝`ÌÄ™™¨DDë à"DààëâC»ëˆ-Ù˝0ÌÄ’UTDDë ¯"DààëâDHüˆ)Ù ËÄ™™¨DDë Ä"DààëâÑHêˆ-Ù˝xÌÄ’UTÑDë à"DààëâÑHëˆ*Ù ËÄ™™¨<è p"<ààû‡ à‡Éœ ˜Ù˝xÌÄ’UT˝Å˚ÄÈÙ ˝ÑÌÄ™™¨˛ë¸ÄÈÙ˝ÑÌÄ’UT˛¸ËÙ ˝ÑÌÄ™™¨›Ù˝ÑÌÄ’UT›Ù ˛ÜÌÄ™™¨›Ù˛ÖÄÓÄ’UT›"Ù ˛Ñ@Ó
  1232. Ä™™¨0˘@Ó$Ù˛x ÓÄ’UT˜@˘˜ˇ.Ù ˛ ÓÄ™™¨Çcaƒ@àé.pXp\·„àéı.Ù˛@ÓÄ’UTÇëí$@àë0àdà"a$Hë"ı.Ù ˛@ÓÄ™™¨B˛@U àDà"A$Hë ı-ˆ¸ˇ¿ÄÓÄ’UTB˝ƒ@U ¯D¯"A$Eı)ÔÄÓÄ™™¨‚˛$@" ÄDÄ"A$Eı.Ù˛ÄÓÄ’UT"˛$@" àDà"A$B"ı.Ù ˛Ä0ÓÄ™™¨"˝√¿" pDp@·„Ç ˆ"Ù˛Ä0ÓÄ’UT˘@ˆ ˛ ˆò@àÄi@àÄiZë}
  1233. ˛0¸™¨˛0’˝UT ˛?˛ˇ¸™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UTˇˇÄ0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛0Ä’˝UT˛0ĸ™¨˛ˇÄ’˝UT˛ˇĸ™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Äˇ˝UT ¸Ä¿˝™¨¸Äˇˇ˛UT¸ÄIJ™¨¸Äˇˇ˛UT¸ÄIJ™¨¸ÄIJUT¸Ä¢"˛™¨Ûˇ‡Ú„¸Äë˛UT¸Ä벙¨¸Äë˛UT¸Ä벙¨¸Äë˛UT¸Ä벙¨¸Äë˛UTòRÄ¿àÄ¿à}3üë$Ù ˛Ä0ÓÄ™™¨˙@˜ ˛@ˆ Ù˛Ä ÓÄ’UT˙Ę¿ÚÙ ˛@ ÓÄ™™¨›Ù˛@ ÓÄ’UT›Ù ˛  ÓÄ™™¨›Ù˛  ÓÄ’UT›'Ù ˛@Ó
  1234. Ä™™¨ÄÑ˘ ˛Û'Ù˛ÄÓ
  1235. Ä’UTÄÑ˘ ˛Û,Ù ˛˛ÌÄ™™¨ÖáÅ≈áfYásé,88ysèÙ'ÙËÄ’UTÜHÄÜHÅô"fHÅÑD2DëâÑHëÙ'Ù ËÄ™™¨DHÄÑHÅ"DHŃ"@ëâ»ëÙ'ÙËÄ’UTDHÄÑOÅ"DOÅD"8ëâHüÙ-Ù   ÓÄ™™¨‰HÄÑH"DHD"ëâHêÙ,Ùà ÌÄ’UT$HÄÑHÅ"DHÅD"DìâHëÙ.Ù äYp7ÓÄ™™¨$GÄdGDG√"8 yœ ıÙÚI'îÄÔÄ’UTÓÒÙ äI ÄÔÄ™™¨ÓàÒÙäI ÄÔÄ’UTÓpÒÙ Ò…ÄÔÄ™™¨›ÙËÄ’UT›Ù ËÄ™™¨›ÙËÄ’UT›Ù ËÄ™™¨›ÙËÄ’UT›Ù ËÄ™™Ø›ˇÙËÄ’UT›Ù ËÄ™™¨›ÙËÄ’UT›Ù ËÄ™™¨›ÙËÄ’UT›Ù ËÄ™™¨›ÙÊˇ’UT›Ù ™™¨›ÙÂ’UT›Ù ™™¨›ÙÂ’UT›Ù ™™¨›ÙÂ’UT›Ù ™™¨›ÙÂ’UW›ˇÙΩˇØØØØØØØØØØØØØØØØØØØØØØØòÄà¿iÄà¿i}ëü
  1236. ¸Ä벙¨¸Äë˛UT¸Ä벙¨¸Äë˛UT¸Ä벙¨¸Äë˛UT¸Ä벙¨¸Äë˛UT¸Ä벙¨¸Äë˛UT¸Ä벙¨¸Ä¢#˛UT¸ÄIJ™¨¸ÄIJUT¸Äˇ˛˛™¨¸ÄÄUUT¸ÄÄ
  1237. ™™¨¸ÄÄUUT¸ÄÄ
  1238. ™™¨¸ÄÄUUT¸ÄÃw
  1239. ™™¨¸ÄÇÑÖUUT¸Äédä™™¨¸ÄíÖUUT ˙ˇé‰ä™™¨¸ÄÄUUT¸ÄÄ
  1240. ™™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨ ¸Ä’˝UT ¸Ä¸™¨
  1241. ˙ˇ’˝UTıˇ¸„„„„„„„„„„„„„„„„„„„„„„„òR¿à¿àü3¬ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò¿ài¿àiüë¬
  1242. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR à à¬3”ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØòà ià i¬ë”
  1243. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR@à@à”3ˆëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØòà@ià@i”ëˆ
  1244. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR@Äà@Äàˆ3ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò@àÄi@àÄiˆë
  1245. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òRÄ¿àÄ¿à3;ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØòÄà¿iÄà¿ië;
  1246. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR¿à¿à;3]ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò¿ài¿ài;ë]
  1247. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR à à]3oëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØòà ià i]ëo
  1248. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR@à@à”3ˆëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØòà@ià@i”ëˆ
  1249. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR@Äà@Äàˆ3ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò@àÄi@àÄiˆë
  1250. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òRÄ¿àÄ¿à3;ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØòÄà¿iÄà¿ië;
  1251. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR¿à¿à;3]ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò¿ài¿ài;ë]
  1252. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR à à]3oëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØòà ià i]ëo
  1253. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR@à@ào3ëëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØòà@ià@ioëë
  1254. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR@Äà@Äàë3¥ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò@àÄi@àÄiëë¥
  1255. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òRÄ¿àÄ¿à¥3÷ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØòÄà¿iÄà¿i¥ë÷
  1256. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR¿à¿à÷3˘ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò¿ài¿ài÷ë˘
  1257. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR à à˘3
  1258. ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØòà ià i˘ë
  1259. 
  1260. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR@à@ào3ëëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØòà@ià@ioëë
  1261. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR@Äà@Äàë3¥ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò@àÄi@àÄiëë¥
  1262. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òRÄ¿àÄ¿à¥3÷ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØòÄà¿iÄà¿i¥ë÷
  1263. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR¿à¿à÷3˘ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò¿ài¿ài÷ë˘
  1264. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„òR à à˘3
  1265. ëØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØòà ià i˘ë
  1266. 
  1267. „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ˇ:é@ˇ ˇˇˇˇ@
  1268. ˇ·ˇ‚7^
  1269. 4H\, Palatino&e.3+ä"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@ä Introduction4⁄ä˙(‡äThe Macintosh System Software
  1270. (‡9
  1271. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1272. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  1279. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1280. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˜˙ˇˇ˙ˇ˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  1287. 4Å4w?òÄ
  1288. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1289. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˜˙ˇ˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛¸ˇˇ
  1296. ˇ˛ˇ˛¸ˇ˛¸ˇ˝˚ˇ˛˛˛ˇ˝
  1297. ˇ˛ˇ˛
  1298. ˇ˛ˇ˛˛˛ˇ˝˜˛˛ˇ˝
  1299. ˇ˛ˇ˛
  1300. ˇ˛ˇ˛˙ˇ˜˛˝ˇ˛ˇ˙˛ˇ˚¸ˇ˛˜˛˛ˇ˝
  1301. ˇ˛ˇ˛
  1302. ˇ˛ˇ˛˛ˇˇ˝˜˛¸ˇˇ
  1303. ˇ˛ˇ˛    ¸ˇˇ˜˛˛ˇ˝
  1304. ˇ˛ˇ˛
  1305. ˇ˛ˇ˛˛˛ˇ˝˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\äh((eä#These lines of code perform standarÄ°dONLNd#\(hæ)û$d initialization of some essential TkÄ°dONLNdG\æh)ñoolbox managers. °dONLNdXiäuê(räY@Ä°dONLNdYiêuE)*ou need to initialize these managers in or‚†°dONLNdÉiEuŒ)µder to set up the drawing envir?°dONLNd¢iœu)ä onment for .°dONLNd≠väÇ(äyour application and to prR`°dONLNd«vÇ)vepar$¿°dONLNdÀvÇY)e parts of the T9¿°dONLNd€vXÇ–)Coolbox for further use. The ,
  1306. Courier9¿°dONLNd˜v–Ç)xInitGraf9¿°dONLNdˇvÇ)0 .°dONLNdÉäèì(åäprG °dONLNdÉîè≤)
  1307. ocedurfi`°dONLNdÉ≤è∂)e®°dONLNd    É∑èÊ) initializes L@°dONLNdÉÁè)0    QuickDraw' °dONLNdÉè)6,ß °dONLNd Éèô) the part of the Macintosh T˝†°dONLNd<ÉòèÒ)yoolbox that handles °dONLNdPêäú¸(ôädrawing and other graphiÄ°dONLNdhê˝ú)scs o¡@°dONLNdlêúˆ)6perations. Because the Macintosh user interface is larÌ¿°dONLNd¢êˆú)Ègely a °dONLNd©ùä©)(¶ä#graphic user interface, QuickDraw rã°dONLNdÃù)©T)ü
  1308. outines arO`°dONLNd÷ùU©Ï),%e called by virtually all the other T* °dONLNd˚ùÏ© )óoolbox °dONLNd™ä∂(≥ämanagers. For example, the Wp °dONLNd™∂)Ü1indow Manager calls QuickDraw to draw the window °dONLNdO∑ä√Í(¿äframe and any other rº@°dONLNdd∑Í√)`equir”Ä°dONLNdi∑√¸)=ed parts of a window (for instance, the title bar). For this °dONLNd¶ƒä–ç(ÕärE°dONLNd߃é–Y)-eason, you need to initialize QuickDraw beforo°dONLNd‘ƒY–Δ)Àe you initialize the other NÄ°dONLNdÔƒ«–‡)nmain \@°dONLNdÙƒ‡–Ê)Tí°dONLNdıƒ–)oolbox °dONLNd¸—䛵(⁄äManagersO°dONLNd—∂›∏),.
  1309. ÎH˘4ÏH˘    °dONLNdÍäıù(ÚäNote
  1310. ˇ·ˇ‚7^
  1311. °dONLNd ˜ä*QuickDraw gets its name fr`°dONLNd%˜∏)z*om the fact that it’s designed to perform °dONLNdOäø( ä basic graphiZ‡°dONLNd[¿–)6cs o˝†°dONLNd_–»);perations exceptionally fast. This is important for a user °dONLNdöä (äinterface that r·@°dONLNd™ E)@elies so heavily on graphics.,Zapf DingbatsᆰdONLNd–KP)Åu
  1312. °dONLNd“ ä,ê()äY@Ä°dONLNd” ê,R),our application will also call QuickDraw dirÌ`°dONLNdˇ R,f)¬ectly≈`°dONLNd f, )%, usually to draw inside a window or °dONLNd)-ä9Õ(6äto set up constr@°dONLNd9-Œ9¸)D ucts (like rX`°dONLNdE-¸9—)./ectangles) that you’ll need when making other T\‡°dONLNdt-—9    )’oolbox calls. °dONLNdÇ:äF (Cä QuickDraw prò¿°dONLNdé: F-)@ovides a rich array of r^†°dONLNd¶:.FÉ)doutines that let you°dONLNdªPäWè(Vän
  1313. °dONLNdΩMñY6) $change, hide, and display the cursor°dONLNd‚bäiè(hän
  1314. °dONLNd‰_ñkÌ) manipulate the curr¿°dONLNd˜_Ók9)Xent drawing port°dONLNdtä{è(zän
  1315. °dONLNd
  1316. qñ}:) &set characteristics of the drawing pen°dONLNd1Üäçè(åän
  1317. °dONLNd3Éñè¿)     draw text°dONLNd=òäüè(ûän
  1318. °dONLNd?ïñ°’) manage colors°dONLNdM™ä±è(∞än
  1319. °dONLNdOßñ≥¶) defir °dONLNdSßß≥∏)ne rR °dONLNdWß∏≥
  1320. )ectangles, ovals, ar$°dONLNdkß ≥´)S$cs, and other basic geometric shapes°dONLNdêºä√è(¬än
  1321. °dONLNdíπñ≈¶) defir °dONLNdñπß≈€)ne arbitrarilË °dONLNd£π€≈Á)4y s4@°dONLNd¶πË≈
  1322. )haped r2 °dONLNd≠π
  1323. ≈&)"egions°dONLNd¥Œä’è(‘än
  1324. °dONLNd∂Àñ◊3) "perform operations on shapes and rA°dONLNdÿÀ4◊P)ûegions°dONLNdfl‹äËfl(ÂäOThe essential thing to keep in mind is that if you can see something on the scr‚`°dONLNd.‹flË    (Âfl
  1325. een, then °dONLNd8Èäı(ÚäQuickDraw is lurking somewher∏@°dONLNdUÈıw)ëe behind it, either diro‡°dONLNdlÈxı∞)]ectly (you dr§°dONLNdyÈ∞ı⁄)8
  1326. ew it therë¿°dONLNdÉÈ⁄ı)*e) or °dONLNdâˆäü(ˇäindir‡°dONLNd鈆¯)ectly (you called a T≤`°dONLNd£ˆ˜)Woolbox rÄ°dONLNd´ˆM)$ outine that â°dONLNd∑ˆN¨)3called QuickDraw to ∏‡°dONLNdÀˆ¨≤)^d‘†°dONLNdÈ≤√)raw@°dONLNdœˆƒ‡) it therÎ`°dONLNd◊ˆ‡Í)e)..°dONLNd€äû(äThe °dONLNdflû‘)    InitFonts°dONLNdË‘‡)6 prR`°dONLNd·˝) ocedur$¿°dONLNdÒ˝á)e initializes the Font Managerg`°dONLNdÜ)â, which supports the use of °dONLNd+ä!ù(ä9various character fonts when you draw text with QuickDrawï°dONLNddú!µ(ú. The ï°dONLNdjµ!Â)TextFontï°dONLNdrÂ!Î)0 rg`°dONLNdtÎ!    )outine .°dONLNd{"ä.ø(+äsets the curr`°dONLNdà"¿.»)6;ent font to that whose font number is passed as a parameterd`°dONLNd√"«.◊(+«. Gr Ä°dONLNd«"◊.)eetMe passes .°dONLNd‘/ä;Ê(8äthe special constant °dONLNdÈ/Ê;")\
  1327. systemFont°dONLNdÛ/";K)<    , which rR`°dONLNd¸/K;¸)))equests the font used by the system (for .°dONLNd%<äHï(Eä8drawing menu titles and commands in menus, for example)..°dONLNd^NäZû*The °dONLNdbNûZ‡) InitWindows°dONLNdmN‡ZÏ)B prR`°dONLNdpNÏZ    ) ocedur$¿°dONLNdvN    Z`)e initializes the Wò °dONLNdâN_Z•)Vindow Manager⁄¿°dONLNdñN§Zß)E,⁄¿°dONLNdóNßZŒ)     and the ⁄¿°dONLNd†NŒZ
  1328. )'
  1329. InitCursor⁄¿°dONLNd™N
  1330. Z )< .°dONLNd´[ägì(däprG °dONLNd≠[îg≤)
  1331. ocedurfi`°dONLNd≥[≤g√)=e (which belongs to QuickDraw) sets the cursor to the standar±Ä°dONLNd[√gÿ(d√d arr‡°dONLNdı[Ÿg)    ow cursor£ °dONLNd˛[g    )+. °dONLNd    hät“(qäEvery applicatioÚ‡°dONLNd    h“t‡)Hn n†°dONLNd    h·t)eedƒ†°dONLNd    htÙ)s†°dONLNd    hıt1) to call these r£Ä°dONLNd    'h1tk)<outines beforÇÄ°dONLNd    4hktz):e cr`°dONLNd    8h{t)eating windows or handling any °dONLNd    WuäÅ¡(~äuser actions.ˇ™@ˇ ˇˇˇˇ@
  1332. ˇ·ˇ‚7^
  1333. 4*\¯, Palatino&e.3+l"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@l Introduction4⁄*˙¯
  1334. (‡*10    )BThe Macintosh System Software4^*¿¯
  1335. °dONLNd\lhü(el Notice that ˇ °dONLNd \üh∑)3Figur—‡°dONLNd\∑hÀ)e 1-3o`°dONLNd\ÃhH) depicts a number of other Tc‡°dONLNd2\Hh≤)|oolbox managers that ar%‡°dONLNdI\≥h)ke not used by °dONLNdWiluw(rlGrÊ °dONLNdYiwuó) eetMe. Õ°dONLNd`ióuù) YçÄ°dONLNdaiùuL)'ou’ll encounter many of these as you prk¿°dONLNdàiLuZ)Øogr5`°dONLNdãi[uw)ess thr—¿°dONLNdíiwu„)ough this book. For now‡°dONLNd©i„uË)l, °dONLNd´vlÇ©(ltake a look at ¿°dONLNd∫v©ÇØ)=Tı¿°dONLNdªvÆÇ–)able 1-2@°dONLNd√v—Ç„)#= for a brief description of the most commonly used Macintosh °dONLNdÉlèr(ålTµ¿°dONLNdÉqèø)oolbox managers.
  1336. ≤*∫¯4≥*∫¯ ∂l∂¯
  1337. ˇ·ˇ‚7^    °dONLNd®l≥ì(∞l    Table 1-2°dONLNd®™≥Á)>The Macintosh Ÿê°dONLNd*®Á≥Ï)=TYê°dONLNd+®Ï≥)oolbox‹ °dONLNdˇˇ) °dONLNd=¿lÀê(»lManager[@°dONLNdE¿‚À)v Description
  1338. °dONLNdRŒl⁄ü(◊l    QuickDraw[@°dONLNd\Œ‚⁄')vPerforms all scr1 °dONLNdlŒ'⁄Ü)Eeen display operationˆ°dONLNdÅŒÜ⁄ä)_s3°dONLNdÇŒã⁄Ú), including all drawing [@°dONLNdöŸ‚Â<(‚‚of graphics and text.°dONLNd±Îl˜v(ÙlWÛ`°dONLNd≤Îu˜ª)    indow Manager[@°dONLNd¿Î‚˜+)mAllows you to cru†°dONLNd–Î+˜Ì)I)eate and manage windows of various types.°dONLNd˚˝l    ≥(lDialog Manager[@°dONLNd
  1339. ˝‚    +)vAllows you to cru†°dONLNd˝+    €)I&eate and manage dialog boxes, which arÎ`°dONLNd@˝€    ‚)∞e [@°dONLNdB‚](‚special kinds of windows. T¿°dONLNd]]ı){$ypically you’ll use dialog boxes to [@°dONLNdÅ‚Ë(‚?alert the user to unusual situations or to solicit information [@°dONLNd¿‚*È* frt °dONLNd¬È*) om the userfi°dONLNdÕ*)3.°dONLNd–0l<Ö(9lContrÂ@°dONLNd’0Ö<∑)
  1340. ol Manager[@°dONLNd‡0‚<+)]Allows you to cru†°dONLNd0+<è)Ieate and manage contru°dONLNd0è<È)dols, such as buttons, [@°dONLNd;‚G5(D‚radio buttons, checZ`°dONLNd.;6GA)Tkbq °dONLNd0;AG¨) oxes, pop-up menus, scrí °dONLNdG;¨G‰)koll bars, and [@°dONLNdUF‚R'(O‚application-defiX °dONLNdeF(RR)F    ned contrM`°dONLNdnFRRa)*ols.°dONLNdtXld∞(al Menu Manager[@°dONLNdÅX‚d+)vAllows you to cru†°dONLNdëX+d˜)I,eate and manage your application’s menu bar [@°dONLNdΩc‚o(l‚ and the menuõ‡°dONLNd…coU)=s it contains.s‡°dONLNd◊cVoX)7 ïÄ°dONLNdÿcXo¯)"Also handles the drawing of menus [@°dONLNd˙n‚zo(w‚and user actions within a menu.°dONLNdÄlåØ(âlEvent Manager[@°dONLNd)Ä‚å¯)v?Reports to your application events describing user actions and [@°dONLNdhã‚ó-* changes in the pr‚@°dONLNdyã-ó )K%ocessing status of your application. z†°dONLNdûãÀó·)ûAlso [@°dONLNd£ñ‚¢«(ü‚2allows you to communicate with other applications.°dONLNd◊®l¥r(±lTµ¿°dONLNdÿ®q¥ê)extEdit[@°dONLNd‡®‚¥Î)qPr)‡°dONLNd‚®Ï¥9)
  1341. ovides simple tex2Ä°dONLNdÛ®9¥B)Mt-f†°dONLNdˆ®C¥Ñ)
  1342. ormatting and Ä°dONLNd®Ö¥ò)Btext-fi`°dONLNd    ®ò¥)editing capabilities, [@°dONLNd≥‚øΩ(º‚5such as text input, selection, cutting, and pasting. ”°dONLNdT≥Ωø¯)€Applications [@°dONLNdaæ‚ ˛(«‚that arˆ`°dONLNdhæ˛ ¶)&e not primarily concerned with text prxÄ°dONLNdéæß Ú)©ocessing can use [@°dONLNdü…‚’Ë(“‚Të°dONLNd†…Á’û))extEdit to handle most text manipulation.°dONLNdÀ€lÁã(‰lResourv@°dONLNd—€ãÁæ)
  1343. ce Manager[@°dONLNd‹€‚Á_)WAllows your application to r.‡°dONLNd¯€_Á¢)}ead and write rÑ`°dONLNd€¢Á∫)CesourÆ°dONLNd €∫ÁÃ)ces.  °dONLNd€ÃÁ·)Any [@°dONLNdÊ‚Ú˚(Ô‚static ı†°dONLNdÊ˚Ú    )datS¿°dONLNdÊ
  1344. Ú)a (sd†°dONLNd#ÊÚ∑)!uch as menus, cursors, and windowO¿°dONLNdDÊ∏ÚÁ)ü s) used by [@°dONLNdOÒ‚˝2(˙‚your application cÄ¿°dONLNdaÒ2˝É)Pan usefully be stor•‡°dONLNdtÒÉ˝ß)Q    ed as a r@°dONLNd}Ò®˝¿)%esourUÄ°dONLNdÇÒ¿˝·)ce. The [@°dONLNd丂$(‚system softwar) °dONLNdò¸%6)Ce pr9‡°dONLNdú¸6Ø)ovides a number of standarK†°dONLNd∂¸Øª)yd r¨`°dONLNdπ¸ª”) esourÙ†°dONLNd渔Â)ces, [@°dONLNd√‚c(‚and your application can defi1`°dONLNd‡d∫)Çne its own custom r◊@°dONLNdÛ∫“)VesourÄ°dONLNd¯”‚)ces.°dONLNd˛l%≤("lFinder Interface[@°dONLNd‚%√)v3Allows your application to interact with the Finderˇ°dONLNdB¬%◊)‡, the [@°dONLNdH$‚0Ö(-‚&application that helps keep track of fiY¿°dONLNdo$Ü0·)§les and manages the [@°dONLNdÉ/‚;ı(8‚user°dONLNdá/ˆ;F)’s desktop display'¿°dONLNdô/E;G)O.°dONLNdúAlMÆ(JlScrap Manager[@°dONLNd™A‚M‰)v:Allows your application to support cutting and pasting of [@°dONLNd‰L‚Xr* information among applications.°dONLNd^ljé(glStandar¥@°dONLNd ^éjÕ)"d File Package[@°dONLNd^‚jÎ)TPr)‡°dONLNd^Ïj=)
  1345. ovides the standar_@°dONLNd/^=jfl)Q&d dialog boxes that allow the user to [@°dONLNdUi‚u
  1346. (r‚
  1347. select a fi”@°dONLNd`i
  1348. uº)()le to open or a location and name for a fiÄ°dONLNdäiΩufl)≥    le to be [@°dONLNdìt‚IJ(}‚saved.°dONLNdõÜlí¨(èl Help Manager[@°dONLNd®Ü‚íe)vAllows your application to pr1°dONLNd≈Üeífi)Éovide Balloon Help on-line [@°dONLNd‡ë‚ùÓ(ö‚?assistance, information that describes the actions, behaviors, [@°dONLNd    ú‚®ı* and »`°dONLNd    #úı®˛)prèÄ°dONLNd    %úˇ®±)
  1349. )operties of elements of your application.ˇ7v@ˇ ˇˇˇˇ@
  1350. ˇ·ˇ‚7^
  1351. 4H\, Palatino&e.3+ä"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@ä Introduction4⁄ä˙(‡äThe Macintosh System Software
  1352. (‡ 11
  1353. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1354. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1355.  
  1356.  
  1357.  
  1358.  
  1359.  
  1360. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  1361. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1362. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˜˙ˇˇ˙ˇ˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  1369. 4Å4w?òÄ
  1370. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1371. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˜˙ˇ˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛¸ˇˇ
  1378. ˇ˛ˇ˛¸ˇ˛¸ˇ˝˚ˇ˛˛˛ˇ˝
  1379. ˇ˛ˇ˛
  1380. ˇ˛ˇ˛˛˛ˇ˝˜˛˛ˇ˝
  1381. ˇ˛ˇ˛
  1382. ˇ˛ˇ˛˙ˇ˜˛˝ˇ˛ˇ˙˛ˇ˚¸ˇ˛˜˛˛ˇ˝
  1383. ˇ˛ˇ˛
  1384. ˇ˛ˇ˛˛ˇˇ˝˜˛¸ˇˇ
  1385. ˇ˛ˇ˛    ¸ˇˇ˜˛˛ˇ˝
  1386. ˇ˛ˇ˛
  1387. ˇ˛ˇ˛˛˛ˇ˝˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  1388. ‚HÈ4„HÈ ‰ä‰
  1389. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd¸”ä‚U(fiäThe Macintosh Operating Systemˇˇˇˇˇˇ€r(fi1
  1390. °dONLNdÈäı*(Úä!The Macintosh Operating System pry¿°dONLNd<È*ıM)†ovides rÂ@°dONLNdDÈMı˝)#(outines that allow you to perform basic °dONLNdlˆä˜(ˇälow-level tasks such as fiÆ°dONLNd܈˜÷)m.le input and output, memory management, and pr©¿°dONLNd¥ˆ÷)fl
  1391. ocess and °dONLNdæä¿( ä device contrl`°dONLNd ¿)6ol. The Macintosh T!@°dONLNd›/)WoolboÒ¿°dONLNd‚/)x is a level above ty`°dONLNdˆÄ)Qhe Operating System and, as °dONLNdäÕ(äyou’ve seen, pr´†°dONLNd!Õ)Covides r °dONLNd)Òµ)$+outines that help you implement the standarƆ°dONLNdTµ)ƒd Macintosh user °dONLNdeä))(&ä%interface for your application. The T(‡°dONLNdä)))ü2oolbox calls the Operating System to do low-level °dONLNdº*ä6•(3äAoperations, and you’ll also need to call the Operating System dir?`°dONLNd˝*¶6·(3¶ectly yourselfÙ`°dONLNd *·6„);.°dONLNd<äHê(EäT†¿°dONLNd<êH‘)he Macintosh T◊°dONLNd<”H9)Coolbox allows you to cr£@°dONLNd3<:H)g1eate and manage parts of your application’s user °dONLNddIäU(Räinterface, and in some sensR °dONLNdIU8)w e mediates ydONLNdãI8U¥)7our application and the user…@°dONLNdßI¥Uˇ)|. By contrast, the °dONLNd∫Väb5(_ä%Macintosh Operating System essentiallQ°dONLNdflV6bn)¨ y mediates yZ°dONLNdÎVnb)8"our application and the Macintosh °dONLNdcäoò(lähar`°dONLNdcôo∞)dwarN °dONLNdc∞o)e. For example, you’ll rÚ °dONLNd,coZ)eead and write fiè`°dONLNd<c[oå)F les not by rc`°dONLNdHcåoœ)1eading data dir∏‡°dONLNdWcœofi)CectlÄ°dONLNd[cfloÓ)y frEÄ°dONLNd_cÓo)om tQ`°dONLNdcco)he °dONLNdfpä|¸(yämedium on which they ar«†°dONLNd}p¸|)re storÀ °dONLNdÉp|ï)ed, but rather by calling apprÆ °dONLNd°pï|Û)Åopriate File Manager °dONLNd∂}äâç(ÜärE°dONLNd∑}éâ)outines. The File Manager;†°dONLNd–}âJ)s locates the desir‡°dONLNd‚}Jâ◊)I!ed data within the logical hierarñ†°dONLNd}◊âÛ)çchical °dONLNd
  1392. ääñï(ìästrfi°dONLNdäïñ¨) ucturc‡°dONLNdä≠ñ≈)e of fi†°dONLNdäΔñÙ) les and dir®‡°dONLNd$äÙñW).ectories that it manage{@°dONLNd;äXñÑ)d s; then it c°dONLNdGäÖñÎ)-alls another part of the °dONLNd`óä£7(†ä$Operating System, the Device Manager– °dONLNdÑó7£K)≠, to rÕ°dONLNdäóK£ )-ead or write the data on the actual physical °dONLNd∑§ä∞|(≠ä4device. The File Manager and the Device Manager thers`°dONLNdΧ|∞ˇ)Úeby insulate your application °dONLNd    ±äΩë(∫äfrò‡°dONLNd ±ëΩ‘)Kom the low-level details of interacting with the available data-storage harÔ@°dONLNdV±‘ΩÎ(∫‘dwar'°dONLNdZ±ÏΩ)e†°dONLNd[±ΩÚ).°dONLNd]√äœ≤(Ãä    Similarlyõ@°dONLNdf√±œ )'J, the Memory Manager helps you allocate and dispose of memory within your °dONLNd∞–ä‹˙(Ÿäapplication’s logical addre†°dONLNd –˙‹≥)p'ess space. The Memory Manager takes carÄ°dONLNdÒ–¥‹)∫e of mapping that °dONLNd›äÈæ(Êä logical addr*Ä°dONLNd›øÈM)5 ess space onto the physical addr `°dONLNd/›MÈÅ)é ess space pr§ °dONLNd;›ÅÈ)4 ovided by the available RAM. It °dONLNd[Íäˆ(ÛäQalso helps manage your application’s memory by moving allocated blocks of memory °dONLNd¨˜äÊ*when necessary to crÅ °dONLNd¿˜Ê∑)\0eate space for new blocks you want to allocate. êÄ°dONLNd˜∑Ω)—TΔ@°dONLNdÒ˜ºfi)able 1-3”¿°dONLNd˘˜fi˜)" brieflå¿°dONLNd˜¯)y °dONLNdäñ(ä;describes the main parts of the Macintosh Operating System.°dONLNdÇäéƒ(ãä List Manager[@°dONLNdÇéÅ)vAllows your application to crü °dONLNd*ÇÅéœ)Åeate lists of items.°dONLNd@î䆖(ùäSound Manager[@°dONLNdN   )vPr)‡°dONLNdPî
  1393. †ú)
  1394. !ovides sound output capabilities.°dONLNds¶ä≤Î(ØäSound Input Manager[@°dONLNdá¶≤    )vPr)‡°dONLNdâ¶
  1395. ≤)
  1396. 8ovides sound input capabilities for Macintosh computers [@°dONLNd¡±Ω·(∫1equipped with a sound input device such as a micrx†°dONLNdÚ±·Ω)·ophone.
  1397. 3H;44H; 7ä7
  1398. ˇ·ˇ‚7^    °dONLNd>)ä4±(1ä    Table 1-3°dONLNdH)»4M)>The Macintosh Operating Systemp°dONLNdˇˇ)Ü °dONLNdrAäLÆ(IäManager     °dONLNdzALI)é Description
  1399. °dONLNdáOä[ì(XäPrN†°dONLNdâOî[’)
  1400. ocess Manager     °dONLNdóO[ )Ñ6Handles the launching, scheduling, and termination of      °dONLNdÕZfR* applications. û†°dONLNd€ZRfr):Also prG‡°dONLNd‚Zsf˛)!ovides information about open      °dONLNd    eq!(npr–@°dONLNd    e!qC)    ocesses.°dONLNd     wäÉ⁄(ÄäMemory Manager     °dONLNd    wÉ¿)é$Manages the dynamic allocation and rΔ°dONLNd    ?w¿ÉÒ)® eleasing of      °dONLNd    KÇéÓ(ã.memory in your application’s memory partition.˘°°dONLNd    |ñˆü+fi    continued
  1401. gHn4gHn jäj
  1402. ˇ·ˇ‚7^    °dONLNdˇˇ(dä    Table 1-2°dONLNdˇˇ)>The Macintosh Ÿê°dONLNdˇˇ)=TYê°dONLNdˇˇ)oolbox‹ °dONLNdˇˇ)  (continued)°dONLNdˇˇ(|äManager[@°dONLNdˇˇ)v Descriptionˇ®@ˇ ˇˇˇˇ@
  1403. ˇ·ˇ‚7^
  1404. 4*\¯, Palatino&e.3+l"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@l Introduction4⁄*˙¯
  1405. (‡*12    )BThe Macintosh System Software4^*¿¯
  1406. ¶*≠¯4ß*≠¯ ®l®¯
  1407. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd€ól¶K(¢l#Additional System Software Servicesˇˇˇˇˇˇ€r(¢1
  1408. °dONLNdˇ≠lπÛ(∂lThe Macintosh system softwaro °dONLNd≠ÛπÓ)á;e includes a number of other parts that don’t historically °dONLNdV∫lΔ˚(√l belong to either the Macintosh T¬ °dONLNdv∫˙Δ∑)é(oolbox or the Macintosh Operating System˜†°dONLNdû∫∑Δ)Ω. The system °dONLNd´«l”ç(–lsoftwar‰¿°dONLNd≤«ç”û)!e prıÄ°dONLNd∂«û”‹)ovides an extrÁ°dONLNdƒ«‹”Ì)>>emely powerful set of services you can use to handle text and °dONLNd‘l‡(›l&to support the varying text-handling rx†°dONLNd(‘‡+)®equir臰dONLNd-‘+‡d)ements of dif;†°dONLNd:‘e‡q):fer °dONLNd=‘q‡Á) ent languages and writing °dONLNdW·lÌ¥(Ílsystems. Other s°dONLNdg·µÌÛ)Iystem softwarü‡°dONLNdt·ÛÌ,)> e component…†°dONLNd·,ÌY)9 s include tG‡°dONLNdä·ZÌ∞).he interapplication °dONLNdûÓl˙´(˜l communicatiofl °dONLNd™Ó´˙º)?ns amÄ°dONLNdÆÓΩ˙¿)r2Ä°dONLNdØÓ¡˙Á)    chitecturÁ@°dONLNd∏ÓÁ˙)&    e, QuickT¿°dONLNd¡Ó˙†)+ime, and the Communications T*@°dONLNdfiÓü˙º)çoolbox#`°dONLNd‰ÓΩ˙ø).
  1409. *¯4*¯ l¯
  1410. ˇ·ˇ‚7^ °dONLNdÊ ls(lT°dONLNdÁ r¥) ext Handlingˇˇˇˇˇˇ‘@(Ò1
  1411. °dONLNdÙl+r((lTµ¿°dONLNdıq+ˆ)[ext handling on the Macintosh has two basic aspects that make it so powerful. First, it is °dONLNdP,l8æ(5lLfundamentally graphic; text is drawn as a sequence of graphic elements; ther¿°dONLNdú,ø8–(5øeforn¿°dONLNd†,–8Á)e the °dONLNd¶9lE∂(Blfull power and fl∞Ä°dONLNd∑9∂EÙ)JKexibility of the Macintosh graphic interface is available for drawing text °dONLNdFlRÕ(Olin sophisticated ways.°dONLNdXld?*0Second, text handling is designed to function prΔ@°dONLNdIX?dk)”
  1412. operly acr&‡°dONLNdSXldÁ)-oss multiple languages and °dONLNdnelq∑(nlwriting systems. Ö°dONLNde∑qŸ)K?As you develop applications for worldwide markets, you need to °dONLNdærl~†({l consider diffi‡°dONLNd r†~¨)4fer¡`°dONLNdÕr¨~=) "ences in scripts, languages, and rƆ°dONLNdÔr=~Â)ë$egions. The Macintosh system softwarb¿°dONLNdrÊ~Ì)©e °dONLNdlãu(àlprG °dONLNdvã‡)
  1413. esents one of the most flu°dONLNd0‡ã)j    exible arŒ@°dONLNd9ã+)%    chitecturÉ°dONLNdB,ãŸ)'(es for developing applications that can °dONLNdjålò£(ïl support mor`°dONLNduå§òÔ)8e than one script.°dONLNdÇlés(ãlV+Ä°dONLNdÇsé›)irtual Memory Manager     °dONLNdÇ˙é)áPr◊¿°dONLNdÇéÏ)    6ovides virtual memory services (the ability to have a      °dONLNdOç˙ô.(ñ˙ logical addr≥†°dONLNd[ç.ôÇ)4ess space that is larô °dONLNdpçÇôÙ)Tger than the total amount      °dONLNdäò˙§M(°˙of available RAM).°dONLNdû™l∂¶(≥l File Manager     °dONLNd´™˙∂)éPr◊¿°dONLNd≠™∂a)    ovides access to the fiƒ`°dONLNdƒ™b∂Û)_"le system; allows applications to      °dONLNdʵ˙¡(æ˙cr>`°dONLNd˵¡7)eate, open, rΆ°dONLNdıµ7¡ô)5ead, write, and close fi›†°dONLNdµö¡®)cles.°dONLNd«l”¨(–lAlias Manager     °dONLNd!«˙”c)éHelps you locate specifi†°dONLNd9«c”v)ied fië¿°dONLNd>«v”ì)les, dirI‡°dONLNdF«î”Ô)ectories, or volumes.°dONLNd]ŸlÂÂ(‚lDisk Initialization Manager     °dONLNdyŸ˙Â>)éManages the prä°dONLNdáŸ>ÂÆ)Docess of initializing disks.°dONLNd•Îl˜¥(ÙlDevice Manager     °dONLNd¥Î˙˜)éPr◊¿°dONLNd∂ΘD)    ovides input frÄ°dONLNd≈ÎE˜î)Bom and output to †°dONLNd÷Î)Phar¨°dONLNdŸÎ£˜∫)dwar„¿°dONLNd›Î∫˜¡)e -`°dONLNdflά˜Â)devices      °dONLNdÁˆ˙h(ˇ˙attached to the computerŒ`°dONLNdˇˆgi)m.°dONLNdl´(l SCSI Manager     °dONLNd˙)éContrn`°dONLNd¿)&ols the exchange of information betwee«@°dONLNd:¿œ)≠n a      °dONLNd>˙(˙M~`°dONLNd?*)        acintosh Ó†°dONLNdH*W)'    computer 0@°dONLNdQXÁ). and peripheral devices attached      °dONLNdq˙*('˙thr·‡°dONLNdt*ù) ough the Small Computer StandarÄ°dONLNdìû*Ì)òd Interface (SCSI).°dONLNd®0l<r(9lT °dONLNd©0r<¨) ime Manager     °dONLNdµ0˙<j)àAllows you to execute a rÚÄ°dONLNdŒ0i<Ä)ooutink@°dONLNd”0Å<–)e periodically or aÄ°dONLNdÊ0—<Í)Pfter a      °dONLNdÌ;˙G(D˙specifiw@°dONLNdÙ;GL) ed time delaÚ¿°dONLNd;LGQ)6yf °dONLNd;QGS).°dONLNdMlYs(VlVú`°dONLNdMrY⁄)ertical Retrace Manager     °dONLNdM˙YX)àAllows you to synchrí`°dONLNd1MXYΔ)^onize the execution of a r‡°dONLNdKM«YÂ)ooutine      °dONLNdRX˙d%(a˙
  1414. with the r˛†°dONLNd\X$dy)*edrawing of the scrÄ°dONLNdoXzdã)Veen.°dONLNdujlvƒ(slShutdown Manager     °dONLNdÜj˙vj)éAllows you to execute a rÚÄ°dONLNdüjivÄ)ooutink@°dONLNd§jÅv¶)    e while t:°dONLNd≠jßvÎ)&he computer is      °dONLNdºu˙Å(~˙shuta°dONLNd¿uÅ)tingÏ@°dONLNdƒuÅL)
  1415.  down or rS°dONLNdŒuMÅb)/estar醰dONLNd”ubÅv)ting.
  1416. g*n¯4g*n¯ jlj¯
  1417. ˇ·ˇ‚7^    °dONLNdˇˇ(dl    Table 1-3°dONLNdˇˇ)>The Macintosh Operating Systemp°dONLNdˇˇ)Ü  (continued)°dONLNdˇˇ(|lManager     °dONLNdˇˇ)é DescriptionˇFd@ˇ ˇˇˇˇ@
  1418. ˇ·ˇ‚7^
  1419. 4H\, Palatino&e.3+ä"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@ä Introduction4⁄ä˙(‡äThe Macintosh System Software
  1420. (‡ 13
  1421. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1422. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  1429. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1430. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˜˙ˇˇ˙ˇ˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  1437. 4Å4w?òÄ
  1438. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1439. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˜˙ˇ˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛¸ˇˇ
  1446. ˇ˛ˇ˛¸ˇ˛¸ˇ˝˚ˇ˛˛˛ˇ˝
  1447. ˇ˛ˇ˛
  1448. ˇ˛ˇ˛˛˛ˇ˝˜˛˛ˇ˝
  1449. ˇ˛ˇ˛
  1450. ˇ˛ˇ˛˙ˇ˜˛˝ˇ˛ˇ˙˛ˇ˚¸ˇ˛˜˛˛ˇ˝
  1451. ˇ˛ˇ˛
  1452. ˇ˛ˇ˛˛ˇˇ˝˜˛¸ˇˇ
  1453. ˇ˛ˇ˛    ¸ˇˇ˜˛˛ˇ˝
  1454. ˇ˛ˇ˛
  1455. ˇ˛ˇ˛˛˛ˇ˝˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\ähë(eäA∫†°dONLNd\ëhì) :†°dONLNd\îh∞)script,B@°dONLNd    \∞h") such as Roman, Kanji, or *@°dONLNd#\"h)r6Arabic, is a writing system for a human language such °dONLNdYiäuÛ(räas English, Japanese, or ¿°dONLNdriÙu[)jArabic. Scripts have dif,°dONLNdäi[ug)gferÄ°dONLNdçigu
  1456. ) 'ent characteristics; for example, they °dONLNd¥väÇ®(äcan difl°dONLNdªv®Çfl)fer in the dir\`°dONLNd…vflÇö)7,ection in which their characters and lines r°°dONLNdıvöÇ)ªun and in the number of °dONLNdÉäè‚(åäOcharacters in their character sets. The way in which you need to input, display¿°dONLNd\É‚èÍ(å‚, r÷¿°dONLNd_ÉÍè)enderå`°dONLNddÉè), °dONLNdfêäúÑ(ôä8and edit text may change depending on the script in use.°dONLNdü¢äÆë*A∫†°dONLNd†¢ëƃ)  Macintosh   °dONLNd´¢≈Æ)4script systemŒ‡°dONLNd∏¢ÆS); is a set of system r¥¿°dONLNdÕ¢SÆk)Sesour˝°dONLNd“¢kƉ)ces that support text input, °dONLNdÔØäªç(∏ä:manipulation, and display for a given writing system. The o¿°dONLNd)Ø骋(∏éMacintosh script °dONLNd:ºä»Á(≈ämanagement systemà‡°dONLNdKºÁ»\)] consists of system softwar9°dONLNdfº]»ø)ve managers and the W‡°dONLNdzºø»Î)b
  1457. orldScriptK†°dONLNdѺλÌ), °dONLNdÖ…ä’¶(“ä@extensions, which together give your application the power to cr‡°dONLNd≈…ß’(“ßeate and work with text °dONLNd›÷ä‚ (fläof any script system. These arÁ °dONLNd˚÷ ‚∏)Ç'e the essential text-handling managers:,Zapf Dingbats°dONLNd#ÏäÛè(Úän
  1458. °dONLNd%ÈñıÀ)     QuickDrawZ‡°dONLNd.ÈÃıπ)64 is the graphics manager of Macintosh system softwar∂°dONLNdbÈπı¬)Ìe. R°dONLNdeÈ√ı…)
  1459. YÄ°dONLNdfÈ…ı)our application °dONLNdvıña(˛ñ.makes QuickDraw calls to write text to the scr≠¿°dONLNd§ıa∞)Àeen or to a printer" °dONLNd∑ı∞)O. When QuickDraw °dONLNd»ñ(
  1460. ñdraws text, it draws it accor¨@°dONLNdÂï)z ding to the settings of the currç °dONLNdï)Öent window’s graphics port °dONLNd ñô(ñrE°dONLNd!ö¨)ecorπ`°dONLNd%¨ˆ)Jd, which includes the location information and complete font information. °dONLNdoñ%h("ñ.QuickDraw can draw text of any script system. œ`°dONLNdùh%Ä)“Figur¢ °dONLNd¢Ä%î)e 1-4?†°dONLNdßï%€) shows some of °dONLNd∂%ñ1C(.ñ&QuickDraw’s text-drawing capabilities.
  1461. RHc4SHc"SH]
  1462. ˇ·ˇ‚7^    °dONLNd›HäS¥(Pä
  1463. Figure 1-4°dONLNdËHÃS“)BA0°dONLNdÈH“S}), multiscript line of text drawn by QuickDraw°dONLNd√ä è(…än
  1464. °dONLNd¿ñé) The ª¿°dONLNd¿©ÃË) Font ManagerX °dONLNd(¿ÈÃc)@ supports QuickDraw by pr7Ä°dONLNdA¿cÃ˚)z!oviding the fonts that QuickDraw °dONLNdbÃñÿï(’ñ;needs, in the typefaces, sizes, and styles that QuickDraw r?‡°dONLNdùÃñÿ(’ñequests. The Font Manager °dONLNd∑ÿñ‰(·ñXkeeps track of all fonts available to an application, and supports fonts for all script °dONLNd‰ñª* systems.°dONLNd˘äè(ˇän
  1465. °dONLNdˆñ©) The ª¿°dONLNdˆ©Ø)TKÄ°dONLNdˆØ‰)ext UtilitiesN °dONLNd,ˆ‰Ô)5 arì °dONLNd/ˆÔo) e an integrated collection of r¿°dONLNdNˆp )Å$outines for performing a variety of °dONLNdrñ( ñoperations on text, ranging frU@°dONLNdê˙)Å4om sorting strings to formatting dates and times to °dONLNdƒñú(ñfiå¿°dONLNdΔú )    nding wor‘@°dONLNdœ ‹).d brº†°dONLNd”‹) eaks. The T√‡°dONLNdfi)1<ext Utilities work in conjunction with the Macintosh script °dONLNdñ&É(#ñ3management system and can take into account the difÿ°dONLNdMÉ&è)ÌferØ@°dONLNdPè&) ences in text handling among °dONLNdm&ñ2%(/ñ"script systems. If you use these rg¿°dONLNdè&%2 )è4outines, you can handle text operations in a manner °dONLNd√2ñ>(;ñthat is transportable to dif`°dONLNdfl2    >)sferȇ°dONLNd‚2>v) ent parts of the world.°dONLNd˙GäNè(Män
  1466. °dONLNd¸DñP©) The ª¿°dONLNdD©PÔ)Script Manager˝`°dONLNdDÔP)F@ is at the center of the Macintosh script management system. It °dONLNdNPñ\Ö(Yñ8initializes script systems, maintains important data strñ‡°dONLNdÜPÖ\ú)Ôuctur¿°dONLNdãPù\)es, supports switching text °dONLNdß\ñhfi(eñinput among difY¿°dONLNd∂\fihÍ)Hfer<@°dONLNdπ\Íh[) ent script systems, and pr@¿°dONLNd”\[h)q*ovides several text-manipulation services.°dONLNd˛qäxè(wän
  1467. °dONLNd    nñz©) The ª¿°dONLNd    n©zØ)TKÄ°dONLNd    nØz)ext Services Manager¿°dONLNd    nz;)`
  1468.  supports  †°dONLNd    #n<zõ)-text service components†°dONLNd    :núz)` such as input methods. If °dONLNd    UzñÜ(Éñyour application uses the Tì °dONLNd    pzÜj)wext Services Managerù‡°dONLNd    ÑzjÜ)]&, it can support the special kinds of °dONLNd    ™ÜñíÔ(èñNtext input needed for 2-byte script systems such as Japanese, Chinese, and Kor °dONLNd    ¯Üí(èean. 
  1469. dà®≤4cádàò&@*@*dà§≤€€?›ˇ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ?›ˇÄ›ˇÄò&@Ä*@Ä*§à‰≤€€€€€€€€€€€€€€€€€˛„ò–Á @(Á     #bÍ£dÁ     !•*däÁ     A.R),ú Á
  1470. 0ÇhT69Ê ¿ÜGhå.- Á˚‰˚‰˘‰€˛ @ áÄÄͲ@˛Ç@ÄͲ À*# ≥ÑE¨[[¿Í˛ ƒ]%’ä‘≠ÆÄÍ$ôH$ôï)…È(˙k=;ï!ÛÄÍx¨D)-éI)R˜È€€€€˛ ‡Ê8 ~`νD$X†ÎMıPHí:ƒ$T¿Î    V)PIVMJ(ï@Î
  1471. z&rêRb…\»ñ@Î2§+B†"≥íQ$@Ρ;@!"“èY¥‡ÎˆÁˆÁ€€ `@@!Äp@@Ïíê@ÄÄ@Ï˛íëD[Ó:£ê·DvÓE@Óé„™MP
  1472. •($™ZP´†Ó˛E!2âé…p:2íé%› Óe"T”¬k@#"Tʬ-@Óò¡àíúM∫¡à§ú6ÔÄÓ˝¸˝Ì˝¸˝Ì˝˙˝Ì€€€€ò&Ä®*Ä®*‰à ≤€€€€€€€€˛    @Ä8Ä˲@ƒÁ˛
  1473. ≈)µîè+ÿ¿È˛
  1474. Œı)ZªíTi@È $¶qRí¥‰JË)K@é§$Êàö¿Èv28q%¥xFëÈ˛@˛ ÄÁ˛@˛ ÄÁ ˛@˛ ‰€ ÄÄ „ @Ä@„  ≥ëãv‰ ‘’*Éà‰ ˛dôw§à‰ ˝;D}‰ )-ªé)‰€€€€    ¸Ä0`    HÄHê    IϺñ    K0ëIH8 Â    ëoRH@    Ÿ√£⁄êDÄ    ë}"ë9€€€ò&@*@*dà§≤€€‹3› fi‹Ä›‹Ä fi› fi‹Ä›‹Ä ‰¿˛ „¿˛ ¸ÄÏ¿˛˚¿˝ ı˛¿˝Ä˚‡˝ÙÄ¿˛˚‡˝8ÙÄ¿˝Ä ¸‡˝8Ù@¿˛˚¿˝p8¸x¸`¿˛ ˆ8¸˛ ¿˛ı‡x¸ Ä0¡¿˝Äˆ‡|¸˛0¡¿˛˙¿‡¿¸¸¸0¡¿˝Ä! ¸‡¿˛¸¸Å¿˛˚¯¿fi¸¸¿˛% ¸¸¿fl0į¡¿¿#˚¸¿è0¿aÄ¡¿Ä¿Ä#˚¸¿è ‡ ¿Ä¡¿Ä‡%˝!Äp~¿Ä`ÄÄ¡¿Ä‡Ä' ˛!åp¿Ä`ÄÅ¿Ä&˛"å¿ˇ¿‡Ä8¿¿<'% ‡¿ˇ¿?`Ä0¿¿~&˛"fl˛‡‡‡0`Ä0ÄÉÒˇÄ&@˝ˇ¸˛‡‡``Ä0·ˇɡˇ‡&¿˝ˇ¸˛‡`` ¿0ˇ˛Åˇˇ‡Ä& ¿˝ˇ¯¸<`‡‡`ˇ¸ÅˇÁ¿&¿˝ˇ¸pˇ¸3`0pÄ@ˇˇ‡Ä'% ¿˘Á?‡¯8ˇ¸¿<x¿¿?¿ˇ¿Ä¿Ä˝‡ıĸ¸Ä¿˘ı¸˝¿˝f˛ Ô>¸Ä ‡˝ˇÎ|˝ˇˇ˛ˇÏ¸˝ ˇ˛˝˛Ï¯˝ˇ¸˝dÏ?¸Äˇ¯Á¿˝    ‡Ä
  1475.  Ä·› fi‹Ä›‹Ä fi› fi‹Ä›‹Ä‹3›Uò&@Ä*@Ä*§à‰≤€€€€€€€€€€€€€€€€€˛„ò–Á @(Á     #bÍ£dÁ     !•*däÁ     A.R),ú Á
  1476. 0ÇhT69Ê ¿ÜGhå.- Á˚‰˚‰˘‰€˛ @ áÄÄͲ@˛Ç@ÄͲ À*# ≥ÑE¨[[¿Í˛ ƒ]%’ä‘≠ÆÄÍ$ôH$ôï)…È(˙k=;ï!ÛÄÍx¨D)-éI)R˜È€€€€˛ ‡Ê8 ~`νD$X†ÎMıPHí:ƒ$T¿Î    V)PIVMJ(ï@Î
  1477. z&rêRb…\»ñ@Î2§+B†"≥íQ$@Ρ;@!"“èY¥‡ÎˆÁˆÁ€€ `@@!Äp@@Ïíê@ÄÄ@Ï˛íëD[Ó:£ê·DvÓE@Óé„™MP
  1478. •($™ZP´†Ó˛E!2âé…p:2íé%› Óe"T”¬k@#"Tʬ-@Óò¡àíúM∫¡à§ú6ÔÄÓ˝¸˝Ì˝¸˝Ì˝˙˝Ì€€€€ò&Ä®*Ä®*‰à ≤€€€€€€€€˛    @Ä8Ä˲@ƒÁ˛
  1479. ≈)µîè+ÿ¿È˛
  1480. Œı)ZªíTi@È $¶qRí¥‰JË)K@é§$Êàö¿Èv28q%¥xFëÈ˛@˛ ÄÁ˛@˛ ÄÁ ˛@˛ ‰€ ÄÄ „ @Ä@„  ≥ëãv‰ ‘’*Éà‰ ˛dôw§à‰ ˝;D}‰ )-ªé)‰€€€€    ¸Ä0`    HÄHê    IϺñ    K0ëIH8 Â    ëoRH@    Ÿ√£⁄êDÄ    ë}"ë9€€€ˇ=ê@ˇ ˇˇˇˇ@
  1481. ˇ·ˇ‚7^
  1482. 4*\¯, Palatino&e.3+l"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@l Introduction4⁄*˙¯
  1483. (‡*14    )BThe Macintosh System Software4^*¿¯
  1484. °dONLNd\xhê(exFigurR¿°dONLNd\êh§)e 1-5@°dONLNd
  1485. \§h() shows how you can use the Tî@°dONLNd&\(hÛ)Ñ.ext Services Manager to convert Japanese text.
  1486. â*ö¯4ä*ö¯"ä*]
  1487. ˇ·ˇ‚7^    °dONLNdUläñ(ál
  1488. Figure 1-5°dONLNd`Æäo)B0Input and conversion of Japanese text using the ÈÄ°dONLNdêoät)¡TiÄ°dONLNdëtäÀ)ext Services Manager
  1489. °dONLNd¶ëlùr(ölY@Ä°dONLNdßërùœ)Nou can use the script management system to achieve any level of text-handling °dONLNdıûl™µ(ßlsophistication, frP‡°dONLNdû∂™Ú)JIom simple display of static text in one language to highly sophisticated °dONLNdP´l∑¿(¥lmultilanguage wor(Ä°dONLNda´¡∑”)Ud prã`°dONLNde´”∑fl)<ocessing and page layout. The simplest way to achieve basic °dONLNd°∏lƒ•(¡l worldwide flÙ¿°dONLNd≠∏•ƒ:)9%exibility in text handling is to use m °dONLNd“∏;ƒA)ñT¸‡°dONLNd”∏@ƒb)extEdit,∞°dONLNd€∏cƒç)#     which pr…Ä°dONLNd‰∏çƒÃ)*ovides simple °dONLNdÚ≈l—”(ŒlVtext-handling capabilities for text of any script system, including multiscript text. °dONLNdH“lfir*Tµ¿°dONLNdI“qfi3)+extEdit automatically handles text with mor‡†°dONLNdt“3fiª)¬!e than one script, style, and dir„`°dONLNdfiÏ)à ection. For °dONLNd°fllÎú(Ël
  1490. example, T0 °dONLNd´flúÎç)09extEdit supports mixing English text (a left-to-right dirπ‡°dONLNd‰flçÎÁ)Òectional script) with °dONLNd˙Ïl¯Ï(ıl Arabic text (a right-to-left dir”‡°dONLNdÏϯπ)Ä1ectional script) in the same line (as you saw in P@°dONLNdKÏ∫¯“)ŒFigur#°dONLNdPÏ“¯Ê)e 1-4¿Ä°dONLNdUÏʯÎ)).
  1491. *¯4*¯    °dONLNdXl(lNote
  1492. ˇ·ˇ‚7^
  1493. °dONLNd]l†*FFor complete information on text handling, including multiscript text °dONLNd£l*©* handling, see ¿°dONLNd±©*˘)=Inside Macintosh: T¢°dONLNdƒ˘*)Pext.YÄ°dONLNd»*≠)& For information on individual script °dONLNdÓ*l6#(3l(systems and how to localize your softwar¥†°dONLNd*#6h)∑e for markets ar°dONLNd&*i6ì)F    ound the °dONLNd/6lBú(?l world, see ìÄ°dONLNd:6úB)0Guide to Macintosh Softwar≥ °dONLNdT6BG)re Localization.,Zapf Dingbats°¿°dONLNdl9MAR)?u
  1494. `*g¯4`*f¯ ala¯
  1495. ˇ·ˇ‚7^ °dONLNdnRl`(\lInterapplication Communicationˇˇˇˇˇˇ‘@(\Ò1
  1496. °dONLNdçflr(olThe ª¿°dONLNdëfr)interapplication communicationô‡°dONLNdØfr)ìs
  1497.  °dONLNd∞frk) (IAC) architectureo¿°dONLNd√fkrw)T pr∂‡°dONLNdΔfwrø) ovides a standar‡°dONLNd÷f¿r‹)Id and °dONLNd‹sl€(|lMextensible mechanism for communication among Macintosh applications. The IAC °dONLNd)Älåt*arE°dONLNd+Äuåõ)        chitectur˘¿°dONLNd4Äõå„)&e includes these c@°dONLNdEĉå˝)Imain q°dONLNdJÄ˝å)parts:°dONLNdQñlùq(úln
  1498. °dONLNdSìxüã) The ª¿°dONLNdWìãü◊)Edition Manager®@°dONLNdfìÿü‡)M; allows applications to automate copy and paste operations °dONLNd°üx´B(®x.between applications, so that data can be sharê °dONLNdœüB´Ü) ed dynamically‚Ä°dONLNd›üÖ´á)C.
  1499. ödz‹4ôcödò0@x@xöd⁄‹——Ï@˝Óˇ¿Óˇ¿˝@Ó@@Ó@˝@Ó@@Ó@˝@Ó@@Ó@˝_ø˚ˇ¿_ø˚ˇ‡˝@ @@  ˝_† ˇ¿_† ˇ‡˝@ @@  ˝_† ˇ¿_† ˇ‡˝@ @@  ˝_† ˇ‡_† ˇ‡˝@  @  ˝_† ˇ‡_† ˇ‡˝@  @  ˝_ø˚ˇ‡_ø˚ˇ˝@Ó @Ó˝@Ó @Ó˝@Ó @Ó˝Óˇ‡Óˇ˝@Ó0@Ó˝@Ó@Ó˝@Ò@˙Ĉ˝@Ò@˙Ĉ˝@ Ò    @ ÄĈ˝Gˇ¯Ò    @Ä$pĈ˝@ Ò@Äÿ˛Äˆ˝A¸»Ò    @@pĈ˝A$HÒ    @X8ÅÏàĈ˝A¸HÒ    @`@Ĉ˝A$»Ò    @Ä@ÙÄĈ˝A¸Ò    AA Ĉ˝@p"(Ò    AÅĈ˝A¨BÒ    @¸¯0Ĉ˝F#Ò    @ ĿĈ ˝@Ò@˙Ĉ˝GˇˇËÒB˙™Äˆ˝GˇˇËÒE˙UĈ˝@Ó@Ó˝@Ó@Ó¸˝@Ó¸@ˇÄ˝@ˇÄ@Ò˛˚@Ò˛˛@Ú¸˙@Ú?¯˝@Û˘@Û‡¸@Û¿¯@Ù¿˚@Ùį@Ù˙@Ù˜@Ù ˙@Ù8˜@Ù8˙@Ù`˜@Ù‡˙@ı¿˜@ıÄ˙@ıˆ@ı˘@ı ˆ@ı˘@ı8ˆ@ıp˘@ı‡ˆ@ı¿˘@˛˙Ĉ@˛˙Ģ@¯˚ı@¯˚¯@ ‡¸ı@¿¸8¯@8?Ä˝pı@0¸`¯!@`˛¸˛¿ı@‡¸˛¿¯@¿˛Ù@IJ˜@¸¿Ù@¸¿˜@ ˚8Ù@˚~0˜ò0@Äx@Äx⁄d‹@8˚¸‡Ù@0˚¯‡˜@`˙ÄÙ@‡˙Ę@¿Î@ÄÓ @Í@Ì @Í@ Ì @8Í@8Ì @`Í@‡Ì A¿ÍAÄÌ    CÈGÏ    NÈLÏ    XÈxÏ    pÈ`Ï    @È@Ï———)˛Ñ˛B˚0$¸˛ ¸(0˛Ñ˛@˚H$¸˛˚,f√sÊΔ‰ß’…fl,ó;6„"Ôĸ$ÃŒffcÁ3ÊèíüW&¸,ˇá…ı‰5£ËäQ®îœ¶ó¢ñ@¸0%˛âOˇ˜Öëœâ4÷è¢/¸,ÿÑIÖ§“£äV®îÃ&î"ñ@¸@%∞âH›Üëñƒ    ‘ Jå"-¸, gÉ…ÙƒrCÙ…”êtª¶ì¢óĸzŒéGfs„ªétâ…”&¸ˆ@˝@˜˝Ä˛Ä¯ˆÄ ˝@˜˝Ä˛Ä¯
  1500. ‰˝ÄÙ˛@@Π¬Ä ˝˛˛@Î
  1501.  ¬Ä ˙"    9æÿ]…Áf‡3:ŸˆqrÊ≤\Ê◊åéOfiœ˛"    VºS)Aœ0L¶Ω/ëJ9¬S/ñ^âJOTlº˛"    6†S)F»–D¶°(ëJÿ¢S(ñPâJHU¨¥˛"    ›S«c«r;%7qrwë“ÁñNé;GTÏò˛¸Áĸ¯¸Áĸ¯¸◊ Ê@@@Û
  1502. ‰˛@ÛÊ\9æÿ]…Áf‡ıÊRVºS)Aœ0ıÊR6†S)F»–ıÊR›S«c«rı‚Ò‚Ò‚Ò———————————    Ï@È@Óˇ¿˝Óˇ¿@Ó@˝@Ó@@Ó@˝@Ó@@Ó@˝@Ó@_ø˚ˇ‡˝_ø˚ˇ¿@  ˝@ @_† ˇ‡˝_† ˇ¿@  ˝@ @_† ˇ‡˝_† ˇ¿ò0Ä¿xÄ¿xdZ‹@  ˝@ `_† ˇ‡˝_† ˇ‡@  ˝@  _† ˇ‡˝_† ˇ‡@  ˝@  _ø˚ˇ˝_ø˚ˇ‡@Ó˝@Ó @Ó˝@Ó @Ó˝@Ó Óˇ˝Óˇ@Ó˝@Ó@Ó˝@Ó@Ò˝@˙ ˆ@Ò˝@˙ ˆ@ Ò˝@  ˆGˇ¯Ò˝GˇÄ ˆ@ Ò˝@ Ä ˆA¸»Ò˝A¸¿@$`ˆA$HÒ˝A$@X8ÇD`ˆA¸HÒ˝A¸@`BÑ`ˆA$»Ò˝A$¿ÄC`ˆA¸Ò˝A¸BÑ`ˆ@p"(Ò˝@p"!ÇD`ˆA¨BÒ˝A¨B¸#‡ˆF#Ò ˝F# `ˆ@Ò˝@˚`ˆ@Ò˝@˝™†ˆ@Ò˝@˝U`ˆ@Ó˝@Ó@Ó¸˝@Ó¸@ˇÄ˝@ˇÄ@Ò˛˚@Ò˛˛@Ú¸˙@Ú?¯˝@Û˘@Û‡¸@Û¿¯@Ù¿˚@Ùį@Ù˙@Ù˜@Ù ˙@Ù8˜@Ù8˙@Ù`˜@Ù‡˙@ı¿˜@ıÄ˙@ıˆ@ı˘@ı ˆ@ı˘@ı8ˆ@ıp˘@ı‡ˆ@ı¿˘@˛˙Ĉ@˛˙Ģ@¯˚ı@¯˚¯@ ‡¸ı@¿¸8¯@8?Ä˝pı@0¸`¯!@`˛¸˛¿ı@‡¸˛¿¯@¿˛Ù@IJ˜@¸¿Ù@¸¿˜@ ˚8Ù@˚~0˜@8˚¸‡Ù@0˚¯‡˜@`˙ÄÙ@‡˙Ę@¿Î@ÄÓ @Í@Ì @Í@ Ì @8Í@8Ì @`Í@‡Ì A¿ÍAÄÌ    CÈGÏ    NÈLÏ    XÈxÏ    pÈ`Ïò0¿x¿xZdö‹    @È@Ï——"0¸¸@BH˙D¸˙"H¸    ¸@B@˙0d˛¸˙-f«f33    7ù»fÂ∂˘« ÈÄ˚PT…Nn∂tªõ873òKç¬Yò˛-ˇÑœˇézô ôï|~C‰K¿˚xUÎCñØÃê◊åL˙|Z_"–˛-HÿÑ»nΔâBô âïDbCK@˚MMÜ®ÃìT4L¬t*Q"v˛-2 gáG3;    ;y(ví<}√ÍiÄ˚D‰ávGÛô”ú7:X&O!Ÿ–˛˝˚Ï@˛˜˝˚Ï@˛˜˝Â@˛˜˝@Ä@P@¯¸@ˆ˝
  1503. ÄÄ@@Å˛¯¸@ˆ#πfiÜ99ÑÒŸ◊1õÌÖ‹û˘    3ªf46ctßj‡ˆ#&d’OI&D }T˘•k≈2   zWœ*LÚ¢Ù@ˆ#"d’HI&D aT¡aj2   BTM*LÇj¢Ñ@ˆ#§’G9%É…›Tπ$]—≈<v˘    :[Δ*4r:Czpˆ˙Ä˝˝„˙Ä˝˝„„¸Ä◊¸Ä◊ ;7ôò¿Ÿ yâß˝‡Ÿ 6Fàßa†Ÿ ;áôú»Ÿ—————————————————————————————————————ò0@x@xöd⁄‹————˝    ~ˆ  òpfl˝    S"ÄÄfl˝    (""¿fl˝    Ö(B‡@fl˝    EHB3@ fl˝    "%êD¬D"@ fl˝    ")DHIÄ@fl˝    uÕp∏08sÉÄflˆ@fiˆ@fiˆÄfi—!˝> ˚˝0,˝ ˝Ę˝"ÛPË ˝ ˘@˝ @˛¸@˝˘,˝&8˜è√Äaœ$ZÊ‡†«=Ôt«·«    º¿◊Ŷ„ë˘Ê∏7B4¸,˝&HRkMí%e¨LS@$SA(îôõL¶Ç4HA"ÇIGñÉ(íêIçH¸,˝&@¢râ*)»H¢@D§B®ëIDÇ8HÇ%PDßQâà¸,˝&B¥Ñ&Δ4K2í±ÄNµ‚q-&$”c@–&¬uÑÛ⻟)`ûú¸,˝&˝$t<é √í!–ù#à5"¡éI:$ûG;0<Å©Léá휆jh¸˘ ¸H˝˛Ę˜˘˚@˝˛Ę˜˘˚Ä˝˛ˆ˜—˝~x¸¸ÃflÏ˝Rà˛帧âåÏ˝ à˛AëîÏ˝M@¥ì1¬îkΔé- ç‡ê‰ëîÏ˝¢ #YñJB§ëI4÷#B@°Q§Ï˝!¬!ê§Å…ë$‰CÇ@¢b"»Ï˝"A …úÑâ:”ôDĬ,"$àÏ˝qŸB„†ég∏‘ç8Ë „ôÄÅ»Ü'v∏Ï ÚD ¸ÄÈÚD·Ú8·—˝ vx1Ä0«xÄ`√‚˝d@ÄI(Ä$Äë$Ä„˝$Ä),ÄB    HÄ„˝,òΩ`b+B›`êÄ„˝53I†—Bi)† PÄ„˝ 6$I ëÑr) @Q‚˝ $MÚ@àÇR@êR‚˝ $r“AÊ !uíAÁ傘 fiıfiıfi— ˝<;Ä‹ ˝D€ ˝D$€˝!Ø
  1504.  Ä87Z›˝E4”@(Iå›˝åJD„Ä(â›˝åÎ_Dû›˛sR,„ÄÓj›————ò0@x@xöd⁄‹——Ï@˝Óˇ¿Óˇ¿˝@Ó@@Ó@˝@Ó@@Ó@˝@Ó@@Ó@˝_ø˚ˇ¿_ø˚ˇ‡˝@ @@  ˝_† ˇ¿_† ˇ‡˝@ @@  ˝_† ˇ¿_† ˇ‡˝@ @@  ˝_† ˇ‡_† ˇ‡˝@  @  ˝_† ˇ‡_† ˇ‡˝@  @  ˝_ø˚ˇ‡_ø˚ˇ˝@Ó @Ó˝@Ó @Ó˝@Ó @Ó˝Óˇ‡Óˇ˝@Ó0@Ó˝@Ó@Ó˝@Ò@˙Ĉ˝@Ò@˙Ĉ˝@ Ò    @ ÄĈ˝Gˇ¯Ò    @Ä$pĈ˝@ Ò@Äÿ˛Äˆ˝A¸»Ò    @@pĈ˝A$HÒ    @X8ÅÏàĈ˝A¸HÒ    @`@Ĉ˝A$»Ò    @Ä@ÙÄĈ˝A¸Ò    AA Ĉ˝@p"(Ò    AÅĈ˝A¨BÒ    @¸¯0Ĉ˝F#Ò    @ ĿĈ ˝@Ò@˙Ĉ˝GˇˇËÒB˙™Äˆ˝GˇˇËÒE˙UĈ˝@Ó@Ó˝@Ó@Ó¸˝@Ó¸@ˇÄ˝@ˇÄ@Ò˛˚@Ò˛˛@Ú¸˙@Ú?¯˝@Û˘@Û‡¸@Û¿¯@Ù¿˚@Ùį@Ù˙@Ù˜@Ù ˙@Ù8˜@Ù8˙@Ù`˜@Ù‡˙@ı¿˜@ıÄ˙@ıˆ@ı˘@ı ˆ@ı˘@ı8ˆ@ıp˘@ı‡ˆ@ı¿˘@˛˙Ĉ@˛˙Ģ@¯˚ı@¯˚¯@ ‡¸ı@¿¸8¯@8?Ä˝pı@0¸`¯!@`˛¸˛¿ı@‡¸˛¿¯@¿˛Ù@IJ˜@¸¿Ù@¸¿˜@ ˚8Ù@˚~0˜ò0@Äx@Äx⁄d‹@8˚¸‡Ù@0˚¯‡˜@`˙ÄÙ@‡˙Ę@¿Î@ÄÓ @Í@Ì @Í@ Ì @8Í@8Ì @`Í@‡Ì A¿ÍAÄÌ    CÈGÏ    NÈLÏ    XÈxÏ    pÈ`Ï    @È@Ï———)˛Ñ˛B˚0$¸˛ ¸(0˛Ñ˛@˚H$¸˛˚,f√sÊΔ‰ß’…fl,ó;6„"Ôĸ$ÃŒffcÁ3ÊèíüW&¸,ˇá…ı‰5£ËäQ®îœ¶ó¢ñ@¸0%˛âOˇ˜Öëœâ4÷è¢/¸,ÿÑIÖ§“£äV®îÃ&î"ñ@¸@%∞âH›Üëñƒ    ‘ Jå"-¸, gÉ…ÙƒrCÙ…”êtª¶ì¢óĸzŒéGfs„ªétâ…”&¸ˆ@˝@˜˝Ä˛Ä¯ˆÄ ˝@˜˝Ä˛Ä¯
  1505. ‰˝ÄÙ˛@@Π¬Ä ˝˛˛@Î
  1506.  ¬Ä ˙"    9æÿ]…Áf‡3:ŸˆqrÊ≤\Ê◊åéOfiœ˛"    VºS)Aœ0L¶Ω/ëJ9¬S/ñ^âJOTlº˛"    6†S)F»–D¶°(ëJÿ¢S(ñPâJHU¨¥˛"    ›S«c«r;%7qrwë“ÁñNé;GTÏò˛¸Áĸ¯¸Áĸ¯¸◊ Ê@@@Û
  1507. ‰˛@ÛÊ\9æÿ]…Áf‡ıÊRVºS)Aœ0ıÊR6†S)F»–ıÊR›S«c«rı‚Ò‚Ò‚Ò———————————    Ï@È@Óˇ¿˝Óˇ¿@Ó@˝@Ó@@Ó@˝@Ó@@Ó@˝@Ó@_ø˚ˇ‡˝_ø˚ˇ¿@  ˝@ @_† ˇ‡˝_† ˇ¿@  ˝@ @_† ˇ‡˝_† ˇ¿ò0Ä¿xÄ¿xdZ‹@  ˝@ `_† ˇ‡˝_† ˇ‡@  ˝@  _† ˇ‡˝_† ˇ‡@  ˝@  _ø˚ˇ˝_ø˚ˇ‡@Ó˝@Ó @Ó˝@Ó @Ó˝@Ó Óˇ˝Óˇ@Ó˝@Ó@Ó˝@Ó@Ò˝@˙ ˆ@Ò˝@˙ ˆ@ Ò˝@  ˆGˇ¯Ò˝GˇÄ ˆ@ Ò˝@ Ä ˆA¸»Ò˝A¸¿@$`ˆA$HÒ˝A$@X8ÇD`ˆA¸HÒ˝A¸@`BÑ`ˆA$»Ò˝A$¿ÄC`ˆA¸Ò˝A¸BÑ`ˆ@p"(Ò˝@p"!ÇD`ˆA¨BÒ˝A¨B¸#‡ˆF#Ò ˝F# `ˆ@Ò˝@˚`ˆ@Ò˝@˝™†ˆ@Ò˝@˝U`ˆ@Ó˝@Ó@Ó¸˝@Ó¸@ˇÄ˝@ˇÄ@Ò˛˚@Ò˛˛@Ú¸˙@Ú?¯˝@Û˘@Û‡¸@Û¿¯@Ù¿˚@Ùį@Ù˙@Ù˜@Ù ˙@Ù8˜@Ù8˙@Ù`˜@Ù‡˙@ı¿˜@ıÄ˙@ıˆ@ı˘@ı ˆ@ı˘@ı8ˆ@ıp˘@ı‡ˆ@ı¿˘@˛˙Ĉ@˛˙Ģ@¯˚ı@¯˚¯@ ‡¸ı@¿¸8¯@8?Ä˝pı@0¸`¯!@`˛¸˛¿ı@‡¸˛¿¯@¿˛Ù@IJ˜@¸¿Ù@¸¿˜@ ˚8Ù@˚~0˜@8˚¸‡Ù@0˚¯‡˜@`˙ÄÙ@‡˙Ę@¿Î@ÄÓ @Í@Ì @Í@ Ì @8Í@8Ì @`Í@‡Ì A¿ÍAÄÌ    CÈGÏ    NÈLÏ    XÈxÏ    pÈ`Ïò0¿x¿xZdö‹    @È@Ï——"0¸¸@BH˙D¸˙"H¸    ¸@B@˙0d˛¸˙-f«f33    7ù»fÂ∂˘« ÈÄ˚PT…Nn∂tªõ873òKç¬Yò˛-ˇÑœˇézô ôï|~C‰K¿˚xUÎCñØÃê◊åL˙|Z_"–˛-HÿÑ»nΔâBô âïDbCK@˚MMÜ®ÃìT4L¬t*Q"v˛-2 gáG3;    ;y(ví<}√ÍiÄ˚D‰ávGÛô”ú7:X&O!Ÿ–˛˝˚Ï@˛˜˝˚Ï@˛˜˝Â@˛˜˝@Ä@P@¯¸@ˆ˝
  1508. ÄÄ@@Å˛¯¸@ˆ#πfiÜ99ÑÒŸ◊1õÌÖ‹û˘    3ªf46ctßj‡ˆ#&d’OI&D }T˘•k≈2   zWœ*LÚ¢Ù@ˆ#"d’HI&D aT¡aj2   BTM*LÇj¢Ñ@ˆ#§’G9%É…›Tπ$]—≈<v˘    :[Δ*4r:Czpˆ˙Ä˝˝„˙Ä˝˝„„¸Ä◊¸Ä◊ ;7ôò¿Ÿ yâß˝‡Ÿ 6Fàßa†Ÿ ;áôú»Ÿ—————————————————————————————————————ò0@x@xöd⁄‹————˝    ~ˆ  òpfl˝    S"ÄÄfl˝    (""¿fl˝    Ö(B‡@fl˝    EHB3@ fl˝    "%êD¬D"@ fl˝    ")DHIÄ@fl˝    uÕp∏08sÉÄflˆ@fiˆ@fiˆÄfi—!˝> ˚˝0,˝ ˝Ę˝"ÛPË ˝ ˘@˝ @˛¸@˝˘,˝&8˜è√Äaœ$ZÊ‡†«=Ôt«·«    º¿◊Ŷ„ë˘Ê∏7B4¸,˝&HRkMí%e¨LS@$SA(îôõL¶Ç4HA"ÇIGñÉ(íêIçH¸,˝&@¢râ*)»H¢@D§B®ëIDÇ8HÇ%PDßQâà¸,˝&B¥Ñ&Δ4K2í±ÄNµ‚q-&$”c@–&¬uÑÛ⻟)`ûú¸,˝&˝$t<é √í!–ù#à5"¡éI:$ûG;0<Å©Léá휆jh¸˘ ¸H˝˛Ę˜˘˚@˝˛Ę˜˘˚Ä˝˛ˆ˜—˝~x¸¸ÃflÏ˝Rà˛帧âåÏ˝ à˛AëîÏ˝M@¥ì1¬îkΔé- ç‡ê‰ëîÏ˝¢ #YñJB§ëI4÷#B@°Q§Ï˝!¬!ê§Å…ë$‰CÇ@¢b"»Ï˝"A …úÑâ:”ôDĬ,"$àÏ˝qŸB„†ég∏‘ç8Ë „ôÄÅ»Ü'v∏Ï ÚD ¸ÄÈÚD·Ú8·—˝ vx1Ä0«xÄ`√‚˝d@ÄI(Ä$Äë$Ä„˝$Ä),ÄB    HÄ„˝,òΩ`b+B›`êÄ„˝53I†—Bi)† PÄ„˝ 6$I ëÑr) @Q‚˝ $MÚ@àÇR@êR‚˝ $r“AÊ !uíAÁ傘 fiıfiıfi— ˝<;Ä‹ ˝D€ ˝D$€˝!Ø
  1509.  Ä87Z›˝E4”@(Iå›˝åJD„Ä(â›˝åÎ_Dû›˛sR,„ÄÓj›————ˇ^ê@ˇ ˇˇˇˇ@
  1510. ˇ·ˇ‚7^
  1511. 4H\, Palatino&e.3+ä"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@ä Introduction4⁄ä˙(‡äThe Macintosh System Software
  1512. (‡ 15
  1513. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1514. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  1521. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1522. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˜˙ˇˇ˙ˇ˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  1529. 4Å4w?òÄ
  1530. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1531. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˜˙ˇ˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛¸ˇˇ
  1538. ˇ˛ˇ˛¸ˇ˛¸ˇ˝˚ˇ˛˛˛ˇ˝
  1539. ˇ˛ˇ˛
  1540. ˇ˛ˇ˛˛˛ˇ˝˜˛˛ˇ˝
  1541. ˇ˛ˇ˛
  1542. ˇ˛ˇ˛˙ˇ˜˛˝ˇ˛ˇ˙˛ˇ˚¸ˇ˛˜˛˛ˇ˝
  1543. ˇ˛ˇ˛
  1544. ˇ˛ˇ˛˛ˇˇ˝˜˛¸ˇˇ
  1545. ˇ˛ˇ˛    ¸ˇˇ˜˛˛ˇ˝
  1546. ˇ˛ˇ˛
  1547. ˇ˛ˇ˛˛˛ˇ˝˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,Zapf Dingbats°dONLNd_äfè(eän
  1548. °dONLNd\ñh©) The ª¿°dONLNd\©h )Apple Event Manager∑`°dONLNd\h°)d" allows applications to send and r„@°dONLNd;\°hœ)î
  1549. espond to ® °dONLNdE\œh ).Apple events.°dONLNdSqäxè(wän
  1550. °dONLNdUnñz¶) The;¿°dONLNdXnßzÓ) Event Manager‰¿°dONLNdfnÓzÇ)G" allows applications to send and r†°dONLNdànÉzˇ)ïespond to high-level events °dONLNd§zñÜΔ(Éñ other than L@°dONLNdØzΔÜ)0 Apple events‘°dONLNdªzÜ):.°dONLNdΩèäñè(ïän
  1551. °dONLNdøåñò©) The ª¿°dONLNd√å©ò|))Program-to-Program Communications (PPC) TÑ`°dONLNdÏå|òõ)”oolbox°`°dONLNdÚåõò) allows applications to °dONLNd
  1552. òñ§Z(°ñ,exchange blocks of data with each other by rß°dONLNd6òZ§)ƒ%eading and writing low-level message °dONLNd[§ñ∞fi(≠ñblocks. It also pr§¿°dONLNdm§fi∞&)Hovides a standar¸¿°dONLNd}§&∞)H3d user interface that allows a user working in one °dONLNd∞∞ñº (πñFapplication to select another application with which to exchange data.°dONLNd˜¡äÕÔ( äThe parts of the IAC arÿ`°dONLNd¡ÔÕ)e    chitecturç °dONLNd¡Õ)'1e depend upon each other in fairly straightforwarK@°dONLNdH¡ÒÕ)€d ways. °dONLNdPŒä⁄Q(◊ä-The Edition Manager uses the services of the ŒÄ°dONLNd}ŒQ⁄)«'Apple Event Manager to support dynamic °dONLNd§€äÁŸ(‰ädata sharing. The Ö`°dONLNd∂€ŸÁ:)OApple Event Managerv‡°dONLNd…€:Áf)a , in turn, rÉ °dONLNd’€fÁ),#elies on the Event Manager to send °dONLNd¯ËäÙ
  1553. (ÒäVApple events as high-level events, and the Event Manager uses the services of the PPC °dONLNdNıäê*Tµ¿°dONLNdOıèØ)oolbox.°dONLNdWäû(äIf yo∑°dONLNd\û≈)u want y∏°dONLNdd≈)'Dour application to exchange data with another application, you’ll pr›‡°dONLNd®(obably °dONLNdØä 1(ä&use either the Edition Manager or the w¿°dONLNd’1 í)ßApple Event Manageri@°dONLNdËí ˜)a. The Edition Manager °dONLNd˛!ä-(*äallows users to copy data frΩÄ°dONLNd!-˚)y7om one application’s document to another application’s °dONLNdQ.ä:Ô(7äOdocument, updating the information automatically when the data in the original °dONLNd†;äG·*document changes. b¿°dONLNd≤;‚G˙)XFigur5Ä°dONLNd∑;˙G)e 1-6”°dONLNdº;GÌ)0 shows how you can use the Edition Manager to cr—‡°dONLNdÏ;ÌG)fleate a °dONLNdÛHäT°(Qäposte@†°dONLNd¯H¢T)r whose elements (an iO`°dONLNdHT2)c llustration
  1554. ‡°dONLNdH3TB)., a tÕ@°dONLNdHBT_)itle, an{`°dONLNd&H`TÖ)d some t)†°dONLNd.HÜTì)&ext^@°dONLNd1HìTñ))≤ °dONLNd2HñT) all originate in documents °dONLNdNUäaí(^äcrµ@°dONLNdPUíaˇ)Weated by other applications. If, for example, the user changes the illustration in the °dONLNdßbänß(käCoriginal document, the copy of that illustration in the poster couls °dONLNdÍb®n∂(k®d bñÄ°dONLNdÌb∂n‚)    e updated,‡°dONLNdˆb„nÂ)- °dONLNd˜oä{Δ(xäautomaticallyÚ °dONLNdo≈{«);.
  1555. ùHÆ4ûHÆ"ûH]
  1556. ˇ·ˇ‚7^    °dONLNdìäû¥(õä
  1557. Figure 1-6°dONLNdìÃû~)B,Sharing dynamic data with other applications
  1558. ≠àѯ4¨}≠~ò0@z@z≠~̯——’ˇˇ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄò0@Äz@ÄzÌ~-¯’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄò0Ä¿zÄ¿z-~m¯’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄò0¿z¿zm~≠¯’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ’ˇÄ——————————————————
  1559. ˛;√Ÿ
  1560. ˛Ñ$Ÿ
  1561. ˛D$Ÿ
  1562. ˛D.Ÿ
  1563. ˛"+êt)Ÿ
  1564. ˛"IŸ
  1565. ˛"IŸ
  1566. ˛w?ÜŸ—————"˝ ˚ÄIJ ˛Å@˛Ä ı ˛?˛‡3˝¸@˛IJÚ"˛˛I˝¸@IJÙ(˛""kÅc¥∂ãg4…¡««(í¿ƒ±ö≤»é‚&l‡˜'˛!e≤4Å¿ë§ôö,%ë©ZBI:A)ªA.“Lœ)ì'i5ˆ(˛")+9 y%íHDë*LJÇHíB$ïàä(°B1%@˜(˛" I$L!
  1567. I!HHëRîí$ÇQ$Ç)&$íQ"DQ(†˜(˛" f,IÇAk°¶0X¢w$‹≈ó5¬—¥¬M4–/4Ÿ¶ÊrL ˜(˛"p^6FÄ‚M!$l‚Z(ì⁄&Å!$Åâ#4√DLI¿˜˝!˘ ÙÒ˝#˘@ÙÒ˝¯‡ÄÙÒò0@z@z≠~̯——!¸ @˛@@˝@˘Ä˙Ä@¸!˛8Ä0˛Ä˛Ä¸p˝`˝Ù)˛ÄPÄÄÄ ˛ 1˚˚.˛(g#åëŒ[ú∞ÿö√â9`&»Õ:À"9»òÿ 1¶”$ÿú‰Ll˝.˛(®dí$¢RÕ:`–iÕ$ôK¥çê#]&O<¶J]§h@H˙}di•.“4˝.˛(!*(¨%"†IhêHä(âÅâBJƒR(¢ÇàƒH@à¢Q$H¡Db$˝.˛(!EI0%$†ä$U Q)Ç(ä    BìíIDÑëDP@à§RHQBH¢(˝.˛("ak&B%Ê”4Ö0ôíKõ9 D⁄hº”fùŸ»ò#ë&ìXôŒÏ‰L˝.˛(rNMòbvòí#9"ëçõb&¿‰ëà” Dfë0êaD¢lë3HòH˝ ÙÙÓ ÙÙÓÊ Ó——˛ ˛ ˘Ç˘Ô˛>¿˘ 0˝˛¡˛Ô˛@@¸    2HÄ'Ô"˛B\M9/"àXú(ú`    !
  1568. Äqå∞Ò"˛F`ÊK¥çq%&—‡)§ê!<ºíS»Ò"˛"BhDQâ"X    D®H≈`Bï¨àÒ"˛$Ñîàí(ä
  1569. D`IQIÄÇ?    "Å&0êÒ"˛&≈Ñ»ª9iNM ôÑ—Ÿ00ÅdÁ0Ò"˛tܯà“&^2 0¿a8Å!l¿2Ô '!≥¿ÒÒĢ˛ÒĢ˛Ú˜ ˛————————————————˚Äÿ˛˚‡‡˛ Ä@‡˛ Y¶±"3@Mé·˛     yÂ$ $˚À'IÄFí·˛ EX D¢â"±Ñ†·˛ J` D§íD¬Ö ·˛ !&õL…'2Δö⶷˛sòb01D√db!…Ä‚˝ Ä˛˛@fl˝ Ä˛˛@fl
  1570. ˝A˝€——Ùêfl˛>˛pfi˛˛ ·˛i#ò c0“ô»Õ‚˛3$§ îÄHg    3&]&‚˛"!(XAkpB\
  1571. $‚ò0@qz@qzÌ~¯˛"BH`AåàÑ$d(‚˛$B…ÃE9ÅÜ4L⁄H‚˛xCf0¸ΔCúÑ$3à‚¯Ä€¯Ä€———¸˝˝"·˛>  ˛÷˛$ ˛D Â˛%Ål„5ÃlDI…ß#Ê˛2vŇ$5$ö4D …tåÊ˛$$Ç8&+¢$DJàä(àÊ˛"$ID*L!b(àëQHêÊ˛!,iÇ ÑN…†dLÃ∞YiÊ˛q∂IÂŒKf#òIà€ëFÊ—————
  1572. ˝à⁄˛0¸ ·˛˛
  1573.      ÄÄ‚˛2Ü    '&úåhÄ‚˛    KI    (s%“0 Ä‚˛"äV*"(¢ Ä‚˛ $åX"EDI"@·˛ !,îì2¡d]§@$·˛ s∂c :#nDiDN·ÙflÙfl————————————————ò0@z@z≠~̯——’3ˇ    ÷ˇ‘ˇ’Ä    ÷ˇ’Ä‘ˇ    ÷ˇ‘ˇ’Ä    ÷ˇËÛˇ‡˛ÄÊÛpˇËÛXˇÊÛXˇËÛL˛ÄËÛFˇËÛC˛ÄÊÛAġ˘ˇÚÛ@¿ˇ˛Ä˙ÚÛ@¿ˇÄ˙Ú¯˝@`ÄIJ˛Ú˘˝@0ˇIJ^˛Ú˘!∏˝@IJÄÙ˛Ú˘'`˝@ ˇ  ćÚ˙w˝@ˇ ˛Ä˙/¯Ú˙b"`˛@ˇ! Ä?ˇ¸Ú˙0˛@Ä# ġˇflˇÚ¸‡DD\˛@ġ"Ä˝ˇÄÚ¸?ˇËàŸæ˛ˇ¿Ä"˛Ä˝ˇ‡Ú˝ˇˇ˚ġ‡ˇ$Ä˝˛ˇÚ˝ˇˇ˝ˇˇ¿ˇ‡ˇ"˛Äˇˇ˝Ó¸Ú˝ˇˇ˛#ˇˇ‡˝¿ˇ# Åˇ?ˇˇ¸˛Ú˝˛ˇèˇˇ¯˝¿Ä&
  1574. áˇÈˇø˛øÅ˛ˇı˛˝ˇflˇˇ˛˝¿ˇ#è˛ˇ¿¡˛ˇı˛˘ˇÄ˛¿Ä"˛ èˇˇø·øˇˇı˛˘ˇ¿˛¿ˇ%üˇˇà xÒÄpı˛ˇ˚˚ˇ˛¿ˇ&˛ èˇ‡Ä–˘øÛ¿pı˛˘„˝ˇÔˇ¸˛¿ˇ(èˇÄ˛˝ø˜‡pˆ˝˛˛ˇœÎˇˇ˛¿Ä'èˇÄ˝yøÓppˆ˝œ˛ˇÀ·¯ˇÄ¿ˇ'èˇ¿˝qøÏ0pˆÇ˝Áfl˛ˇ
  1575. ·ˇ‡¿Ä'˛ èˇ˛qøÏ?wˆˇ˛¬˝~˛ˇ˘ø¿ˇ(èˇˇ¿`¡øÓuıb˛„˛ˇÒ¸`w¸¿ˇ'˛ áÙ#y¯¡æ„vı"2ˇ¿√ˇˇÒ˛xO˛¿ˇ(ɇ˝?Åæ√√tı2?ˇ¯Çˇ˘˛    ˇÄ¿Ä(ÄOˇ‡>Ň√tıDbˇˇÄˇ˛‡ˇ¿¿ˇ)Ä ˇˇ·¯É√wˆˇ˛¬ˇˇˇ¸‡?‡¿Ä&˛ ġˇÁ¿á8ˇpˆǸˇ Δ¸‡d¿ˇ'ġˇÏéˇpˆ¸ˇ ¿ÊÿlÒ¯¿ˇ&˛ ÄÀ‡ü˛pˆ¸ˇ ¡Äp8¸¸¿ˇ(ġá¿ü˛pı˛ˇ˛¿`3IJ~¿Ä(IJÄpı˛ˇ¸¿˛cIJˇ¿ˇ$Ä@˛˛ˇ‡ı˛ˇÿ@˚ˇˇÄ¿Ä!˛Ä˚ˇˇı˛ˇ»@˚ˇˇ¿¿ˇÄ˙Ú˛ˇ¯?è¿¿ˇ˛Ä˙Ú˛ˇÄ¯¿¿ˇÄ˙Ú˛ˇÄ¯7¿¿Ä˘ˇ¯Ú˛ˇ‡¯#Ä¿ˇ˙ˇ¯Ú˛ˇ¿¯¿ÄÊ˛ˇ‹˚¯¿ˇË˝ˇ‡¸‡¿ˇò0@Äz@ÄzÌ~-¯Ê˘˛ˇ Ä0¿ˇ Ä̸ˇÅˇ‡Ä`¿Ä ÄÌ?p¯Äáć¿ˇ!•ΩŒnÓ ¸ ˇ?ɡ˛‡¿Ä ˛ßÿfôÓ¸ˇÄáˇÄ¿ˇ!ßY¶ôÓ‡ˇ¬?ˇ˛˛¿ˇ˛ùòÊiÓ˝#ˇÊ?ˇ¯¿ˇË˝ˇˇ¸ˇÄ‡¿ÄË˝_ˇˇˇ Ä¿ˇË˝⽡ ˛¿Ä˘˘ˇ˜˚?ˇˇ¸,Å˛¿ˇ#˚˙į˝ˇˇ˛|üIJ¿ˇ˘˙į˝""˛ˇ˝º¯˝¿ˇ ˚˙į˚ˇ·ˇ¸Ä˝¿Ä"˚˙į˝D_ˇ·Ä.¿˝¿ˇ!˚˙į¸àøˇ`}Ä˝¿Ä˘˙į˚ˇÄ_¸¿ˇ ˚˙į¸ˇˇ¸¿ˇ˘˙į¸#ˇ¸˛¸¿ˇ$˚    )Á<éH«į¸‡¸¸¿Ä#˚    «8éi'į˚t¯¸¿ˇ˚    )$àY$į˜‡¸¿Ä˘    )§èH«Åį˜¿¸¿ˇ˚˙į˜¿¸¿ˇ˘˙įÒ¿ˇ˚˙įÒ¿Ä˚     ÄįÒ¿ˇ˚ àWS›˛ˇˇ¯˙Ò¿Ä'˘\{z⁄IJˇ¯˙√ú?‡¸?0‡¿ˇ*˚ Hñ⁄∫ġflˇ¯˙ ò1ÜΔ001Ü¿ˇ'˘˛˛‡8˙ 1ÜΔ00aÜ¿ˇ&˚˙Ôy‡8˙ 1ÜΔ0∞`¿Ä&˚˙Ô{8˙¿`1ᇸ?∞`‡¿ˇ'˚˙Ô˜88˚ ?Δ0`¿Ä$˘˙Ôˆ8˚Ç 0Δ0paÜ¿ˇ&˚˙Ôvπ˙ˇ¬ ò0Δ0p1Ü¿ˇ#˘˙Ôw?π˙"b„ú0Δ?Ü0¿ˇ˚˙ÔÒπ˙2Ò¿Ä˚˙Ôa·π˙DRÒ¿ˇ˚˙‡paπ˙à≤Ò¿Ä˘˙‡ÿaπ˙bÒ¿ˇ˚˙·úπ˙ˇ¬Ò¿ˇ"˘˙„∏˚Dz˛`˛¸¿ˇ!˚˙Áˇ8˚˛`¯¿Ä&˚˙Áˇ8˙˛    |º÷Õ∑˛¿ˇ&˚˙‡8˙˛fòôÊÊÕŸÄ¿Ä"˘˙˛ˇ¯˙˛gò    1ôÜΔÕôÄ¿ˇ%˚˙˛ˇ¯˙˛g¯±ôæΔÕôÄ¿ˇ"˘˙˛ˇ¯˙˛gıôÊΔÕôÄ¿ˇ$˚˙į˛gòôô˛ΔÕôÄ¿Ä#˚˘ˇÄ¯˛f0flè∂Δ}ôÄ¿ˇ˚˘ˇÄ¯˙Ä˙¿ÄÊ˙Ä˙¿ˇËÒ¿ˇ ÊÒ¿ˇËÒ¿ÄËÒ¿ˇ˚ÛÄÛҿįÉÄÛÒ¿ˇ˙ó1⁄∏ÛÒ¿ˇ¯ìxΩÛÒ¿ˇ˙ì@°ÛÒ¿Ä˙ì8fiòÛÒ¿ˇËÒ¿Äò0Ä¿zÄ¿z-~m¯ ÊÒ¿ˇ˜˘ˇÄ¸Ò¿ˇı˘¿¸¸˝¸¿ˇ#˜˘¿¸˛˛ ˛¿Ä#˜˘¿¸}}pO/i¿¿ˇ#˜˘¿¸ˇ¯ÔøÄ}˜˜‡¿Ä ı˘¿¸  @ÄÅ¿ˇ#˜@˛¿¸¸˝¸¿ˇ%ı@˛¿¸ø∫∞˜Ê⁄~¸–¿ˇ(˜@˛¿¸˛ª¯Êˇo¸–¿Ä(˜    ?˛AˇÇˇ¿¿¸ ÄÄ¿ˇ#˜@˛¿¸¸˝¸¿Ä%ı    ;˛Aˇz~¿¸Îıp}nÆo≠’¿¿ˇ(˜@˛¿¸˛ˇxˇˇÎˇ˝`¿ˇ'ı=˛Aˇ≤ø˛ˇ˛˛@P@
  1576. A¿ˇ*˜ @ˇˇ˛˛˛˛ ˛¿Ä*˜ ?ˇA˜zˇ‡˛∂ul^ŒøÑkŸ◊¿ˇ*˜ @w˛x˛ˇ]¸ˇÎ∑Ñ˝v¿Ä'ı ?ÓA¸ˇw˛¸˛˛@¿ˇ%˜@w˝Ã¸˝¸¿ˇ'ı!?¸A˜‚ˇ˜˝Ü≠œ∞YÄk7<¿ˇ*˜#@w˝áÓÇÔÔ∏˘¿?º¿Ä*˜!?tAˇÇÏw˝œÓˇˇ˛¬@¿ˇ%˜ @w¿¸n˛à‚¸˝¸¿Ä'ı!?‡AǸwÿxnÄ2u›@Œø0y◊Ê¿ˇ*˜!@p<në2˝˝@Ôø0}˜Ê¿ˇ'ı!@p~n¢""b à Ç ¿ˇ%˜@pÁÓˇˇ˛¬¸˝¸¿Ä*˜!@q√üÓǪ˛‡w¿nÔÄ¿ˇ&˜˙sˇ¿ˇ˛‡ˇˇ¿ˇÄ¿Ä#ı˙sˇ¿à  "@Ä¿ˇ&˜˙p˛˛˛ ˛¿ˇ#ı˙ˇˇ˛˛˚ÿo{MÔ`¿ˇ&˜˙ˇˇ˛˛Û¸˛Äœ¿Ä&˜˙ˇˇ˛˛@@¿ˇ˜˘¿¸¸˝¸¿Äı˘ˇ¿¸¸˝¸¿ˇ˜˘ˇ¿¸¸˝¸¿ˇÊ¸˝¸¿ˇË¸˝¸¿Ä˸˝¸¿ˇË¸˝¸¿Äʸ˝¸¿ˇ ˜‡ @˘¸˝¸¿ˇÙÄ@@˘¸˝¸¿ˇˆåÆ˘éfÌÄ˙ҿĈûDe    ü_˘Ò¿ˇˆêDe    ùQ˘Ò¿ÄÙé¶Yfo˘Ò¿ˇÛ˜Ò¿ˇÒ˜Ò¿ˇÛ˜Ò¿ÄËÒ¿ˇËÒ¿Ä ÊÒ¿ˇËÒ¿ˇ ÊÒ¿ˇËÒˇ¿ÄËÒˇ¿ˇ’Ä‘ˇ    ÷ˇ‘ˇ’Äò0¿z¿zm~≠¯Á˛˜ˇÁ¸ˆÄÂÈÁKCå›∞¯ˇÁ)5J¢S·¯ˇÂ#)’J¢S™ ¯ˇÁ"Áu:£åÕ‡˜ÄÊ ıˇÊ ÙÄ
  1577. ·ıˇ    ÷ˇ‘ˇ’Ä    ÷ˇ’Ä‘ˇ    ÷ˇ‘ˇ’Ä    ÷ˇ’ÃÄ’3ˇ——————————————————
  1578. ˛;√Ÿ
  1579. ˛Ñ$Ÿ
  1580. ˛D$Ÿ
  1581. ˛D.Ÿ
  1582. ˛"+êt)Ÿ
  1583. ˛"IŸ
  1584. ˛"IŸ
  1585. ˛w?ÜŸ—————"˝ ˚ÄIJ ˛Å@˛Ä ı ˛?˛‡3˝¸@˛IJÚ"˛˛I˝¸@IJÙ(˛""kÅc¥∂ãg4…¡««(í¿ƒ±ö≤»é‚&l‡˜'˛!e≤4Å¿ë§ôö,%ë©ZBI:A)ªA.“Lœ)ì'i5ˆ(˛")+9 y%íHDë*LJÇHíB$ïàä(°B1%@˜(˛" I$L!
  1586. I!HHëRîí$ÇQ$Ç)&$íQ"DQ(†˜(˛" f,IÇAk°¶0X¢w$‹≈ó5¬—¥¬M4–/4Ÿ¶ÊrL ˜(˛"p^6FÄ‚M!$l‚Z(ì⁄&Å!$Åâ#4√DLI¿˜˝!˘ ÙÒ˝#˘@ÙÒ˝¯‡ÄÙÒò0@z@z≠~̯——!¸ @˛@@˝@˘Ä˙Ä@¸!˛8Ä0˛Ä˛Ä¸p˝`˝Ù)˛ÄPÄÄÄ ˛ 1˚˚.˛(g#åëŒ[ú∞ÿö√â9`&»Õ:À"9»òÿ 1¶”$ÿú‰Ll˝.˛(®dí$¢RÕ:`–iÕ$ôK¥çê#]&O<¶J]§h@H˙}di•.“4˝.˛(!*(¨%"†IhêHä(âÅâBJƒR(¢ÇàƒH@à¢Q$H¡Db$˝.˛(!EI0%$†ä$U Q)Ç(ä    BìíIDÑëDP@à§RHQBH¢(˝.˛("ak&B%Ê”4Ö0ôíKõ9 D⁄hº”fùŸ»ò#ë&ìXôŒÏ‰L˝.˛(rNMòbvòí#9"ëçõb&¿‰ëà” Dfë0êaD¢lë3HòH˝ ÙÙÓ ÙÙÓÊ Ó——˛ ˛ ˘Ç˘Ô˛>¿˘ 0˝˛¡˛Ô˛@@¸    2HÄ'Ô"˛B\M9/"àXú(ú`    !
  1587. Äqå∞Ò"˛F`ÊK¥çq%&—‡)§ê!<ºíS»Ò"˛"BhDQâ"X    D®H≈`Bï¨àÒ"˛$Ñîàí(ä
  1588. D`IQIÄÇ?    "Å&0êÒ"˛&≈Ñ»ª9iNM ôÑ—Ÿ00ÅdÁ0Ò"˛tܯà“&^2 0¿a8Å!l¿2Ô '!≥¿ÒÒĢ˛ÒĢ˛Ú˜ ˛————————————————˚Äÿ˛˚‡‡˛ Ä@‡˛ Y¶±"3@Mé·˛     yÂ$ $˚À'IÄFí·˛ EX D¢â"±Ñ†·˛ J` D§íD¬Ö ·˛ !&õL…'2Δö⶷˛sòb01D√db!…Ä‚˝ Ä˛˛@fl˝ Ä˛˛@fl
  1589. ˝A˝€——Ùêfl˛>˛pfi˛˛ ·˛i#ò c0“ô»Õ‚˛3$§ îÄHg    3&]&‚˛"!(XAkpB\
  1590. $‚ò0@qz@qzÌ~¯˛"BH`AåàÑ$d(‚˛$B…ÃE9ÅÜ4L⁄H‚˛xCf0¸ΔCúÑ$3à‚¯Ä€¯Ä€———¸˝˝"·˛>  ˛÷˛$ ˛D Â˛%Ål„5ÃlDI…ß#Ê˛2vŇ$5$ö4D …tåÊ˛$$Ç8&+¢$DJàä(àÊ˛"$ID*L!b(àëQHêÊ˛!,iÇ ÑN…†dLÃ∞YiÊ˛q∂IÂŒKf#òIà€ëFÊ—————
  1591. ˝à⁄˛0¸ ·˛˛
  1592.      ÄÄ‚˛2Ü    '&úåhÄ‚˛    KI    (s%“0 Ä‚˛"äV*"(¢ Ä‚˛ $åX"EDI"@·˛ !,îì2¡d]§@$·˛ s∂c :#nDiDN·ÙflÙfl————————————————ˇ<$@ˇ ˇˇˇˇ@
  1593. ˇ·ˇ‚7^
  1594. 4*\¯, Palatino&e.3+l"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@l Introduction4⁄*˙¯
  1595. (‡*16    )BThe Macintosh System Software4^*¿¯
  1596. °dONLNd\lh(elThe ]`°dONLNd\hP),Apple Event Manager allows you to send and rP°dONLNd0\Phm)—eceive Õ`°dONLNd7\mh”)Apple events, which arÏÄ°dONLNdM\”h⁄)fe °dONLNdOiluq(rlhQ`°dONLNdPiru)%igh-level events that conform to the V¿°dONLNduiuj)üApple Event Interpri@°dONLNdàijuø)Yocess Messaging PrÚ °dONLNdöiøuŸ)Uotocol̆°dONLNd†i⁄uÚ). The °dONLNd¶vlÇ(l%Apple Event Registry: Standard Suitesm¿°dONLNdÀv    Ç;)ù  describes ai†°dONLNd◊v<Ç_)3 standar °dONLNdflv`Çß)$d vocabulary of ¶¿°dONLNdÔvßǃ)GApple §@°dONLNdıv≈lj)events °dONLNd¸Élèä(ål?that you can use to communicate with other open applications. T‡°dONLNd;Éäè∫(åä ypically yo‹@°dONLNdFÉ∫è»)0u ujÄ°dONLNdIÉ…è‘)se í¿°dONLNdLÉ‘èÒ) Apple °dONLNdRêlúö(ôl events to rá °dONLNd]êöú0)."equest services and information fr˙ °dONLNdê0ú∂)ñom other applications, or to prd °dONLNdûê∑ú˜)áovide services °dONLNd≠ùl©≈(¶land information in r'@°dONLNd¡ùΔ©)Zesponse to such r °dONLNd“ù©2)Lequests°dONLNdŸù2©4) .°dONLNd€Ølªc(∏l4Communication between two applications that support 쇰dONLNdØcªÊ)˜Apple events is initiated by a °dONLNd.ºl»(≈l#client application, which sends an K`°dONLNdQº»K)òApple event to r°dONLNdaºL»Î)H%equest a service or information. For °dONLNdÜ…l’(“l%example, a client application might rÛ‡°dONLNd´…’∑)°'equest services such as printing specifiê °dONLNd”…∏’ƒ)´c fiç °dONLNd◊…≈’’)les, °dONLNd‹÷l‚ (fll&checking the spelling of a list of wor«†°dONLNd÷ ‚€)ü1ds, or performing a numerical calculation; or it °dONLNd3„lÔå(Ïlmight r$@°dONLNd:„çÔD)!(equest information, such as one customer†°dONLNdb„EÔc)∏’s addr†`°dONLNdi„cÔ”)ess or a list of names and °dONLNdÑl¸Å(˘laddr|Ä°dONLNdàŸv)9esses of all customers living in Ohio. The application prX‡°dONLNd¡v¸Ë)ıoviding the service or the °dONLNd‹˝l    o(lrE°dONLNd›˝p    Î)Xequested information is called a server application. The client and server applications °dONLNd5
  1597. lÅ(lcan r†°dONLNd:
  1598. Ç4)(eside on the same local computer or on rΔ°dONLNdb
  1599. 4Ï)≤'emote computers connected to a network.°dONLNdäl(Ñ(%lFigurR¿°dONLNdèÑ(ò)e 1-7@°dONLNdîò(Õ)  shows the r*Ä°dONLNd†Œ(ê)6-elationships among a client application, the @°dONLNdÕê(Ò)¬Apple Event ManagerÛ¿°dONLNd‡(ı)`, °dONLNd‚)l5S(2l6and a server application. The client application uses } °dONLNd)S5ª)ÁApple Event Manager rq°dONLNd-)ª5È)h outines to °dONLNd86lBt(?lcrµ@°dONLNd:6tB√)eate and send the Í¿°dONLNdL6√Bâ)O-Apple event, and the server application uses °dONLNdy6äBÓ)«Apple Event Manager °dONLNdçClOo(LlrE°dONLNdéCpOº)outines to interpr˚¿°dONLNd†CºO÷)Let the Ü¿°dONLNdßC◊O')Apple event and rɆ°dONLNd∏C'O^)P espond appr8@°dONLNd√C_OÜ)8    opriatelyÚ†°dONLNdÃCÖOÚ)&. If the client application °dONLNdËPl\|(Ylso rwÄ°dONLNdÏP|\B).equests, the server application sends back a r‘ °dONLNdPB\W)Δeply 9°dONLNdPX\ê) Apple event.
  1600. ~*è¯4*è¯"*]
  1601. ˇ·ˇ‚7^    °dONLNd,tlñ(|l
  1602. Figure 1-7°dONLNd7tÆ)BSending and responding to  °dONLNdQtP)n Apple events
  1603. °dONLNd^Ql]s(ZlAG@°dONLNd_Qt]Â)s you might imagine, ther‡Ä°dONLNdxQÂ]ı)qe arÔ °dONLNd|Qı]!)    e many pr¥`°dONLNdÖQ"]7)-edefip °dONLNdäQ8]q)ned kinds of ≥Ä°dONLNdóQq]¬)9Apple events, corrÿ†°dONLNd©Q¬]Û)Q
  1604. esponding °dONLNd≥^lj(gl#to the many services one applicatioæÄ°dONLNd÷^j)õn miÃ@°dONLNd⁄^j0)ght r¥ °dONLNdfl^0jx)equest of anotheT†°dONLNdÔ^yj|)Ir⇰dONLNd^|j~).    ‡°dONLNdÒ^jÅ) +Ä°dONLNdÚ^ÅjΔ)Apple events ar¯@°dONLNd^Δj÷)Ee grñ°dONLNd^◊jı)ouped °dONLNd klw°(tl into standar£ °dONLNdk°w⁄)5d suites or grp†°dONLNd%k€w):    oups of r∫¿°dONLNd.kwc)'elated events. UsuallyÓ@°dONLNdDkbwr)`, yoÚ‡°dONLNdHkrw})u ib`°dONLNdKk~wı) mplement all the events in °dONLNdfxlÑ((Ål+a given suite at the same time. The standar°@°dONLNdëx(Ñ0)ºd fi†°dONLNdìx0ÑÂ))Apple event suites include the following:
  1605. èj:≈4é3è4ò4@ë@ëè4œ≈ÕÕ
  1606. ˙Áˇ
  1607. ˙Áˇ¯
  1608. ˙Áˇ¯
  1609. ˙Áˇ¯
  1610. ˙Áˇ¯
  1611. ˙Áˇ¯
  1612. ˙Áˇ¯
  1613. ˙Áˇ¯
  1614. ˙Áˇ¯
  1615. ˙Áˇ¯
  1616. ˙Áˇ¯
  1617. ˙Áˇ¯
  1618. ˙Áˇ¯
  1619. ˙Áˇ¯
  1620. ˙Áˇ¯
  1621. ˙Áˇ¯
  1622. ˙Áˇ¯
  1623. ˙Áˇ¯
  1624. ˙Áˇ¯
  1625. ˙Áˇ¯
  1626. ˙Áˇ¯
  1627. ˙Áˇ¯
  1628. ˙Áˇ¯
  1629. ˙Áˇ¯
  1630. ˙Áˇ¯
  1631. ˙Áˇ¯
  1632. ˙Áˇ¯
  1633. ˙Áˇ¯
  1634. ˙Áˇ¯
  1635. ˙Áˇ¯
  1636. ˙Áˇ¯
  1637. ˙Áˇ¯
  1638. ˙Áˇ¯
  1639. ˙Áˇ¯
  1640. ˙Áˇ¯˙Óˇ˛˝ˇ¯˙˛ˇ‡˛ˆˇ˛˝ˇ¯˙˛ˇ·ˇˇˆˇ˛˛ˇ¯˙˛ˇ·ˆˇ˛˛ˇ¯˙˛ˇ·ˆˇ˛ Äˇ¯˙˛ˇ·?ˇêˆˇ˛ @ˇ¯˙˛ˇ·%êˆˇ˛!Á¯ˇ¯˙˛ˇ·?ˇêˆˇ˛¯ˇ¯˙˛ˇ·%êˆˇ˛ ¿Äˇ¯˙˛ˇ·?ˇêˆˇ˛Ç`ˇ¯˙˛ˇ·&–ˆˇ˛êˇ¯˙˛ˇ·80ˆˇ˛ˇ¯˙˛ˇ·0@ ˆˇ˛‰ˇ¯˙˛ˇ· 2ˆˇ˛!Rˇ¯˙˛ˇ·Aˆˇ˛"©ˇ¯˙˛ˇ·Ç<èˆˇ˛DQˇ¯˙˛ˇ· jOˆˇ˛ Ñ)ˇ¯˙˛ˇ‚@ï/ˆˇ˛ à4ˇ¯˙˛ˇ‚Åö/ˆˇ˛!"ˇ¯˙˛ˇ‰Çï/ˆˇ˛!Qˇ¯˙˛ˇ‰í/ˆˇ˛"hġ¯˙˛ˇ‰!Oˆˇ˛‘@ˇ¯˙˛ˇ‰"œˆˇ˛ ™ ˇ¯˙˛ˇ‰Bˆˇ˛ ïˇ¯˙˛ˇ‚Bˆˇ˛ äàˇ¯˙˛ˇ‚Dˆˇ˛ ÖDˇ¯˙˛ˇ·ˆˇ˛ Ç¶ˇ¯ò4@Äë@Äëœ4≈˙˛ˇ‡ƒˆˇ˛êAYˇ¯˙˛ˇ‡Dˆˇ˛P@πˇ¯˙˛ˇ‡$ˆˇ˛0 aˇ¯˙˛ˇ‡ˆˇ˛#ˇ¯˙˛ˇ‡
  1641. ˆˇ˛ ˇ¯˙˛ˇ‡8ˆˇ˛@ˇ¯˙˛ˇ‡¿ˆˇ˛Äˇ¯˙˛ˇ‡˛ˆˇ˛˝ˇ¯˙Óˇ˛˝ˇ¯
  1642. ˙Áˇ¯
  1643. ˙Áˇ¯
  1644. ˙Áˇ¯
  1645. ˙Áˇ¯
  1646. ˙Áˇ¯
  1647. ˙Áˇ¯
  1648. ˙Áˇ¯
  1649. ˙Áˇ¯
  1650. ˙Áˇ¯
  1651. ˙Áˇ¯
  1652. ˙Áˇ¯
  1653. ˙Áˇ¯
  1654. ˙Áˇ¯
  1655. ˙Áˇ¯
  1656. ˙Áˇ¯
  1657. ˙Áˇ¯
  1658. ˙Áˇ¯
  1659. ˙Áˇ¯
  1660. ˙Áˇ¯
  1661. ˙Áˇ¯
  1662. ˙Áˇ¯
  1663. ˙Áˇ¯
  1664. ˙Áˇ¯
  1665. ˙Áˇ¯
  1666. ˙Áˇ¯
  1667. ˙Áˇ¯
  1668. ˙Áˇ¯
  1669. ˙Áˇ¯
  1670. ˙Áˇ¯
  1671. ˙Áˇ¯
  1672. ˙Áˇ¯
  1673. ˙Áˇ¯
  1674. ˙Áˇ¯
  1675. ˙Áˇ¯
  1676. ˙Áˇ¯
  1677. ˙Áˇ¯
  1678. ˙Áˇ¯
  1679. ˙Áˇ¯
  1680. ˙Áˇ¯
  1681. ˙Áˇ¯
  1682. ˙Áˇ¯
  1683. ˙Áˇ¯
  1684. ˙Áˇ¯
  1685. ˙Áˇ¯
  1686. ˙Áˇ¯
  1687. ˙Áˇ¯
  1688. ˙Áˇ¯
  1689. ˙Áˇ¯
  1690. ˙Áˇ¯
  1691. ˙Áˇ¯
  1692. ˙Áˇ¯
  1693. ˙Áˇ¯
  1694. ˙Áˇ¯
  1695. ˙Áˇ¯
  1696. ˙Áˇ¯ò4Ä¿ëÄ¿ë4O≈
  1697. ˙Áˇ¯
  1698. ˙Áˇ¯
  1699. ˙Áˇ¯
  1700. ˙Áˇ¯
  1701. ˙Áˇ¯
  1702. ˙Áˇ¯
  1703. ˙Áˇ¯
  1704. ˙Áˇ¯
  1705. ˙Áˇ¯
  1706. ˙Áˇ¯
  1707. ˙Áˇ¯
  1708. ˙Áˇ¯
  1709. ˙Áˇ¯
  1710. ˙Áˇ¯
  1711. ˙Áˇ¯
  1712. ˙Áˇ¯
  1713. ˙Áˇ¯
  1714. ˙Áˇ¯
  1715. ˙Áˇ¯
  1716. ˙Áˇ¯
  1717. ˙Áˇ¯
  1718. ˙Áˇ¯
  1719. ˙Áˇ¯
  1720. ˙Áˇ¯
  1721. ˙Áˇ¯
  1722. ˙Áˇ¯
  1723. ˙Áˇ¯
  1724. ˙Áˇ¯
  1725. ˙Áˇ¯
  1726. ˙Áˇ¯
  1727. ˙Áˇ¯
  1728. ˙Áˇ¯
  1729. ˙Áˇ¯
  1730. ˙Áˇ¯
  1731. ˙Áˇ¯
  1732. ˙Áˇ¯
  1733. ˙Áˇ¯
  1734. ˙Áˇ¯
  1735. ˙Áˇ¯
  1736. ˙?Áˇ¯ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿ë¿ëO4è≈ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕ
  1737. é8`0@‘
  1738. DêHÄ‘
  1739. ƒÄâÄ‘
  1740. §päÄ‘
  1741.     †è¿‘    #0ë”
  1742. à|¿cÄ‘ÕÕÕÕÕ0    ¿ ˛˛ÄÄí@Cdć É˙0    Äp ˛˛Ä@ÑÄ  ≈˙40OF»@-ùlª8¥Í&Œ∂y» )IÈo∏Í∫«YG    Œ≤§Å-¶≈Ú∞˛40R… êV©5!MPKSTöêî w™Ö*µ@*ìBjäJÑ’;’A≈V†™+K%@˛40íY8'ˉ %"Iê\Èíeë$%7O&8S"DOí$àû    õÇ    ‰¿≤JS.@˛40Ãr  à&â€L√”∞ê2§Ì¶a®"J\TOU≤Δ\÷) ∏%.*â·"|fi»Ä˛ò4@ë@ëè4œ≈40úZppynI¬íÿèÃD∑$·g1ìá# pi$Ñìîõ    '3ò…«ƒyAßTï«Ä˛#"˙ ˛Bˆ˛!˙ ˝#"˙ ˛Bˆ˛!˙ ˝#˙¿˛˛‡Bˆ˛!˙¿˝ÕÕ*F@@p ¿Äp $IJ @ Ù)ä@  @    @˝ Ù+'gNALSv‰uÄ;{!—|ìcê-Ú≤©J2Ù[ [Y#.I∞k-qXı+'    ®T°T•ZJÜÄM$R≤®©°(F•Ew™U$≠©´-%TT–≠^¢†ı+'    '•¡e(íítÄIDîóI"HDŒI%4âI)%))iHò§ë    î« ı+'aÌEÎÊ‘Äìh•ùy“cPâËèJ^ømSÍBA”k¸È1k˘d@ı+'N∂„OD§àÈ “HF÷ë"B …Gä1îJHíRQrD®ë í¶C¿ı˜@ˆBÛÛ˜@ˆBÛÛ
  1743. ÎBÛÛÕÕ$Äc@!Ä!∞‰  ˝ $îÄ@Ä‚H‰$≤Ù[úêîäÁ:£ê–$W8E@Ê    ,¬E$≠•@wH
  1744. •(pI8Í@´†Ê
  1745. EºII) Ä)    á…p@NÑL8%› ÊgèmSí#)¡k@`Hƒñ-@ÊEÙäHí=–Δ éMπ∞Á8dr6ÔÄÊı˙ÄÂı˙ÄÂı˙ÄÂÕÕÕÕÕÕÕÕÕÕÕÕÕÕ
  1746. ‡pÿ
  1747.  ÿ §D÷R<¨-òŸ ;‘§jÓIPF®Ÿ íôƒ    JJ”êD¿Ÿ •-:êìö âÿŸ ÿ»·ƒîb—‡…"Ÿ
  1748. !˝Ä’
  1749. !˝Ä’
  1750. !˝Ä’ÕÕ ÄÄ– ŸÄ˛Ä@ Ÿ     ⁄,ÅÄ[¡’ëÚX⁄ &UA@§Çí*• ⁄     "„Ç;Å%¢tI ⁄ CÆ"ÈÖ¥EÍ@⁄ B—«›—I‰:D@⁄˚ ‘˚ ‘Õò4@Xë@Xëœ4Á≈ÕÕê@˛?¿Ä›Äê    @˛ÄÄ›£÷ÕéW…∞ëe≈`fi döΔî™–"≤ÑääÄfi
  1751. -$•…‰ê%xìÄfi    9ñ)≠i0Gúï›≠$>Fy6Ûë ÂÈ    ›˜ÿ˜ÿÕÕÕ ˇ  Ÿ í Ÿ T íã˚.+"Ÿ ∫Qî$TT"Ÿ •2·$≥ƒòî"Ÿ ≠TÇ6‡Ë¸®$Ÿ ˆòs$∑H®HXŸÕÕÕò4@ë@ëè4œ≈ÕÕ˙Ê30
  1752. ˙@Áfl
  1753. ˙@Á
  1754. ˙@Á
  1755. ˙@Áfl
  1756. ˙@Áfl
  1757. ˙@Á
  1758. ˙@Á
  1759. ˙@Áfl˙@˝PÛÄ˝ı@Ù@˝˙@˝SwÙ•∞˙@˝W Ûfl‡˙@˝TJÙQ ıS…Ùè‡
  1760. ˙@Áfl
  1761. ˙@Á˙@¸†Û@˙@¸ÄÛÄˆ‹¨Œnˆπ‘ÕÇ˙@˛=2≥ÊôˆÂ5>“êˆ%2±&ôˆe5“ê˙@˛‹Æ‚iˆ˘‘ÓLê˙@˛Ú!¸˙@˛Ú!¸fl
  1762. ˙@Áfl
  1763. ˙@Á
  1764. ˙@Á
  1765. ˙@Áfl˙@˛ˇˇÙ¸ˆÙ¸˙@˛Ù Ä˝˙@˛?ˇêÙ @˝˙@˛%êÙ!Á¯˛ˆ?ˇêÙ¯˛˙@˛%êÙ ¿Äˆ?ˇêÙÇ`˙@˛&–Ùê˙@˛80Ù˙@˛0@ Ù‰ˆ 2Ù!R˙@˛AÙ"©ˆÇ<ÄıDQ˙@˛ j@ı Ñ)˙@˛@ï ı à4˙@˛Åö ı!"ˆÇï ı!Q˙@˛í ı"hÄˆ!@ı‘@˙@˛"¿ı ™ ˙@˛BÙ ï˙@˛BÛ äàˆDÛ ÖD˙@˛Û Ç¶ò4@Äë@Äëœ4≈ıƒÚêAY˙@˝DÚP@π˙@˝$Ú0 a˙@˝Ú#ı
  1766. Ú ˙@˝8Ú@˛ı¿ÚIJ
  1767. ˙@Á
  1768. ˙@Á
  1769. ˙@Áfl
  1770. ˙@Áfl
  1771. ˙@Á
  1772. ˙@Á
  1773. ˙@ÁÙ ÚIJ˙@¸Ú¿˛Ù3Ú`˛˙@¸aÄÛ 0˛˙@¸ƒ¿Û˛˙@˝È¿Û˛Ù!Ú˛˙@¸1Ú˛Ù#˜p˛˛˙@˝Ò˜H˛|˛˙@˝˜K:êD˛˙@˝˜w¶êL˛ı˜L&PD˛˙@˝˜K∫`T˛ıˆ @d˛˙@˝ˆ ÄD˛˙@˝ÚD˛˙@˝˜ ˛L˛ı˜P˛D˛˙@˝˜Wr`T˛¯@˜t d˛˙@†˜å ÄD˛˙@Æt«¸˜èrpˇƒ˛˙@ÈM‡˜@˛L˛˘M˜@˛D˛˙@t‡ÚT˛¯@ıàd˛˙@@ı"D˛˙@˝˜int∏D˛˙@˝˜ı˘$êL˛ˆ@˜Üâ$êD˛˙@“Œ‡˜tyêT˛˘ÎÈ@ıd˛˙@    @ıD˛˙@ËÈ ÚD˛˙@˝Û0L˛ıÙ@0D˛˙@˝˜ÿÚg¯ËT˛ı˜Ω2¸}(d˛˙@˝˜°2Éa(D˛˙@˝˜úÓ~<ËG˛˙@˝ˆ J˝ıˆ B˝˙@˝ÚR˝ıÛ„¿˛˙@˝ Ú¡Ä˛˙@˝0Úg˝˙@˝`Ú>˝ò4Ä¿ëÄ¿ë4O≈ı¿Ú˝˙@¸ÄÚ˝fl˙@˛Ïˇ¯˙@˛ÄÌ ˙@˛ÄÌ  ˆÄÌ ˙@˛ÄÌ  ˆÄÌ ˙@˛ÄÌ ˙@˛ÄÌ ˙@˛Ä¸˘ ˆÄ¸(Ä#0˘ ˙@˛Ä¸    +π0Ñ∑s3sò¸ ˆÄ¸    :exÚ¸¢◊œß–¸ ˙@˛Ä¸    Fe@ÉD¢‘ö¸ ˙@˛Ä¸    Gπ8Ú<íìÀù–¸ ˙@˛Ä¸ ˚˚ ˆÄ¸ ˚8˚ ˙@˛ÄÌ  ˆÄÌ ˙@˛ÄÌ ˙@˛ÄÌ ˙@˛ÄÌ  ˆÄÌ ˙@˛Ïˇ¸ ˆÌˇ¸
  1774. ˙@Á
  1775. ˙@Á
  1776. ˙@Áfl
  1777. ˙@Áfl
  1778. ˙@Á
  1779. ˙@Á
  1780. ˙@Áfl
  1781. ˙@Á˙Ê30
  1782. ˙ ÁûÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿ë¿ëO4è≈ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕ
  1783. é8`0@‘
  1784. DêHÄ‘
  1785. ƒÄâÄ‘
  1786. §päÄ‘
  1787.     †è¿‘    #0ë”
  1788. à|¿cÄ‘ÕÕÕÕÕ0    ¿ ˛˛ÄÄí@Cdć É˙0    Äp ˛˛Ä@ÑÄ  ≈˙40OF»@-ùlª8¥Í&Œ∂y» )IÈo∏Í∫«YG    Œ≤§Å-¶≈Ú∞˛40R… êV©5!MPKSTöêî w™Ö*µ@*ìBjäJÑ’;’A≈V†™+K%@˛40íY8'ˉ %"Iê\Èíeë$%7O&8S"DOí$àû    õÇ    ‰¿≤JS.@˛40Ãr  à&â€L√”∞ê2§Ì¶a®"J\TOU≤Δ\÷) ∏%.*â·"|fi»Ä˛ò4@ë@ëè4œ≈40úZppynI¬íÿèÃD∑$·g1ìá# pi$Ñìîõ    '3ò…«ƒyAßTï«Ä˛#"˙ ˛Bˆ˛!˙ ˝#"˙ ˛Bˆ˛!˙ ˝#˙¿˛˛‡Bˆ˛!˙¿˝ÕÕ*F@@p ¿Äp $IJ @ Ù)ä@  @    @˝ Ù+'gNALSv‰uÄ;{!—|ìcê-Ú≤©J2Ù[ [Y#.I∞k-qXı+'    ®T°T•ZJÜÄM$R≤®©°(F•Ew™U$≠©´-%TT–≠^¢†ı+'    '•¡e(íítÄIDîóI"HDŒI%4âI)%))iHò§ë    î« ı+'aÌEÎÊ‘Äìh•ùy“cPâËèJ^ømSÍBA”k¸È1k˘d@ı+'N∂„OD§àÈ “HF÷ë"B …Gä1îJHíRQrD®ë í¶C¿ı˜@ˆBÛÛ˜@ˆBÛÛ
  1789. ÎBÛÛÕÕ$Äc@!Ä!∞‰  ˝ $îÄ@Ä‚H‰$≤Ù[úêîäÁ:£ê–$W8E@Ê    ,¬E$≠•@wH
  1790. •(pI8Í@´†Ê
  1791. EºII) Ä)    á…p@NÑL8%› ÊgèmSí#)¡k@`Hƒñ-@ÊEÙäHí=–Δ éMπ∞Á8dr6ÔÄÊı˙ÄÂı˙ÄÂı˙ÄÂÕÕÕÕÕÕÕÕÕÕÕÕÕÕ
  1792. ‡pÿ
  1793.  ÿ §D÷R<¨-òŸ ;‘§jÓIPF®Ÿ íôƒ    JJ”êD¿Ÿ •-:êìö âÿŸ ÿ»·ƒîb—‡…"Ÿ
  1794. !˝Ä’
  1795. !˝Ä’
  1796. !˝Ä’ÕÕ ÄÄ– ŸÄ˛Ä@ Ÿ     ⁄,ÅÄ[¡’ëÚX⁄ &UA@§Çí*• ⁄     "„Ç;Å%¢tI ⁄ CÆ"ÈÖ¥EÍ@⁄ B—«›—I‰:D@⁄˚ ‘˚ ‘Õò4@Xë@Xëœ4Á≈ÕÕê@˛?¿Ä›Äê    @˛ÄÄ›£÷ÕéW…∞ëe≈`fi döΔî™–"≤ÑääÄfi
  1797. -$•…‰ê%xìÄfi    9ñ)≠i0Gúï›≠$>Fy6Ûë ÂÈ    ›˜ÿ˜ÿÕÕÕ ˇ  Ÿ í Ÿ T íã˚.+"Ÿ ∫Qî$TT"Ÿ •2·$≥ƒòî"Ÿ ≠TÇ6‡Ë¸®$Ÿ ˆòs$∑H®HXŸÕÕÕˇ7Ê@ˇ ˇˇˇˇ@
  1798. ˇ·ˇ‚7^
  1799. 4H\, Palatino&e.3+ä"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@ä Introduction4⁄ä˙(‡äThe Macintosh System Software
  1800. (‡ 17
  1801. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1802. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1803.  
  1804.  
  1805.  
  1806.  
  1807.  
  1808. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  1809. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1810. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1811.  
  1812.  
  1813.  
  1814.  
  1815.  
  1816. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˜˙ˇˇ˙ˇ˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  1817. 4Å4w?òÄ
  1818. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1819. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1820.  
  1821.  
  1822.  
  1823.  
  1824.  
  1825. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˜˙ˇ˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛¸ˇˇ
  1826. ˇ˛ˇ˛¸ˇ˛¸ˇ˝˚ˇ˛˛˛ˇ˝
  1827. ˇ˛ˇ˛
  1828. ˇ˛ˇ˛˛˛ˇ˝˜˛˛ˇ˝
  1829. ˇ˛ˇ˛
  1830. ˇ˛ˇ˛˙ˇ˜˛˝ˇ˛ˇ˙˛ˇ˚¸ˇ˛˜˛˛ˇ˝
  1831. ˇ˛ˇ˛
  1832. ˇ˛ˇ˛˛ˇˇ˝˜˛¸ˇˇ
  1833. ˇ˛ˇ˛    ¸ˇˇ˜˛˛ˇ˝
  1834. ˇ˛ˇ˛
  1835. ˇ˛ˇ˛˛˛ˇ˝˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,Zapf Dingbats°dONLNd_äfè(eän
  1836. °dONLNd\ñh©) The ª¿°dONLNd\©hƒ)Requir¯@°dONLNd \ƒh‚)ed suiteÕ`°dONLNd\„hC) consists of four basic 1†°dONLNd,\Dh˘)a(Apple events that your application must °dONLNdThñt    (qñsupport if it supports any ㇰdONLNdoh    t§)s$Apple events at all. These events ar8`°dONLNdìh•t˛)úe Open Documents, °dONLNd•tñÄ∞(}ñOpen †°dONLNd™t±Äd)'Application, Print Documents, and Quit F °dONLNd—tdġ)≥#Application. The Finder uses these °dONLNdÙÄñåu(âñ2events for launching and terminating applications.°dONLNd'ïäúè(õän
  1837. °dONLNd)íñû©) The ª¿°dONLNd-í©û∑)CorçÄ°dONLNd0í∏û—)e suiteb†°dONLNd7í“û-) consists of the basic · °dONLNdNí-û˛)[1Apple events that nearly all applications use to °dONLNdûñ™Δ(ßñCcommunicate, including Get Data, Set Data, Move, Delete, and Save. œ¿°dONLNd¬ûΔ™Ã(ßΔYê@°dONLNd√ûÙ˚)
  1838. ou should °dONLNdÕ™ñ∂Ÿ(≥ñsupport all the B†°dONLNd›™Ÿ∂B)CApple events in the Cor3°dONLNdÙ™B∂)i-e suite that make sense for your application.°dONLNd"øäΔè(≈än
  1839. °dONLNd$ºñ»ù) A∫†°dONLNd%ºù»ü) :†°dONLNd&º†»‘)functional-ar˛ °dONLNd3º‘»Ú)4ea suiteCÄ°dONLNd;ºÛ»6) consists of a gr˘‡°dONLNdLº6»U)Coup of „†°dONLNdSºU»÷)Apple events that support a ry`°dONLNdpº◊»Ù)Çelated °dONLNdw»ñ‘Œ(—ñfunctional arª†°dONLNdÑ»Œ‘d)8"ea. One example of a functional ar{Ä°dONLNd¶»e‘ë)ó ea is the T˝†°dONLNd±»ê‘ˇ)+ext suite, which includes °dONLNdÀ‘ñ‡∏(›ñevents rO@°dONLNd”‘π‡˛)#elated to text prü°dONLNd‰‘˛‡%)E    ocessing.°dONLNdÓÂäÒ†(ÓäIf an •`°dONLNdÙ†Ò;)#Apple event is one of these standarч°dONLNdÂ;ÒÒ)õ+d events, the client application can constr¥@°dONLNdBÂÒÒ)∂uct the °dONLNdJÚä˛K(˚ä,event and the server application can interprkÄ°dONLNdvÚK˛u)¡ et it accorΩ@°dONLNdÅÚu˛»)*ding to the standarh†°dONLNdîÚ…˛‚)Td defiˆÄ°dONLNdöÚ‚˛) nition for °dONLNd•ˇä ¡(äthat event. TŸ °dONLNd≤ˇ¿ ‡)6o ensurr¿°dONLNdπˇ· ])!e that your application can rŒ`°dONLNd÷ˇ] ã)|
  1840. espond to ì@°dONLNd‡ˇã ).Apple events sent by other °dONLNd˚ äP(ä,applications, you should support the standarÄ°dONLNd' QY)«d M‡°dONLNd) Y≤)Apple events that ar¿°dONLNd= ≤Œ)Ye appr†°dONLNdC œ) opriate for °dONLNdOä%’("äyour application.
  1841. 3HA44HA    °dONLNda2ä=ù*Note
  1842. ˇ·ˇ‚7^
  1843. °dONLNdf?äKè*Sø¿°dONLNdg?èK√) ee the book ≤ °dONLNds?ƒKì)50Inside Macintosh: Interapplication Communication⁄°dONLNd£?ìK§)œ for °dONLNd®KäWâ(Tä8complete details about the interapplication communicatio°¿°dONLNd‡KâWï)ˇns °dONLNd„Wäcè(`äa°dONLNd‰Wècí)rE°dONLNdÂWìcπ)    chitectur˘¿°dONLNdÓWπc¿)&e.C`°dONLNd˘ZΔbÀ)u
  1844. ÄHá4ÅHá ÇäÇ
  1845. ˇ·ˇ‚7^ °dONLNd˚säÅØ(}äQuickT@°dONLNds∞Å√)&imeˇˇˇˇˇˇ‘@(}1
  1846. °dONLNdáäì¨(êäQuickTÓ`°dONLNd á¨ìΩ)"ime%‡°dONLNdáæìß)5 is a collection of managers and other system softwar§‡°dONLNdCáßì)Èe components that allow °dONLNd[î䆘(ùäyour application to contr+†°dONLNdto)nol time-based data. QuickT ¿°dONLNdéîo†È)wime allows you to integrate °dONLNd™°ä≠Î(™äOtime-based data (such as video clips, animation sequences, sound sequences, or °dONLNd˘Æä∫ò*tim~¿°dONLNd¸Æô∫°)e-ú@°dONLNd˛Æ°∫È)indexed scientifi1Ä°dONLNdÆÍ∫®)I-c data) into your application and to let user`°dONLNd<Æ©∫∏)øs m•`°dONLNd?Æ∏∫)anipulate it in the °dONLNdSªä«∂(ƒä    same easyT†°dONLNd\ª∂«¸),J, intuitive way that they manipulate other elements of the Macintosh user °dONLNd¶»ä‘ø(—ä interface. W9Ä°dONLNd≤»ø‘Ó)5
  1847. ith QuickTÄ°dONLNdº»Ó‘¡)/0ime, your application can allow users to display¬‡°dONLNdÏ»¿‘)“ , edit, copy.@°dONLNd¯»‘)0, and °dONLNd˛’ä·Â(fiäpaste time-based datÔÄ°dONLNd’·ı)[a mCÄ°dONLNd’ˆ·)uc∫‡°dONLNd’·)
  1848. h a @°dONLNd’·")s the¶†°dONLNd’"·;)y do t    `°dONLNd%’<·á)ext and graphics.°dONLNd7ÁäÛë(äA∫†°dONLNd8ÁëÛØ) movie‹`°dONLNd>ÁØÛ+) is a collection of one or mor4@°dONLNd\Á,Û>)}e str¬@°dONLNdaÁ>Û≤)eams of data, called tracks‹ °dONLNd|Á≤ÛÁ)t. Each track °dONLNdâÙäç(˝ärE°dONLNdäÙéú)epr’¿°dONLNdçÙúÃ) esents a str; °dONLNdôÙÕ)1Ieam of data of a particular type, such as video, sound, still images, or °dONLNd‚äY(
  1849. ä-animation. Depending on the way the tracks ar& °dONLNdZr)–e defia‡°dONLNdr∏)ned, one or morü¿°dONLNd$∏˙)Fe tracks can be °dONLNd4äd(ä3active at certain times while the movie is playing.°dONLNdh ä,™*QuickTfi‡°dONLNdn ™,E) $ime consists mainly of these pieces:°dONLNdì6ä=è(<än
  1850. °dONLNdï3ñ?À) the Movie T÷ °dONLNd†3 ?Á)4oolbox°dONLNdßHäOè(Nän
  1851. °dONLNd©EñQ„) the Image Compr@°dONLNd∏E‰Q))Nession Manager°dONLNd«Zäaè(`än
  1852. °dONLNd…Wñcõ) a°dONLNd Wõc¡)
  1853.  set of prŸÄ°dONLNd‘W¡c÷)&edefiï@°dONLNdŸW◊c )ned componentsˇ8˙@ˇ ˇˇˇˇ@
  1854. ˇ·ˇ‚7^
  1855. 4*\¯, Palatino&e.3+l"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@l Introduction4⁄*˙¯
  1856. (‡*18    )BThe Macintosh System Software4^*¿¯
  1857. °dONLNd\lh+(el)Many applications that incorporate QuickT°dONLNd)\+h{)øime capabilities ar6Ä°dONLNd<\{hó)Pe inter
  1858. ‡°dONLNdC\óhˆ)ested only in playing °dONLNdYiluñ(rl    movies. TîÄ°dONLNdbiñu)*o do so, they call the Movie TQ`°dONLNdÄiua)Åoolbox, which pr‰°dONLNdêiauÑ)Jovides rOÄ°dONLNdòiÖuı)$outines that allow you to °dONLNd≤vlÇ|(lstor9‡°dONLNd∂v}Çä)e, r»Ä°dONLNd∫väÇO),etrieve, and manipulate time-based data stor?¿°dONLNdÊvPÇâ)Δ ed in QuickT=¿°dONLNdÚvâÇ¿)9 ime movies. "Ä°dONLNd˛v¡ÇŸ)8Figurı@°dONLNdvÿÇÏ)e 1-8í¿°dONLNdvÌÇÔ) °dONLNd    ÉlèÆ(ålillustrates the rù†°dONLNdÉÆè^)B&elationship between the various QuickTÄÄ°dONLNd@É^èÍ)∞ime managers and components.
  1859. ±*¬¯4≤*¬¯"≤*]
  1860. ˇ·ˇ‚7^    °dONLNd]ßl≤ñ(Øl
  1861. Figure 1-8°dONLNdhßÆ≤Ú)BPlaying a QuickT-ê°dONLNdxßÚ≤)D    ime movie
  1862.     *¯4
  1863. *¯°dONLNdÇl(lNote
  1864. ˇ·ˇ‚7^
  1865. °dONLNdál ™*See the books Ô °dONLNdï™ Ú)>Inside Macintosh:Q °dONLNd¶Û ı)I — °dONLNdßı )QuickT°dONLNd≠ ")imer °dONLNd∞" 7) and _@°dONLNdµ8 Ç)Inside Macintosh: °dONLNd« l,ä()lQuickTƇ°dONLNdÕ ä,œ)ime Components ≠†°dONLNd‹ –,f)F!for complete details about QuickTæÄ°dONLNd˝ f,y)ñime.,Zapf DingbatsƒÄ°dONLNd
  1866. #~+É)u
  1867. J*Q¯4K*Q¯ LlL¯
  1868. ˇ·ˇ‚7^ °dONLNd =lKt(GlC)¿°dONLNd=uK…)    ommunications ÙÄ°dONLNd=»Kœ)STÙÄ°dONLNd=ŒKÒ)oolboxˇˇˇˇˇˇ‘@(GÒ1
  1869. °dONLNd#Pl\(YlThe ª¿°dONLNd'P\÷)Communications TÄ°dONLNd7P÷\ı)Woolbox5Ä°dONLNd=Pı\É)" is a collection of system softwar‘ °dONLNd_PÉ\Ò)ée managers that you can °dONLNdw]lií(fl    use to pr ¿°dONLNdÄ]ìiÊ)'Jovide your application with basic networking and communications services. °dONLNd jlvr(slY@Ä°dONLNdÀjrvÑ)ou’rI`°dONLNdœjÑv()$e likely to use the Communications T°°dONLNdÛj'vÿ)£)oolbox only if your application is specifi›Ä°dONLNdjÿvÔ)±cally °dONLNd#wlÉfi(ÄlNconcerned with communication between computers. Examples of such applications °dONLNdqÑlêA*.include telecommunications packages and electr"°dONLNdüÑBêè)÷onic bulletin boar®‡°dONLNd±Ñèê‡)Md applications. By °dONLNdƒëlùÏ(ölusing the Communications T¥`°dONLNdfiëÎù´),oolbox, you can insulate your application fr;@°dONLNd
  1870. ë¨ù±)¡o∞¿°dONLNd ë±ùø)m tG °dONLNdë¿ù¯)he details of °dONLNdûl™á(ßl>the actual physical connection between your computer and the r2‡°dONLNdZûà™–(ßàemote computer÷@°dONLNdhûœ™—)G.
  1871. √lò4¬k√lò&û,û,√l_ò€›ˇ¿›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡ˇ˘L˙+Zf—ö„vçÁ§o9Óˇ‡ˇ˙”µU&ù™©4ıeI«´JWÓˇ‡ˇÙI @$Hj"ÉPÄâÓˇ‡ˇ˛¥Òóµ¶îfi…8ßvK≈=∑Óˇ‡ˇÍÕjUÊmRØS´∫≠òÕWÓˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡ ‚ˇ¯<ˇˇ‡ ‚ˇÒÄ    ˇˇ‡ ‚ˇ˝ø˚ˇˇ‡ ‚ˇ˘¡Ôˇˇ‡
  1872. ·ˇÑ˛ˇ‡
  1873. ·ˇˇˇ‡
  1874. ·ˇ@˛ˇ‡ ‚ˇ˝âœˇˇ‡
  1875. ·ˇNÔˇˇ‡
  1876. ·ˇøñˇˇ‡ ‚ˇ˚´◊ˇˇ‡
  1877. ·ˇkˇˇ‡ ‚ˇ˘˚fiˇ‡ ‚ˇ¯ˇ‡ ‚ˇ¯üˇˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡›ˇ‡?›ˇ‡€€€€€€€€€€€€€€€€€€€€
  1878. q@@‚
  1879. à@@$¿‚
  1880. @@%@‚
  1881. @@&@‚
  1882. @C߇‚
  1883. @@$@‚
  1884. à@@$@‚
  1885. t@x@‚€€€€Ù˛@ ˛†8}˝BÄıIJ¿`˛ÄD˝@ÄıÑ:T¿@ a´£åpÇL…+ ¨RΔfJò˜ÙJY @ ít⧕êÇM*4í$“jâîK$˜ÑJQ‡N Çdâ§êÇM $ûêJèÑJ<˜ÑJQ@ Çdâ§%êäM $ê$êJàÑJ ˜ÑJ— @ íd⧕êD]*$í$íJâîZ$˜Ñ9P¿@ a§é£åp:,…$ååJFb*˜
  1886. ˛H˚Ê
  1887. ˛0˚Ê€€    H!Å8}ÓâH!DÓâLa,ds3 ≠åbêÇL…+ ILa2îîÜ4í≥ìPÇM*4í)J°"dóÖSê£b`ÇM $û)J°"îTê£`äM $êI!"îîÑîí£í`D]*$í    I%"dsìL¢åb`:,…$å˝‡˝‡€€(@ÄcÃÄÉ 0ÄÄĈ(@¸íÄIÄÄĈ(ñjΔç`e„ ¿Çèî"HÅÿòφˆ(ôM$ìêî$ÄcíÄÇì HÅ0§ò–ˆ(ñH‰ìdGÄRÄTìHÅ0ºòêˆ(ëI$ìÑRÄTìHÅ0†òêˆ(πI$ìïÄíRÄ(ìHÅ0§òêˆ(V(“çe„ aåH(éí" 0Å…ò‰êˆÙ˙˛ÄıÙ˙˛Äı€€€€€€€€€€€€€€  @ÄÁ  @@Á Q«F¨9,j≥ËQ$…    “%(úÃÄÈ â$œ    í%(¯åË ˘$»    í%(àåË$…Ií%hòåÄÈ«FÜí8§hDãÈ˝ @Á˝ ÄÁ€€¿@PÄÍ@PÄÍ)aè2¬RLÈò Î¿)íR“K"RR≤Q,ÎE^åJ"RL°—(Î}PÇJ"RB¢Q(ÎÉRíJ"R“¢Q(Îá»ÉÃå2*QLa®»Î˜Ê˜Ê€€    (@    (@    ò    (ñjΔ5à    (ôM$Nà    (ñH‰Là    (ëI$Là    (πI$L    à    (V(“4#€€ò&û,û,√l_ò€L›Ã¿‹ @›@‹ @›@@›@@›@‹ @›@‹ @›@@›@ @˜ÄÈ@    ˆ¿È  @˜`È@    ˆ 0È  @˜È@ @˜0 È@ @˜`È@    ˆ¿È @¯ÄÄÍ@ ˜¿Í @¯`Í@@3˚ 0Í@@3$L˝Í@˛)R–˝0 Í @)R‹˝`Í@˛%QP˝¿Í @%!L˛Ä·ÄÎ@@˘0¿Î@@˘@`Î@¯ ¿ 0Π@@˛ÄÎ@˛ :d„0èˇ Π@&î‘âvòÎ@@&qSÇ ΔÎ@@&ëTâ|ˇ¯xÎ@˛ :jcpġ¯>Π@ ˝ÄÄ<Î@˛ ˚¿¿|Π@¯`p|Î@@¯0|Î@@*Jëú˛¿xÎ@˛5H™`˛ x¯Î @%Hãÿ˛n¯Î@˛%Xä˛√¯Î @"*â¯˛ÄįÎ@@˜¿Î@@˜`0Î@    ˆ0 È  @˜È@    ˆ 0È  @˜`È@ @˜¿È@ @˜ÄÈ@‹ @›@    ˆ‡È  @˜ È@ @˜ È@ @˜†È@    ˆ È  @˜ È@    ˆ È  @˜ È@ @˜ È@ @˜†È@    ˆ È  @˜ È@    ˆ È @˜ Ï@@˜ Ï8@@˜†Ïh @ ˆ Ï… @˜ ˘˚ˇ˝âÉ@ˆ ˘@˚˝¡ @˜ ˘@˚˝a@@˜ ˘@˚˝1@@˜†˘@˚˝0
  1888. @ˆ ˘@ Ä˝` Ä @˜ ˘@Ä¿    êÄ@ˆ ˘@ ôdÄÄòÄ @˜ ˙¿@ôDĈàÄ@@˜ ˙‡@õDÄAàÄ@@˜†¸ˇ∞@ eCÄâÄAà¿@ˆ ¸8@˚    ÄAà@ @˜ ¸‡ @˚    Aà¿@ˆ ˝¢",@˚    &AàÄ @˜ ˝@˝    ¸àÄ@@˜ ˝0@˝    ÄòÄ@@˜†˝üˇ‡@¨™e¿    êÄ@ˆ ˝ 0¿@´â–˝` Ä @˜ ˝  Ä@Läe˝0@ˆ ˝  @KIú–˝1 @˜ ˝ @˛$˝a@@˜ ˝ @˛˝¡@@˜†˝†@˚˝âÉ@ˆ ˝ @˚¸… @˜ ˝ ˚ˇ¯¸h @ˆ ˝ ?˚ˇ¯¸8 @˜ ˝ Ú@@˜ ˝ Ô@@˜†˝†Ô@ˆ ˝ Ô @˜<˝ Ô@ˆ,˝ Ô @˜ ˝ Ô@@˜0˝ Ô@@˜‡˝†Ô@ˆ¿˝ Ô @˚¯1˜˘@˙¯"&ˆ" ˙  @Ò Ô@@˚˚ˇ¸DD$˜D@˙@@˙†˚ àå®àà˙ˇ¯Ä˙@˘ ˚  @˚˘ @˚ ˚1@˚˘@˙ ˚"&˛"@˝ ˙ @˙ ˚  @˝˘@@˚`˚ DL4Eƒ@ƒr@˙@@˙†˚ à∏ò⻿
  1889. ïÄ˙@˘ ˚ ?‡ˇ`@ó˘ @˚    $Ä ˛1@
  1890. î˘@˙&0˝":@˛ê ˙ @˙&6    Åñ4L ˛@˛`˘@ @˚    eYRA"QJå`˛@¿˛@˙@@˙•YS¡"QI ®˛à∏¡ ¸Ä˙@˘$ô""QJå?˛ˇ`BY…å“P˘ @˚ ˚˝—B    e.Qh˘@˙ ˚˛"
  1891. #¢B    e+Ã’H ˙ @˙ ˚ ¸A)e*H˘@@˚`˚ ¸D@˝@˙@@˙†˚ ¸à¿˝Ä˙@˘ ˚ ¸@¸˘ @˚ ˚¸@˝˘@˙ ˚¸"@Qî ˙ @˙ ˚ ¸@§j•X˘@@˚`˚ ¸D@£I•–@˙@@˙ø˚ˇ¸¸à¿DJ•Ä˙@˘˚ˇ¸¸@˛$˘ @˚Ù@˛˘@˙Ù"˚ˇ˙ ˙ @Ì?˚ˇ¯˘@@˚ÏD@˙@ @˙ÏàÄ˙@‹  @˚Ï˘@ Ì˘" ˙ 
  1892. @¯‡Á@@˘∞¯˛DGÙ˛D@˙@@˘ò¯˛àåò˛àÄ˙@¯ Ùˆ @˘ ¯˛˝˘@¯.¯˛">2˛" ˙ @˘Ùˆ@@˘¯˛DL˛D@˙@@˘à¯˛àé∏˛àÄ˙@¯Ù`ˆ @˘¯˝—˛˘@˛Ä˝(¯˝"¢˛" ˙ @ƒ¸Á@@ƒ—0˛¯˘D@˙@@© H˛à¯ü˚ˇ¸Ä˙@˛© x˛˜˚˘ @ê≈8˛¯˚˘@¯¯¯0˚ ˙ @Ì—é¿˘@@Ó    P®S @˙@@?Ûˇ ˛ê©”‡Ä˙@">yÁûyÁûyÁûyÁûyÁû˛®S˘ "@~yÁûyÁûyÁûyÁûyÁû˛˘@#RI$íI$íI$íI$íI$ê0˛  ˙ @RI$íI$íI$íI$íI$ê˛˚˘@!@^yÁûyÁûyÁûyÁûyÁúP ¸@˙@@@Ûê ¸Ä˙@¿Û˛ÊfyÀéÌF˘ @ÄÛ (ôE,Qá˘@ÄÛ 1.âE)Ô ˙ @ÄÛ˛(ôE(3˘@@ɇı P˛@˙@@¿ï\ˆê˛Ä˙@@ö¶†ˆ˛˚˘ @`룈Ä˚˘@0í¶Ñı¿0¸  ˙ @ëZxı
  1893. `6Œe2∞˘@@Ú  PÕ)À @˙@@Ú `êM)˙ Ä˙@ Ú
  1894. @Õ)¬ ˘ @Úˇ¿˛˘@#    L˙+Zf—ö„vçÁ§o9Ä0˛ ˙ @”µU&ù™©4ıeI«´JWÄ˚˘@ @I @$Hj"ÉPÄâ_˚ˇ˛@˙@ @>¥Òóµ¶îfi…8ßvK≈=∑è˚ˇ˛Ä˙@*ÕjUÊmRØS´∫≠òÕWÓ @Úˇ˘˘@"“•*R•*R•*R•*R•*S˘" ˇˇÄ !@“•*R•*R•*R•*R•*S˚˚?ˇˇ¿@@ڡĽD˛D@˛ˇ¸@'@r•*R•*R•*R•*R•*RIJàåò˛àIJˇ¸@?ڡĸ¸˛ &@2•*R•*R•*R•*R•*R¿˛˝˛@?Úˇ¿˛":>˛" ˛ @Ú@¸ ¸˛@@Ú@¸0¸?ˇˇ¬@@Ú`¸‡¸/ˇˇ¬@#yÁûyÁûyÁûyÁûyÁû`¸¿¸(<¬ "@I$íI$íI$íI$íI$í@˚ĸ1Ä    ¬@I$íI$íI$íI$íI$íPı-ø˚¬ @I$íI$íI$íI$íI$í@ˆ)¡Ô¬@$@yÁûyÁûyÁûyÁûyÁûp˚ˇ    ˛ /Ñˇ¬@@Úˇ˚    /¬@Ï˚    ˚/@ˇ¬ @Ì˚    Ç=✬@˜¿˜˚    "¬/NÔ¬ @˘‡˜˚    ¬/øñ¬@@˘0˜˚    Ç+´◊¬@@˘ò˜˚    ˚/k¬@¯ ˜˚    )˚fiB @˘˜† 8B@¯0˜Õ1T®(ü¬ @˘˜”Qj®?ˇˇ¬@@˘˜
  1895. T—ëF®˛@@˘ê˜
  1896. •”RJP˛@¯˜
  1897. RÕ<EP˛ˇ˛ @¸ ı˚    ˇˇˆ@˚`Ù˚˛ˇ˛ @¸≤ä@@˜˚˛ˇ˛@@¸æ⿇˜˚˛ˇ˛@@¸0äA∞˜˚˛ˇ˛@˚.i£˜˚˛ˇ˛ @˘ ˜˚˛ˇ˛@¯ ˜˚˛ˇ¸ @˘˜˚˛@@˘0į˙ˇ˛@@˙˛ˇ¿˘˙ˇ˛@˘@˛@Ô˛ @˙@˛@Ô˛ˇ¸@˘@˛@Ô˛ˇ¸ @˙@˛@È@@˙@˛@È@@˙@˛@È@ ˘@˛@È @˙@˛@È@ ˘˛ˇ¿È  @˘`¿Ë@ @˘0ÄË@ @˘Á@    ¯ Á  @˘ Á@    ¯Á  @˘∞Á@
  1898. @¯‡Á@@›@‹ 
  1899. @¯`Á@˜Á  @˘òÁ@ @˘ Á@ @˘éÁ@    ¯Á  @˘Á@    ¯(Á  @˘Á@ @˘Á@ @˘¯Á@‹ @¸ˇˇË@˚ô±√πË @¸•I^éË@@¸ù9u◊êË@@¸%IÏÃË@˚µ‚‚pË @˙uUPË@ ˘˚spË @˙åË∞Ë@@˙◊ıpË@@˙Õ¸–Ë@ ˘£Ú0Ë @˙’ıpË@ ˘Û3pË @˙àêË@@˙ƒDpË@@˙àêË@ ˘""Ë @˙Ë@ ˘""Ë @˙àà∞Ë@@›@@›@‹ @›@‹ @›@@›@@›@‹ @›@‹3  ›Ã¿€€€€€€€€€€€€€€€€€€€€
  1900. q@@‚
  1901. à@@$¿‚
  1902. @@%@‚
  1903. @@&@‚
  1904. @C߇‚
  1905. @@$@‚
  1906. à@@$@‚
  1907. t@x@‚€€€€Ù˛@ ˛†8}˝BÄıIJ¿`˛ÄD˝@ÄıÑ:T¿@ a´£åpÇL…+ ¨RΔfJò˜ÙJY @ ít⧕êÇM*4í$“jâîK$˜ÑJQ‡N Çdâ§êÇM $ûêJèÑJ<˜ÑJQ@ Çdâ§%êäM $ê$êJàÑJ ˜ÑJ— @ íd⧕êD]*$í$íJâîZ$˜Ñ9P¿@ a§é£åp:,…$ååJFb*˜
  1908. ˛H˚Ê
  1909. ˛0˚Ê€€    H!Å8}ÓâH!DÓâLa,ds3 ≠åbêÇL…+ ILa2îîÜ4í≥ìPÇM*4í)J°"dóÖSê£b`ÇM $û)J°"îTê£`äM $êI!"îîÑîí£í`D]*$í    I%"dsìL¢åb`:,…$å˝‡˝‡€€(@ÄcÃÄÉ 0ÄÄĈ(@¸íÄIÄÄĈ(ñjΔç`e„ ¿Çèî"HÅÿòφˆ(ôM$ìêî$ÄcíÄÇì HÅ0§ò–ˆ(ñH‰ìdGÄRÄTìHÅ0ºòêˆ(ëI$ìÑRÄTìHÅ0†òêˆ(πI$ìïÄíRÄ(ìHÅ0§òêˆ(V(“çe„ aåH(éí" 0Å…ò‰êˆÙ˙˛ÄıÙ˙˛Äı€€€€€€€€€€€€€€  @ÄÁ  @@Á Q«F¨9,j≥ËQ$…    “%(úÃÄÈ â$œ    í%(¯åË ˘$»    í%(àåË$…Ií%hòåÄÈ«FÜí8§hDãÈ˝ @Á˝ ÄÁ€€¿@PÄÍ@PÄÍ)aè2¬RLÈò Î¿)íR“K"RR≤Q,ÎE^åJ"RL°—(Î}PÇJ"RB¢Q(ÎÉRíJ"R“¢Q(Îá»ÉÃå2*QLa®»Î˜Ê˜Ê€€    (@    (@    ò    (ñjΔ5à    (ôM$Nà    (ñH‰Là    (ëI$Là    (πI$L    à    (V(“4#€€ˇ;<@ˇ ˇˇˇˇ@
  1910. ˇ·ˇ‚7^
  1911. 4H\, Palatino&e.3+ä"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@ä Introduction4⁄ä˙(‡äThe Macintosh System Software
  1912. (‡ 19
  1913. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1914. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  1921. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1922. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˜˙ˇˇ˙ˇ˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  1929. 4Å4w?òÄ
  1930. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  1931. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  1932.  
  1933.  
  1934.  
  1935.  
  1936.  
  1937. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˜˙ˇ˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛¸ˇˇ
  1938. ˇ˛ˇ˛¸ˇ˛¸ˇ˝˚ˇ˛˛˛ˇ˝
  1939. ˇ˛ˇ˛
  1940. ˇ˛ˇ˛˛˛ˇ˝˜˛˛ˇ˝
  1941. ˇ˛ˇ˛
  1942. ˇ˛ˇ˛˙ˇ˜˛˝ˇ˛ˇ˙˛ˇ˚¸ˇ˛˜˛˛ˇ˝
  1943. ˇ˛ˇ˛
  1944. ˇ˛ˇ˛˛ˇˇ˝˜˛¸ˇˇ
  1945. ˇ˛ˇ˛    ¸ˇˇ˜˛˛ˇ˝
  1946. ˇ˛ˇ˛
  1947. ˇ˛ˇ˛˛˛ˇ˝˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\ähÒ(eäThe Communications TÖ¿°dONLNd\ÒhÑ)g!oolbox consists of four managers:,Zapf Dingbats°dONLNd6räyè(xän
  1948. °dONLNd8oñ{) The Connection ManagerΠ°dONLNdNo{r)o, which you can use to cr¿°dONLNdgos{Û)neate and maintain a network °dONLNdÉ{ñáΔ(Ññ
  1949. connection¥°dONLNdç{Δá»)0.°dONLNdèêäóè(ñän
  1950. °dONLNdëçñôØ) The TÒÄ°dONLNdñçÆô˙)erminal ManagerxÄ°dONLNd•ç˙ô
  1951. )L>, which you can use to emulate a particular terminal during a °dONLNd„ôñ•Ì(¢ñnetwork connection_†°dONLNdıôÓ•)X.°dONLNd˜Æäµè(¥än
  1952. °dONLNd˘´ñ∑¬)
  1953. The File T†°dONLNd´¡∑
  1954. )+ransfer Manager¿°dONLNd´
  1955. ∑ô)I!, which you can use to transfer fiÀ`°dONLNd4´ô∑)èles between your computer °dONLNdN∑ñ√Ω(¿ñ    and the rÄ°dONLNdW∑æ√N)(emote computer to which you arK@°dONLNdu∑N√Ç)ê e connected°dONLNdÄ∑Ç√Ñ)4.°dONLNdÇÃä”è(“än
  1956. °dONLNdÑ…ñ’) The Communications ResourF@°dONLNdù…’J)Å
  1957. ce Manager‘¿°dONLNdß…I’±)2, which you can use to r °dONLNdø…≤’)iegister and keep track °dONLNd÷’ñ·Ò(fiñof communications r{‡°dONLNdÈ’Ò·    )[esourƒ °dONLNdÓ’    ·)ces;°dONLNdÒ’·).
  1958. ÓH¸4ÔH¸    °dONLNdÛÌä¯ù(ıäNote
  1959. ˇ·ˇ‚7^
  1960. °dONLNd¯˙ä~*3For complete information about the Communications TÄ°dONLNd+˙~¡)Ùoolbox, see the °dONLNd;ä¢(äbook ¿°dONLNd@£G)%Inside the Macintosh Communications T´@°dONLNdeF_)£oolboxd@°dONLNdk`b).‰@°dONLNdu    gl)u
  1961. 6H=47H= 8ä8
  1962. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdw'ä6+(2äSystem Software Routinesˇˇˇˇˇˇ€r(21
  1963. °dONLNdê=äI´(FäBy now]¿°dONLNdñ=´I∂)!9, you might be wondering how these various system softwar„`°dONLNdœ=∂I¡(F∂e rÚ°dONLNd“=¡IÏ)
  1964. outines ar∂`°dONLNd‹=ÌI),e made °dONLNd„JäVT(Sä0available to your application. In traditional pr߇°dONLNdJTV°) ogramming envir˛†°dONLNd"J°V)Monments, you gain access °dONLNd;Wäc–(`äto such special rL`°dONLNdLW—c>)Goutines by linking a subrÌ`°dONLNdeW>c˜)m)outine library—which contains the actual °dONLNdédäp˚(mäexecutable code of those r†°dONLNd®d¸pÍ)r6outines—to your application. The code of the special r¡Ä°dONLNdfidÍp)Ó
  1965. outine is °dONLNdËqä}¬(zäHcontained in your application, just like the code of any application-defi›†°dONLNd1q¬}Ÿ(z¬ned rŸ`°dONLNd6qŸ}˜)outine.°dONLNd>Éäè+(åä!One main drawback of such an apprZ¿°dONLNd_É+èí)°oach is that it tends to rk °dONLNdyÉíè◊)gesult in very lar|`°dONLNdäÉ◊è„)Ege °dONLNdçêäúƒ(ôäapplications. Ä°dONLNdõê≈úˆ);BAs you might imagine, the code comprising the thousands of system °dONLNd›ùä©´(¶äsoftwar‰¿°dONLNd‰ù´©∂)!e rÛ`°dONLNdÁù∂©) Poutines takes up quite a bit of space. It would be impractical to link all that °dONLNd7™ä∂Â(≥äQcode, or whatever subset of it an application actually used, to each application.°dONLNdâºä»p*2Another important drawback of the traditional appr `°dONLNdªºp»ä)Êoach iȇ°dONLNd¡ºä»≠)    s the dif.†°dONLNd ºÆ»¥)$fi;`°dONLNdú¥»€)
  1966. culty of r˚°dONLNd÷º€»˝)'evising °dONLNdfi…ä’é(“äsΩ°dONLNdfl…é’Ã)ystem softwarM‡°dONLNdÏ…Õ’ÿ)?e r\Ä°dONLNdÔ…ÿ’) outines to prZ‡°dONLNd¸…’í)8ovide new capabilities or to fi«†°dONLNd…í’™)Çx bugé °dONLNd …´’±)s.K °dONLNd"…≤’¥) ùÄ°dONLNd#…¥’∫)Y^°dONLNd$…∫’
  1967. )ou would need to °dONLNd5÷ä‚Ÿ(fläobtain a new subr|°dONLNdF÷Ÿ‚E)Ooutine library and then rÏ°dONLNd_÷E‚ß)lebuild your applicatio¿°dONLNdu÷®‚¥)cn s£ °dONLNdx÷¥‚ ) o that the new code °dONLNdå„äÔ—(Ïäis included in it.°dONLNdüıä6*%The original Macintosh system softwarp‡°dONLNdƒı6H)¨e cirÿ °dONLNd…ıHü)cumvented these pr7†°dONLNd€ı†)Xoblems by adopting a °dONLNdä‘( äfairly novel appré¿°dONLNd‘")Joach. The softwarÊ`°dONLNd"-)Ne rı°dONLNd-‘) $outines that make up the Macintosh Ty °dONLNd9‘)ß oolbox and °dONLNdDä!(ä the Macintosh Operating System rô@°dONLNdd!g)óeside mainly in ¨†°dONLNdtg‡)Fread-only memory (ROM),
  1968. †°dONLNdã·Ì)z prQ¿°dONLNdéÌ) ovided °dONLNdïä(Ç(%ä6by special chips contained in every Macintosh computerA°dONLNdÀÇ()¯ . When your application calls a .°dONLNdÎ)ä5ê(2äTï°dONLNdÏ)è5≤)oolbox rg`°dONLNdÙ)≤5Â)# outine like ,
  1969. Courierg`°dONLNd)Â5)3    NewWindow|`°dONLNd    )5*)5, th|`°dONLNd)*5?)e Op|`°dONLNd)?5[)eratin|`°dONLNd)[5n)g Sy|`°dONLNd)n5õ)
  1970. stem interN¿°dONLNd%)õ5)-cepts the call and executes .°dONLNdA6äBØ(?äthe appr¶†°dONLNdI6ØB;)%opriate code contained in ROM.°dONLNdhHäTfi(QäThis mechanism pr†°dONLNdyHflT;)Uovides a simple way ¬¿°dONLNdçH;T¨)\for the Operating System mÄ°dONLNd¶H≠T)rto substitute the code °dONLNdΩUäa‡(^äthat is executed in r’@°dONLNd“U‡aâ)V&esponse to a particular system softwar# °dONLNd¯Uäaï)™e r1¿°dONLNd˚Uïa) outine. Instead of executing °dONLNd    bän(käthe ROM-based code for some rv†°dONLNd    5bn@)å
  1971. outine, thÿ°dONLNd    ?b@nU)*e OpÙ`°dONLNd    CbUnn)eratin¨¿°dONLNd    IbonÅ)g Syä¿°dONLNd    MbÇn)stem might choose to load some °dONLNd    loä{ÿ(xäsubstitute code in燰dONLNd    ~oÿ{‡)NtoE¿°dONLNd    Äo·{)     the computer¢ °dONLNd    ço{()>’s &`°dONLNd    êo){∏)
  1972. random-access memory (RAM);π`°dONLNd    ´o∏{)è then, when your °dONLNd    º|äàË(Öäapplication calls the r◊@°dONLNd    ”|ËàF)^outine in question, thˇ†°dONLNd    È|Fà[)^e Op'@°dONLNd    Ì|\àu)eratinfl†°dONLNd    Û|uàá)g SyΩ†°dONLNd    ˜|ààü)stem Z†°dONLNd    ¸|†à¥)interÂ`°dONLNd
  1973. |¥à)cepts the call and °dONLNd
  1974. âäï(íäexecutes that RAM-based code.ˇ,@ˇ ˇˇˇˇ@
  1975. ˇ·ˇ‚7^
  1976. 4*\¯, Palatino&e.3+l"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@l Introduction4⁄*˙¯
  1977. (‡*20    )BThe Macintosh System Software4^*¿¯
  1978. °dONLNd\lhå(el?RAM-based code that substitutes for ROM-based code is called a Ä°dONLNd?\çh®(eçpatch.õ °dONLNdE\®h◊)  Patches arÙ`°dONLNdP\◊hfi)/e °dONLNdRilu†(rl usually store°dONLNd^i†u»)4
  1979. ed in the aÄ°dONLNdhi…uÚ))System fiO‡°dONLNdqiÛu˝)*le,#¿°dONLNdti˛uU)  located in the Syste»†°dONLNdâiUuk)Wm Fo!@°dONLNdçilu})lder$@°dONLNdëi}uΩ). The System fiÿ†°dONLNd†iΩu€)@le also °dONLNd®vlÇ2(l/contains collections of static data, known as rQÄ°dONLNd◊v3ÇK)«esourô¿°dONLNd‹vKÇÓ)'ces, that applications can use to help °dONLNdÉlèu(ålprG °dONLNdÉvè¡)
  1980. esent the standar:°dONLNdÉ¡è8)Kd Macintosh user interface.°dONLNd2ïl°ß(ûl The System fi4`°dONLNd?ï®°>)<"le can also contain system softwarD°dONLNdaï>°ö)ñe components that ar≈‡°dONLNduïö°≈)\ e not in a °dONLNdÄ¢lÆñ(´lcomputerˇ°dONLNdà¢óÆ√)+    ’s ROM. T∏ °dONLNdë¢√ÆÈ),Bo make one of these components available to your application, the °dONLNd”Ølª‚(∏lUOperating System simply loads it into RAM. This is like a patch, except that the new °dONLNd(ºl»o*rE°dONLNd)ºp»õ)
  1981. outines ar    `°dONLNd3ºú»≥),en’t rÛ°dONLNd9º≤»0)eplacing any existing ROM r'¿°dONLNdTº1»Q)outinesß °dONLNd[ºQ»â) . Originally t… °dONLNdiºâ»¬)8hese sorts of °dONLNdw…l’Ê(“lRAM-based system softwar∂@°dONLNdè…Ê’6)ze components werdž°dONLNdü…7’Z)Q    e called r†°dONLNd®…[’á)$    packages;ô¿°dONLNd±…á’∞),     they wer·°dONLNd∫…∞’ª))e r˙Ä°dONLNdΩ…ª’·)     ead into °dONLNdΔ÷l‚g(fll6RAM only when some application called any one of the rˆ`°dONLNd¸÷g‚fl)˚outines contained in them. °dONLNd„lÔï(ÏlHowever †°dONLNd„ïÔß))>, because some of these packages have been included in later rÄ°dONLNd\„ßÔÈ(Ïßevisions of the °dONLNdll¸π(˘lGROM, the distinction between managers and packages has faded with time.°dONLNd¥lë*The currÍ¿°dONLNdºëä)%8ent method for adding capabilities to the system softwar¿°dONLNdÙã€)˙e is to include the °dONLNdlÈ(lexecutable code of the new rÿ °dONLNd$È)}outines as a Ä°dONLNd1 p)7system extension.ö@°dONLNdBp≠)P Extensions ar*@°dONLNdPÆΔ)>e stor-¿°dONLNdVΔÊ)ed in a °dONLNd^l(÷(%lspecial location (namely( °dONLNdv÷(¬)j7, in the Extensions folder in the System Folder) and ar‚°dONLNd≠¬(Í)Ï    e loaded °dONLNd∂)l5/(2l*into memory at system startup time. QuickT͇°dONLNd‡)/5ö)√ime, for example, is curr˚†°dONLNd˘)ö5Ú)kently distributed as °dONLNd6lB¶(?lan extension.°dONLNdHlT5*,When your application calls a system softwarmÄ°dONLNdHH5T@)…e r| °dONLNdKH@Td)     outine, i¶‡°dONLNdTHdT•)$t doesn’t matte~Ä°dONLNdcH¶T©)Br≥¿°dONLNddH©Tfl), in general, °dONLNdrUlat(^lw◊°dONLNdsUta)%hether the code that is executed in rø¿°dONLNdòUa/)ùesponsL`°dONLNdûU0a;)e r[°dONLNd°U;aÛ) (esides in ROM, is a patch in RAM loaded °dONLNd…blns(klfrò‡°dONLNdÀbsnº)om the System fi8`°dONLNd€bΩn©)J7le, or is part of a RAM-based extension. It is, howeverÔÄ°dONLNdb®nÔ)Î, important that °dONLNd#ol{ë(xlthe appr¶†°dONLNd+oë{è)%=opriate code exist in at least one of these locations, becaus °dONLNdhoê{Î)ˇe your application wn°dONLNd|oÎ{ˆ)[ill °dONLNdÄ|làÔ(Öl crash if you attempt to call a rfi°dONLNd†|ÔàH)Éoutine that isn’t defiÈ°dONLNd∂|HàÇ)Y ned anywher7@°dONLNd¡|ÉàÒ);e. So, especially for code °dONLNd‹âlïA(íl0contained in extensions, you’ll need to make sur] °dONLNd âAïó)’e that the code is pr뇰dONLNd!âóïfi)Vesent in the currº°dONLNd2âfiïÓ)Gent .°dONLNd6ñl¢≤(üloperating envirR`°dONLNdEñ≤¢Î)F onment befor$¿°dONLNdQñ΢<)9e trying to call it. ˜ °dONLNdfñ;¢B)PY  °dONLNdgñB¢Å)ou can use the ,
  1982. Courier  °dONLNdvñÅ¢´)?Gestalt  °dONLNd}ñ´¢fi)* function to .°dONLNdä£lØ[(¨l5determine whether a particular part of system softwarΩ†°dONLNdø£[ؘ)Ô'e is available. For details on calling .°dONLNdÊ∞lºñ(πlGestalt°dONLNdÌ∞ñºF)*', see the chapter “Gestalt Manager” in °dONLNd∞FºÌ)∞#Inside Macintosh: Operating System .°dONLNd7Ωl…ç(Δl    Utilities”@°dONLNd@Ωç…è)!.°dONLNdBœl€Ä(ÿlTher¿°dONLNdFœÅ€)%e is one further twist in this pictur˚ °dONLNdkœ€Ø)ï"e that is worth mentioning. Some r‘Ä°dONLNdçœØ€Ó)ôoutines that aro°dONLNdúœÔ€ˆ)@e °dONLNdû‹lËá(ÂldeclarÉ°dONLNd§‹áËC)(ed in your development system’s header fiÙ@°dONLNdÕ‹CËZ)ºles ar(@°dONLNd”‹[Ël)e pr9°dONLNd◊‹lËË)ovided by the development °dONLNdÒÈlı(Úl(system itself, not by the system softwar"°dONLNd    ÈıC)Æ
  1983. e. These rÛ°dONLNd    #ÈCıï))outines, known as ≠¿°dONLNd    5Èñı“)Sglue routinesÓ¿°dONLNd    BÈ“ıˆ)<
  1984.  (or just °dONLNd    Lˆl(ˇlglue~¿°dONLNd    PˆÄë)), aró†°dONLNd    Uˆë≥)e constrˆ`°dONLNd    ]ˆ≥≈)"uctey¿°dONLNd    aˆΔ)d by modifying a•¿°dONLNd    qˆz)Lvailable system softwar§@°dONLNd    àˆzÖ)he r≤‡°dONLNd    ãˆÖ°) outineı@°dONLNd    ëˆ°™)s iö†°dONLNd    îˆ´‡)
  1985.  
  1986. n some wayÜÄ°dONLNd    ûˆfl‰)4. .°dONLNd    †l( l%Consider the Memory Manager function °dONLNd    ≈U)≥    NewHandle°dONLNd    ŒUΔ)6, which allocates a new rR`°dONLNd    ÁΔ¯)q elocatable °dONLNd    Úlµ(lblock of memoryd@°dONLNd
  1987. ¥π)H. ‡°dONLNd
  1988. π¡)Ay@°dONLNd
  1989. ¿·)     call to y@°dONLNd
  1990. ·)!    NewHandley@°dONLNd
  1991. ´)6" compiles into an executable instre@°dONLNd
  1992. 8´Ÿ)î
  1993. uction wor7†°dONLNd
  1994. BŸ‰).d. .°dONLNd
  1995. El)∞(&lWhen that instrZ@°dONLNd
  1996. T±)Ÿ)EDuction is executed, the ROM code (or its RAM patch, if one exists) r|@°dONLNd
  1997. òŸ)Ô(&Ÿeads °dONLNd
  1998. ù*l6Ï(3lseveral of the bits in that wor    °dONLNd
  1999. º*Ì6Ï)Å>d to determine exactly what to do. If, for instance, bit 9 of °dONLNd
  2000. ˙7lCê(@l    the instrı °dONLNd 7êC¿)$
  2001. uction worÔ†°dONLNd 7¿Cè)01d is set, the ROM code allocates a block of the rqÄ°dONLNd >7êC˜)–equested size and then °dONLNd UDlP (Ml(clears all the bytes in that block to 0.ˇ7Í@ˇ ˇˇˇˇ@
  2002. ˇ·ˇ‚7^
  2003. 4H\, Palatino&e.3+ä"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@ä Introduction4⁄ä˙(‡ä The Sample ‡)3 Application
  2004. (‡ 21
  2005. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2006. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2007.  
  2008.  
  2009.  
  2010.  
  2011.  
  2012. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  2013. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2014. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˜˙ˇˇ˙ˇ˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  2021. 4Å4w?òÄ
  2022. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2023. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˜˙ˇ˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛¸ˇˇ
  2030. ˇ˛ˇ˛¸ˇ˛¸ˇ˝˚ˇ˛˛˛ˇ˝
  2031. ˇ˛ˇ˛
  2032. ˇ˛ˇ˛˛˛ˇ˝˜˛˛ˇ˝
  2033. ˇ˛ˇ˛
  2034. ˇ˛ˇ˛˙ˇ˜˛˝ˇ˛ˇ˙˛ˇ˚¸ˇ˛˜˛˛ˇ˝
  2035. ˇ˛ˇ˛
  2036. ˇ˛ˇ˛˛ˇˇ˝˜˛¸ˇˇ
  2037. ˇ˛ˇ˛    ¸ˇˇ˜˛˛ˇ˝
  2038. ˇ˛ˇ˛
  2039. ˇ˛ˇ˛˛˛ˇ˝˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\äh™(eäIf you’rJ`°dONLNd\´hº)!e pr[ °dONLNd \ºh⁄)@ogramming in assembly language, you can set the bits of an instr“ °dONLNdL\⁄h
  2040. (e⁄
  2041. uction worÆ°dONLNdV\
  2042. h)0d °dONLNdXiäuñ(rädirI °dONLNd[ióu´)ectly! °dONLNd`i´uŸ)    . However≠¿°dONLNdiiÿu˝)-
  2043. , if you’r°dONLNdsi˛u)&e pr¿°dONLNdwiu):ogramming in a high-level language like Pascal, you can’t .°dONLNd±väÇA(ä+do that. Instead, you need to call a glue rR`°dONLNd‹vAÇó)∑outine, in this case ,
  2044. CourierR`°dONLNdÒvóÇÎ)VNewHandleClearR`°dONLNdˇvÎÇ)T, that ˇˇã4°dONLNdÉäè≤(åä    takes car›î°dONLNdÉ≤è‰)(e of calling ˇ˛°ú0°dONLNdÉÂè)3    NewHandleˇˇã40°dONLNd%Éèw)6 and setting the appr~`°dONLNd:Éwèfi)\opriate bits in the instró0°dONLNdSÉfiè )g
  2045. uction worÙƒ°dONLNd]É è)-d. °dONLNd`êäúæ(ôä Essentiallyd@°dONLNdkêΩú¬)3, d@°dONLNdmê¬ú)NewHandleCleard@°dONLNd{êúW)T is nothing but d@°dONLNdãêWúç)A    NewHandled@°dONLNdîêçúÈ)6 together with some .°dONLNd®ùä©X(¶ä0assembly-language code to set a bit in the instr¿†°dONLNdÿùX©à)Œ
  2046. uction worª °dONLNd‚ùà© )0d. This translation is handled °dONLNd™ä∂ˇ(≥äRautomatically by your development system at the time your application is compiled.°dONLNdTºä»ê*Y@Ä°dONLNdUºê»Q)-ou’ll encounter several other kinds of glue r<@°dONLNdǺQ»´)¡outines. Some glue r¿°dONLNdñº´»ˆ)Zoutines translate °dONLNd®…ä’º(“ä high-level r=`°dONLNd¥…Ω’#)3outines into low-level rÜ`°dONLNdÃ…#’Ï)f.outines. Most of the high-level File Manager rÄ°dONLNd˙…Ì’) outines °dONLNd÷ä‚í(fläarE°dONLNd÷ì‚◊)    e of this varietyë¿°dONLNd÷÷‚Ô)C. TherÄ°dONLNd÷‚Ã)1e is, for example, no code in ROM or the System fi¿‡°dONLNdM÷Â÷)‹le .°dONLNdP„äÔõ(ÏäcorrR`°dONLNdT„õÔÁ)esponding to the R`°dONLNde„ÁÔ)L    FSpCreateR`°dONLNdn„Ôë)6 function. Instead, calling R`°dONLNdä„ëÔ«)t    FSpCreateR`°dONLNdì„«Ô)6 invokes some .°dONLNd°且(˘äglue code that crû¿°dONLNd≤”¸F)Ieates a parameter block, fi¥°dONLNdÕF¸ü)slls out some of the fi`°dONLNd„†¸…)Z    elds apprX`°dONLNdÏ…¸))    opriately¿°dONLNdı¸)', and .°dONLNd˚˝ä    ï(ä;then passes that parameter block to the low-level function °dONLNd6˝ï    À(ï    PBHCreate°dONLNd?˝À    Œ)6..°dONLNdAäÿ(äSome other glue r•†°dONLNdRÿ)N
  2047. outines arj°dONLNd\),e purŇ°dONLNdaé)e assembly-language instrv†°dONLNdzé©)suction_†°dONLNdÄ™‘)    s which d
  2048. ¿°dONLNdâ’)+on’t call any °dONLNdóä(Ã(%äsystem softwarM‡°dONLNd•Õ(ÿ)Ce r\Ä°dONLNd®ÿ(˝)     outines. Æ@°dONLNd±˝()%Yn¿°dONLNd≤(‘)0ou might use glue like this to move a function rG¿°dONLNd‚‘()—esult or other °dONLNdÒ)ä5ß(2ädata frw°dONLNd¯)ß5√)om a rÖÄ°dONLNd˛)√5")egister onto the stack.°dONLNd;äGê(DäY@Ä°dONLNd;êGz)4ou don’t usually need to know whether a particular r≤†°dONLNdK;zG)Íoutine is implemented as glue °dONLNdiHäTı(Qäcode, except when you’r °dONLNdÄHˆT    )l<e doing low-level assembly-language debugging. For the time °dONLNdºUäa(^ä!being, you can consider all the r °dONLNd›UaJ)ç outines defi†°dONLNdÈUKai)4ned in q °dONLNdUiaÆ)Inside MacintoshS °dONLNdUØaÌ)F as part of the °dONLNdbän˝(käMacintosh system softwar3`°dONLNd(b˛n)te.
  2049. uHê4vHê
  2050. †H®4°H® ¢H¢
  2051. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd+çH††(õH The Sample ⁄°dONLNd6熆ı)X ApplicationˇˇˇˇˇˇU˛(õ1
  2052. °dONLNdB±äΩ°(∫äThe rÄ¿°dONLNdG±°Ω)Temainder of this book illustrates how to write a Macintosh application by gradually °dONLNdõæä ‹(«ädissecting the sour@°dONLNdÆæ› Δ)S5ce code of a very simple sample application, called VKÄ°dONLNd„æ≈ )Ëenn Diagrammer °dONLNdÒæ )K. °dONLNdÛÀä◊=(‘ä)This application allows the user to use Vh`°dONLNdÀ<◊˜)≤(enn diagrams as a method of determining °dONLNdDÿ䉛(·äNwhether a given syllogism is valid (that is, whether the conclusion must be tr `°dONLNdíÿfi‰
  2053. (·fi ue if both °dONLNdùÂäÒì(ÓäprG °dONLNdüÂîÒΩ)
  2054.     emises arU¿°dONLNd®ÂΩÒÀ))e tr¿`°dONLNd¨ÂÀÒ’)ueë °dONLNdÆÂ÷Ò€) ).e°dONLNd∞‹Ò,) This section briefl°dONLNdƒÂ-Ò¿)Q"y describes the operation of the VÔ°dONLNdÊÂøÒ )íenn Diagrammer °dONLNdıÚä˛æ(˚ä application.
  2055.  H4H°dONLNdä©*IMPORTÄ°dONLNd©π)ANT
  2056. ˇ·ˇ‚7^
  2057. °dONLNd ä$(!äThe account of syllogisms and V◊`°dONLNd+$Ä)éenn diagrams given hers`°dONLNdAÅ$≈)ie is inadequate °dONLNdQ$ä0M(-ä-for a full understanding of these topics. MosÚ`°dONLNd~$M0\)√t pr{‡°dONLNdÇ$]0í)
  2058. ogrammers,î`°dONLNdå$í0ª)5 however!°dONLNdî$ª0¿)), °dONLNdñ0ä<Œ(9ähave encounterkÄ°dONLNd§0Œ<‚)Ded VÌ@°dONLNd®0·<≈)4enn diagrams at some point in their lives. For a morl@°dONLNd‹0Δ<Õ)Âe °dONLNdfi<äHf(Eä1complete account, consult a good textbook on intrß`°dONLNd    <fH®)‹oductory logic.,Zapf Dingbats/@°dONLNd    '?ÆG¥)HsˇïB@ˇ ˇˇˇˇ@
  2059. ˇ·ˇ‚7^
  2060. 4*\¯, Palatino&e.3+l"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@l Introduction4⁄*˙¯
  2061. (‡*22    )B The Sample ‡)3 Application4^*¿¯
  2062. °dONLNd\lhÔ(elWhen the user launches the VM°dONLNd\Ôhß)É(enn Diagrammer application, it opens a V†°dONLNdD\ßh·)∏ enn diagram °dONLNdPiluê(rlwindowé°dONLNdViêu∏)$    , shown i¢†°dONLNd_i∏u¿)(n Ù°dONLNdai¿uÿ)FigurΔ¿°dONLNdfiÿuÏ)e 1-9d@°dONLNdkiÌuÔ).
  2063. ó*®¯4ò*®¯"ò*]
  2064. ˇ·ˇ‚7^    °dONLNdmçlòñ(ïl
  2065. Figure 1-9°dONLNdxçÆò¥)BA0°dONLNdyç¥òÿ)
  2066.  typical V°dONLNdÉçÿò*)$enn diagram window
  2067. °dONLNdñèlõs(òl:This window contains a number of distinct parts, shown in ÑÄ°dONLNd–èsõã(òsFigurW@°dONLNd’èãõ§)e 1-10Ù¿°dONLNd€è§õ¶).
  2068. æ*œ¯4æ*Œ¯"ø*]
  2069. ˇ·ˇ‚7^    °dONLNd›≥læú(ªl Figure 1-10°dONLNdÈ≥ÆæÓ)BThe parts of a V‡°dONLNd˘≥Óæ@)@enn diagram window
  2070. ßjx¯òÄ:7œHHL≥<ˇˇˇˇˇˇ7œ™mtö»ˇ¸Ä…Ä…Ä…ø˜Ôˇ¸ÛÏˇ˜Ä@Ó`˛|`¸Îø@Ôˇ¸`˛f˚Ïˇ˜Ä@Ó c««¿fc√ÊœÎø@Ôˇ¸˛f    `fdfgôòÏˇ˜Ä@Ó˛f`fcÊfôòÎø@Ôˇ¸gÊf`˝fôòÏˇ˜Ä@Óff`˝fôòÎø@Ôˇ¸F&f`˝fôòÏˇ˜Ä@Ó ÉΔf`|c„ÊôòÎø˜Ôˇ¸˘`¸Ïˇ˜ ÄÂ`Á Ä¿ÁÄ…«ˇÄ @÷Ä Ò@÷Ä <@÷ÄÄ 9√8@÷Ä0Ä  Y    àp@÷Ä0Ä @±`h‡@÷Ä Åa#êhA¿@÷Ä!¡N~h„Ä@÷ÄÄ"Åhw@÷ÅÜÄ'˚!Äh>@÷ÅÜÄ$@~h@÷Ä$ Ë@÷Ä'¯(@÷Ä @÷«ˇÄ…«ˇÄ…Ä…Ä…Ä…Ä…&ĸ˙à@ ı0@ ˚@"˚ĸ˜àÛ¯@ ˙1ĸ1ÿÃcå˛    ;Œ1ÿŒΔc`˜éΔc`ÿŒqéΔv3„˝2ĸJI$íR˛    $§âI%$I$íê˜RI$íê%$JI)"I$îIJ1ĸJIrL˛    $úây$‰H#í`˜RH#í`$‰K…'"Aì˝2ĸJIíB˛    $§âA%$H$í˜RH$í%$J    )"A$êIJ2ĸJI$íR˛    $§âI%$I$íê˜RI$íê%$JI)"I$îIJ1ĸ1»ƒrL˛    $úI1$‚F#í`˜éF#í`$‚Iâ'1ì˝Ä˙@ÊÌÄ˚ÄÊ ÌÄ…Ģˇ¿¸ˇ¯Ô˛˚ˇ¿˘"Ä˙>¸>¿ÒÄ˝>˘%Ä˙‡˛¿<Ò˝‡˙'Ä˙p˛8˛˛ÚÄ¿˛p˛8˙'Ä˚IJ˛p˝‡Û˝8IJ˙$Ä˚ ¸¿Ä˝Û`˝ ¸¿˚$Ä˚0¸0¸ÙÄ˝Ä0¸0˚"Ä˚`¸ ¸Ù˚¿`¸˚#ĸĸ0˚¿ı ˚0ĸ˚!ĸ˚@˚ ı˚˚˚ Ä¸ ˙¡Ä˚ı`˚ ˙¿¸ĸ˙c˙ ı¿˚˙`¸ĸ ˙˙ˆ˘†˙¸ĸ@˙˙ˆ˘@˙¸ĸÄ˙˘Ä˜˘†˙¸Ä˝˘"˘@˜˙˙¸Ä˝˘A˘ ˜˙˙¸ Ä˝˘ÄÄ˙˜ ˙˘Ä˝!Ä˝˙@˙˜@˙˘@˝!Ä˝˙`˙ ˜¿˙˘`˝!Ä˝˙ ˙˜Ä˙˘ ˝"Ä˝ ˙˙¯˘ Ä˙˝"Ä˝@˙˙¯˘@@˙˝"Ä˝@˙˙¯˘@@˙˝"Ä˝Ä˙˘Ä˘˘Ä ˙˝$IJÄ˙0˘¿˘ ˙Ä0˙˝#IJ˘ ˘@˘˙˙˝#IJ˘@˘ ˘˙˙˝#IJ˘@˘ ˘˙˙˝$IJ˘ÄÄ˙˘ ˙˘Ä˛$IJ˘ÄÄ˙˘ ˙˘Ä˛$IJ˘ÄÄ˙˘ ˙˘Ä˛%IJ˙˛@˙˘@˙˘@˛%IJ˙˛@˙˘@˙˘@˛%IJ˙˛`˙ ˘¿˙˘`˛%IJ˙˛ ˙˘Ä˙˘ ˛%IJ˙˛ ˙˘Ä˙˘ ˛%IJ˙˛ ˙˘Ä˙˘ ˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙ˇ‡˙˙˘ ˛Ä˙˛&IJ ˙¯˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛%IJ˙:˛<˙˘Ä˙˘ ˛'IJ˚¬˛#Ä˚˘Ä˙˘ ˛'IJ˚˛ `˚˘Ä˙˘ ˛'IJ˚˛`˚ ˘¿˙˘`˛'IJ˚0˛@ ˚˘@˙˘@˛'IJ˚¿˛@˚˘@˙˘@˛)IJ¸ÄÄĸ˘ ˙˘Ä˛)IJ¸ÄÄ`¸˘ ˙˘Ä˛)IJ¸ ÄÄ0¸˘ ˙˘Ä˛)IJ¸@¸ ˘˙˙˝)IJ¸ @¸ ˘˙˙˝)IJ¸@ ¸@˘˙˙˝*IJÄ˝Ä0¸¿˘ ˙Ä0˙˝*ĽIJ˛˛Ä˝Ä˘˘Ä ˙˝*Ä˝@˛˛˛@˛¯˘@@˙˝*Ä˝@˛˛˛ ˛¯˘@@˙˝*Ä˝ ˛ ˛˛0˛¯˘ Ä˙˝)Ä˝˛˛ ˛˛˜Ä˙˘ ˝)Ä˝˛˛`˛˛ ˜¿˙˘`˝)Ä˝˛ ˛@˛˛˜@˙˘@˝(Ä˝˛ ˝ÄIJ˛˜ ˙˘Ä˝'Ä˝˛@˝A˝˛ ˜˙˙¸'Ä˝˛¿˝"˝˛@˜˙˙¸%ĸÄÄ˝˝˛Ä˜˘†˙¸"ĸ@¸¸Äˆ˘@˙¸"ĸ ¸¸Äˆ˘†˙¸#ĸ¸c¸@ ı¿˚˙`¸$ĸ ¸¡Ä˝@ı`˚ ˙¿¸%ĸ˝@˝@ ı˚˚˚&ĸÄ˝0˝ ¿ı ˚0ĸ˚$Ä˚`˝ ˝ Ù˚¿`¸˚&Ä˚0 ˝0˝0ÙÄ˝Ä0¸0˚&Ä˚ ˝¿IJÛ`˝ ¸¿˚(Ä˚à˛˛p˛‡Û˝8IJ˙'Ä˙x˛8˛˛ÚÄ¿˛p˛8˙%Ä˙‡˛¿<Ò˝‡˙"Ä˙>¸>»ÒÄ˝>˘Ä˙ˇ¿¸ˇ¯˛˚ˇ¿˘Ä˙ˆ›Ä˙ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ ˆ0›Ä˙ˆ ›Ä˙ˆ ›Ä˙ˆ@›Ä˙ˆ@›Ä˙ˆ@›Ä˙ˆÄ›Ä˙ˆÄ›Ä˘Ä¯‹Ģ¿¯‹Ģ@¯‹Ģ ¯‹Ģ ¯‹Ģ¯‹Ģ¯‹Ģ ¯0‹Ģ¯ ‹Ģ¯@‹Ģ¯Ä‹įÄ˙€į@˙€į ˙€į˙€į ˙0€į˙`€į˙Ä€Ę¿¸⁄Ę0¸ ⁄ʸ⁄ʸ`⁄Ę¿˛Ä⁄Ĉ8˛ŸĈ˛Ÿ Äı¯ÿ Äıˇ‡ÿÄ…Ä…Ä…Ę&ÿĘÿįéb1åqΔ,¿€įI"JRI)1 €įI"IíI/ ¿€įI"HRI(  €įI"JRI)! €įâ"1åq& ¿€į˝@ÿį˝@ÿÄ…Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…ÄÊ˙ÄÄŸÄ˘ÅÄÄŸÄ>fl˛√èÄŸÄffqò˛Á˛ôÄŸÄΔffaò˛}˛ôÄŸÄffa¯˛9˛ôÄŸÄffaIJ˛ôÄŸÄffaà˛˛ôÄŸÄ>>`˛èÄŸ
  2071. IJÕ
  2072. IJFÕ
  2073. IJ<ÕÄ…Ä˙ˇ˚ˇ¸⁄ġ‡@Ä@ˇˇ⁄ġ‡@Ä@ˇˇ⁄Äœ‡CÄ¡A‡¯?⁄*Äè·@`Å¡C0˘ˇÑbIJĸÄÔ&Äœ‡@¿Ç¡C0˘ˇÑbIJÄ˚ÄÏ/)Äœ‡A‡Ñ¡C0˘ˇÑR80áx∞‚Á‚Áá0„,8Ú/$Äœ‡0@0à¡C¯ÑRDôàë"D…ÅÄàë˛2DÚ/)Äœ‡`@0è·C0˘ˇÑJDëàê"DâÚÄàë"@Ú/)Äœ‡¿@0Ä¡C0˘ˇÑJDëàé"DâÚÄàë"8Ú/)Äœ·ÄB0Ä¡C0˘ˇÑFDëàÅ"DâÅàë"Ú/$Äœ·¯A‡Ä¡C0¯?FDëàë"DâÅÄàë˛"DÚ0*ġ‡@Ä@ˇˇB8áxà‚Úá·"8ÄÛ#ġ‡@Ä@ˇˇ˛¸@˘Ì#ġ‡@Ä@ˇˇ˛¸@˘ÌÄ˙ˇ˚ˇ¸ÔÌÄ…Ä…Ä…Ä…į˚ˇ¸⁄į@ġ˛⁄į@ġ˛⁄įA‡á¡¸˛⁄(į    C0ܸ˛Ñ<˚B˛@˚`˛ ˜%į    C0ܸ˛ÑB˚B˛¯ ˛ ˜1į'C0ܸ˛Ñ@8≥Ã8‚√ã0„å8√ã≈Œ≈å!√á,8π¿˙1į'CáŸ˛Ñ@DÃë2DC$L…DDLë&&D"$Hë2D¬ ˙0į&C0ܸ˛Ñ<Dàë"<B$HàÒ@C»ê‰$D"$ë"DǢ1į'C0ܸ˛ÑDàü"DB'»â@DHé$$D"#àë"|Å¿˙1į'C0ܸ˛ÑDàê"DB$â@DHÅ$$D" Hë"@Ä ˙1į'C0ᡸ˛BDàë"DB$HâDDHë$$D"$Hë"DÇ ˙1į'@ġ˛<8àé"<2#ààƒ8C»é‰ƒD!√á"8Ń˙į@ġ˛Ï¸ˆį@ġ˛Ï¸ˆį˚ˇ¸⁄Ä…Ä… Ä‹ˇÄ…į˚ˇ¸⁄į@ġ¸⁄į@ġ¸⁄įA‡á¡¸⁄'į    C0ÜÊ|<˚B˛@˙ ˜ Ä¯    C0ÜÊ|B˚B˛˜Û1į'C0ÜÊ|@8≥Ã8‚√ã0„å8√ã≈Œ√éaΔXp˙0į!CáÅÊ|@DÃë2DC$L…DDLë&$D˝"dà˙1į'C0ÜÊ|<Dàë"<B$HàÒ@C»ê‰$D""DÄ˙1į'C0ÜÊ|Dàü"DB'»â@DHé$$D"""Dp˙1į'C0ÜÊ|Dàê"DB$â@DHÅ$$D"""D˙0į!C0á¡¸BDàë"DB$HâDDHë$$D˝"Dà˙1į'@ġ¸<8àé"<2#ààƒ8C»é‰#É!¬Dq˙į@ġ¸Áıį@ġ¸Á"ıį˚ˇ¸ÁıÄ…Ä…Ä…Ä…Ä…Ä…Ä…«ˇ»ˇ
  2074. œ*π¯4Œ#œ$ò\V”V”œ$≠˙••Û»ˇ¸Ì
  2075. ÛÄ…Ì
  2076. ÛÄ…Ì
  2077. ÛÄ…ÌÛø˜Ôˇ¸ÛÏˇˆÌÛÄ@Ó`˛|`¸ÎÌÛø@Ôˇ¸`˛f˚ÏˇˆÌÛÄ@Ó c««¿fc√ÊœÎÌÛø@Ôˇ¸˛f    `fdfgôòÏˇˆÌÛÄ@Ó˛f`fcÊfôòÎÌÛø@Ôˇ¸gÊf`˝fôòÏˇˆÌÛÄ@Óff`˝fôòÎÌÛø@Ôˇ¸F&f`˝fôòÏˇˆÌÛÄ@Ó ÉΔf`|c„ÊôòÎÌÛø˜Ôˇ¸˘`¸ÏˇˆÌÛÄÂ`ÁÌÛÄ¿ÁÌ ÛÄ…¿Ô
  2078. Û»ˇ˛pÔÛÄ @÷Ô!¯@˙Ä Ò@÷Ô@¯Ä <@÷ Ô$    A√à‡LX‡˝ÄÄ 9√8@÷Ô2    B$IR"e˝Ä0Ä  Y    àp@˙˚ @!‚xÄ Ù3
  2079. B$I`"E?˛ˇ‡0Ä @±`h‡@"˚ ‚ÑÄ Ù;
  2080. B$H‡`"D‡?˛ˇ‡ Åa#êhA¿@#å ≥•ÿŒpŒ1g‚ ÖŒr#Å≈p˘:    B$Hb"D˝Ä!¡N~h„Ä@"Rƒ•%) P
  2081.     )‚ ¿ë"$B&"à˘:    B$Jb"F˝ÄÄ"Åhw@"^Ñ•%È L
  2082. 9)‚ ˇ‡8Å"$$"˘:    A√â‡\E‡˝ÅÜÄ'˚!Äh>@"PÑ•%     BI)‚ è"#ʼn>x˘0ÛÅÜÄ$@~h@"LÉù$…\9' „ Çë" B$ à˘'ÛÄ$ Ë@˝Ä€ Bì"hBd"ò˘'ÛÄ'¯(@˛⁄ <LëßÅîd˘ÛÄ @÷Ô
  2083. Û»ˇ˛Ô ÛÄ… Ô
  2084. Û»ˇ˛Ô ÛÄ…Ô ÛÄ…Ô ÛÄ…ÄÔ
  2085. ÛÄ…Ì
  2086. ÛÄ…Ì*Ûĸ˙à@ ı0@ ˚@"˚Ì!Ûĸ˜àÛ¯@ ˙Ì5Ûĸ1ÿÃcå˛    ;Œ1ÿŒΔc`˜éΔc`ÿŒqéΔv3„˝Ì6ÛĸJI$íR˛    $§âI%$I$íê˜RI$íê%$JI)"I$îIJÌ5ÛĸJIrL˛    $úây$‰H#í`˜RH#í`$‰K…'"Aì˝Ì6ÛĸJIíB˛    $§âA%$H$í˜RH$í%$J    )"A$êIJÌ6ÛĸJI$íR˛    $§âI%$I$íê˜RI$íê%$JI)"I$îIJÌ5Ûĸ1»ƒrL˛    $úI1$‚F#í`˜éF#í`$‚Iâ'1ì˝ÌÛÄ>˝@ÊÌÛć˛ÄÊ ‡ÌÛÄÕ0Ì%ÛÄ˚ˇ¿¸ˇ¯Ô˛˚ˇ¿˚Ì*Ûĸ>¸>¿ÒÄ˝>˚Ì-Ûĸ‡˛¿<Ò˝‡¸Ì/Ûĸp˛8˛˛ÚÄ¿˛p˛8¸Ì/ÛÄ˝IJ˛p˝‡Û˝8IJ¸Ì,ÛÄ˝ ¸¿Ä˝Û`˝ ¸¿˝Ì,ÛÄ˝0¸0¸ÙÄ˝Ä0¸0˝Ì*ÛÄ˝`¸ ¸Ù˚¿`¸˝Ì+ÛIJĸ0˚¿ı ˚0ĸ˝Ì)ÛIJ˚@˚ ı˚˚˝Ì(ÛIJ ˙¡Ä˚ı`˚ ˙¿˛Ì'ÛIJ˙c˙ ı¿˚˙`˛Ì&ÛIJ ˙˙ˆ˘†˙˛Ì&ÛIJ@˙˙ˆ˘@˙˛Ì&ÛIJÄ˙˘Ä˜˘†˙˛Ì&ÛĢ"˘@˜˙˙˛Ì&ÛĢA˘ ˜˙˙˛Ì&ÛĢÄÄ˙˜ ˙˘ÄÌ'ÛÄ˙@˙˜@˙˘@Ì'ÛÄ˙`˙ ˜¿˙˘`Ì'ÛÄ˙ ˙˜Ä˙˘ Ì(ÛÄ ˙˙¯˘ Ä˙Ì(ÛÄ@˙˙¯˘@@˙Ì(ÛÄ@˙˙¯˘@@˙Ì(ÛÄÄ˙˘Ä˘˘Ä ˙Ì)ÛÄÄ˙0˘¿˘ ˙Ä0˙Ì(ÛĢ ˘@˘˙˙Ì(ÛĢ@˘ ˘˙˙Ì(ÛĢ@˘ ˘˙˙Ì(ÛĢÄÄ˙˘ ˙˘ÄÌ(ÛĢÄÄ˙˘ ˙˘ÄÌ(ÛĢÄÄ˙˘ ˙˘ÄÌ)ÛÄ˙˛@˙˘@˙˘@Ì)ÛÄ˙˛@˙˘@˙˘@Ì)ÛÄ˙˛`˙ ˘¿˙˘`Ì)ÛÄ˙˛ ˙˘Ä˙˘ Ì)ÛÄ˙˛ ˙˘Ä˙˘ Ì)ÛÄ˙˛ ˙˘Ä˙˘ Ì*ÛÄ ˙˛˙˙˘ ˛Ä˙Ì*ÛÄ ˙˛˙˙˘ ˛Ä˙Ì*ÛÄ ˙˛˙˙˘ ˛Ä˙Ì*ÛÄ ˙˛˙˙˘ ˛Ä˙Ì*ÛÄ ˙˛˙˙˘ ˛Ä˙Ì*ÛÄ@˙˛˙˙˘@˛@˙Ì*ÛÄ@˙˛˙˙˘@˛@˙Ì*ÛÄ@˙˛˙˙˘@˛@˙Ì*ÛÄ@˙˛˙˙˘@˛@˙Ì3ÛÄ@˙˛˙˙˘@˛@˙˝<˜1ÛÄ@˙˛˙˙˘@˛@˙˝Bı5ÛÄ@˙˛˙˙˘@˛@˙˝É9aÖƒ‚¿˘4ÛÄ@˙˛˙˙˘@˛@˙¸ˇ‡ÄEíE% ˘4ÛÄ@˙˛˙˙˘@˛@˙¸ˇ‡ÄE ˘5ÛÄ@˙˛˙˙˘@˛@˙˝ÅE≈ ˘5ÛÄ@˙˛˙˙˘@˛@˙˝ÇEE% ˘5ÛÄ@˙˛˙˙˘@˛@˙˝BEE4% ˘5ÛÄ@˙˛˙˙˘@˛@˙˝<9Ñ”ƒ‚ ˘*ÛÄ@˙˛˙˙˘@˛@˙Ì*ÛÄ ˙˛˙˙˘ ˛Ä˙Ì*ÛÄ ˙˛˙˙˘ ˛Ä˙Ì*ÛÄ ˙ˇ‡˙˙˘ ˛Ä˙Ì*ÛÄ ˙¯˙˙˘ ˛Ä˙Ì.ÛÄ ˙˛˙˙˘ ˛Ä˙˝
  2087. Ú-ÛÄ˙:˛<˙˘Ä˙˘ ˝Ú4ÛÄ˚¬˛#Ä˚˘Ä˙˘ ˝j8yN,¿˜4ÛÄ˚˛ `˚˘Ä˙˘ ˝öDâë3 ˜4ÛÄ˚˛`˚ ˘¿˙˘`˝äâ" ˜;¯˘Ä˚0˛@ ˚˘@˙˘@˝ä<â" ˜8ˆÄ˚¿˛@˚˘@˙˘@˝äDâ" ˜?N,»„á˚ĸÄÄĸ˘ ˙˘Ä˝öLâ" ˜@ë3)HĸĸÄÄ`¸˘ ˙˘Ä˝j2y ¢ ˜9˘")H˙ˇ˛¸ ÄÄ0¸˘ ˙˘Ä˚Ù:"(Á«˙ˇ˛¸@¸ ˘˙˙˚àÙ<"(ĸĸ @¸ ˘˙˙˚pÙ8"*Pĸĸ@ ¸@˘˙˙Ì8")„è˚ÄÄ˝Ä0¸¿˘ ˙Ä0˙Ì0ÛÄIJ˛˛Ä˝Ä˘˘Ä ˙Ì0ÛÄ@˛˛˛@˛¯˘@@˙Ì0ÛÄ@˛˛˛ ˛¯˘@@˙Ì0ÛÄ ˛ ˛˛0˛¯˘ Ä˙Ì/ÛIJ˛ ˛˛˜Ä˙˘ Ì3ˆÄ˛˛`˛˛ ˜¿˙˘`Ì3ˆÄ˛ ˛@˛˛˜@˙˘@Ì7‘pÚúYÄ˚IJ ˝ÄIJ˛˜ ˙˘ÄÌ74â"f@˚IJ@˝A˝˛ ˜˙˙˛Ì7    D@˚IJ¿˝"˝˛@˜˙˙˛Ì6yD@˚IJÄÄ˝˝˛Ä˜˘†˙˛Ì3â"D@˚IJ@¸¸Äˆ˘@˙˛Ì34ô&D@˚IJ ¸¸Äˆ˘†˙˛Ì4‘dÚD@˚IJ¸c¸@ ı¿˚˙`˛Ì0˝¯Ä˛ ¸¡Ä˝@ı`˚ ˙¿˛Ì2˛¯Ä˛˝@˝@ ı˚˚˝Ì2˝‡¯Ä˛Ä˝0˝ ¿ı ˚0ĸ˝Ì,ÛÄ˝`˝ ˝ Ù˚¿`¸˝Ì.ÛÄ˝0 ˝0˝0ÙÄ˝Ä0¸0˝Ì.ÛÄ˝ ˝¿IJÛ`˝ ¸¿˝Ì0ÛÄ˝à˛˛p˛‡Û˝8IJ¸Ì/Ûĸx˛8˛˛ÚÄ¿˛p˛8¸Ì-Ûĸ‡˛¿<Ò˝‡¸Ì*Ûĸ>¸>»ÒÄ˝>˚Ì'Ûĸˇ¿¸ˇ¯˛˚ˇ¿˚ÌÛĸˆflÌÛĸˆflÌÛĸ ˆfl0ÌÛĸ ˆ‡‡ÌÛĸ ˆ‡ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸˆ›ÌÛĸˆ›ÌÛĸˆ›ÌÛĸˆ›ÌÛĸˆ›ÌÛĸˆ›ÌÛĸˆ›ÌÛĸˆ›ÌÛĸ ˆ0›ÌÛĸˆ ›ÌÛĸˆ ›ÌÛĸˆ@›ÌÛĸˆ@›ÌÛĸˆ@›ÌÛĸˆÄ›ÌÛĸˆÄ›ÌÛÄ˚į‹ÌÛÄ˚¿¯‹ÌÛÄ˚@¯‹ÌÛÄ˚ ¯‹ÌÛÄ˚ ¯‹ÌÛÄ˚¯‹ÌÛÄ˚¯‹ÌÛÄ˚ ¯0‹ÌÛÄ˚¯ ‹ÌÛÄ˚¯@‹ÌÛÄ˚¯Ä‹ÌÛÄ˙Ä˙€ÌÛÄ˙@˙€ÌÛÄ˙ ˙€ÌÛÄ˙˙€ÌÛÄ˙ ˙0€ÌÛÄ˙˙`€ÌÛÄ˙˙Ä€ÌÛĢ¿¸⁄ÌÛĢ0¸ ⁄ÌÛĢ¸⁄ÌÛĢ¸`⁄ÌÛĢ¿˛Ä⁄ÌÛį8˛ŸÌÛÄĢ˛ŸÌÛć¯¯ÿÌÛÄ>¯ˇ‡ÿÌ
  2088. ÛÄ…Ì
  2089. ÛÄ…Ì
  2090. ÛÄ…ÌÛĘ&ÿÌÛĘÿÌÛįéb1åqΔ,¿€ÌÛįI"JRI)1 €ÌÛįI"IíI/ ¿€ÌÛįI"HRI(  €ÌÛįI"JRI)! €ÌÛįâ"1åq& ¿€ÌÛį˝@ÿÌÛį˝@ÿÌ
  2091. ÛÄ…Ì
  2092. ÛÄ…Ì
  2093. ÛÄ…Ì
  2094. ÛÄ…Ì
  2095. ÛÄ…Ì
  2096. ÛÄ…Ì
  2097. ÛÄ…Ì
  2098. ÛÄ…Ì
  2099. ÛÄ…ÌÛÄÊ˙ÄÄŸÌÛĢÅÄÄŸÌÛÄ>fl˛√èÄŸÌÛÄffqò˛Á˛ôÄŸÌÛÄΔffaò˛}˛ôÄŸÌÛÄffa¯˛9˛ôÄŸÌÛÄffaIJ˛ôÄŸÌÛÄffaà˛˛ôÄŸÌÛÄ>>`˛èÄŸÌÛIJÕÌÛIJFÕÌÛIJ<Õ¿Ô ÛÄ…pÔÛÄ˙ˇ˚ˇ¸⁄ÔÛġ‡@Ä@ˇˇ⁄ÔÛġ‡@Ä@ˇˇ⁄ Ô%˙˛˙Äœ‡CÄ¡A‡¯?⁄Ô3ıÄè·@`Å¡C0˘ˇÑbIJĸÄÔÔ7    <âNa≈á˝Äœ‡@¿Ç¡C0˘ˇÑbIJÄ˚ÄÏÔA
  2100. Dâëí&HIJ)Äœ‡A‡Ñ¡C0˘ˇÑR80áx∞‚Á‚Áá0„,8ÚÔA
  2101. ÚDâ$H˛ˇ$˛œ‡0@0à¡C¯ÑRDôàë"D…ÅÄàë˛2DÚÔA
  2102. Dâ$G˛ˇ)˛œ‡`@0è·C0˘ˇÑJDëàê"DâÚÄàë"@ÚÔA
  2103. Dâ$@IJ)Äœ‡¿@0Ä¡C0˘ˇÑJDëàé"DâÚÄàë"8ÚÔA
  2104. Dô$PIJ)Äœ·ÄB0Ä¡C0˘ˇÑFDëàÅ"DâÅàë"ÚÔF    <i·ƒO˝$Äœ·¯A‡Ä¡C0¯?FDëàë"DâÅÄàë˛"DÚ¸ı=˛˜*ġ‡@Ä@ˇˇB8áxà‚Úá·"8ÄÛÇÚ6˛D˜Äˇ‡@Ä@ˇˇ˛¸@˘Ì Çßdq√į6˛8˜Äˇ‡@Ä@ˇˇ˛¸@˘Ì Ç»ôîä$@¯"ÛÄ˙ˇ˚ˇ¸ÔÌ
  2105. ˇ‡¸àëÇ$˜ÛÄ… Äèës„įÛÄ… Äà
  2106. @¯ÛÄ… Äàë
  2107. (@¯ÛÄ… ÄáҫįÛį˚ˇ¸⁄ÔÛį@ġ˛⁄ÔÛį@ġ˛⁄ÔÛįA‡á¡¸˛⁄Ô.Ûį    C0ܸ˛Ñ<˚B˛@˚`˛ ˜Ô+Ûį    C0ܸ˛ÑB˚B˛¯ ˛ ˜Ô7Ûį'C0ܸ˛Ñ@8≥Ã8‚√ã0„å8√ã≈Œ≈å!√á,8π¿˙Ô7Ûį'CáŸ˛Ñ@DÃë2DC$L…DDLë&&D"$Hë2D¬ ˙Ô6Ûį&C0ܸ˛Ñ<Dàë"<B$HàÒ@C»ê‰$D"$ë"DǢÔ7Ûį'C0ܸ˛ÑDàü"DB'»â@DHé$$D"#àë"|Å¿˙Ô7Ûį'C0ܸ˛ÑDàê"DB$â@DHÅ$$D" Hë"@Ä ˙ Ô7Ûį'C0ᡸ˛BDàë"DB$HâDDHë$$D"$Hë"DÇ ˙Ô7Ûį'@ġ˛<8àé"<2#ààƒ8C»é‰ƒD!√á"8Ń˙ÔÛį@ġ˛Ï¸ˆÔÛį@ġ˛Ï¸ˆÄÔÛį˚ˇ¸⁄Ì
  2108. ÛÄ…Ì ÛÄ…¿ÔÛÄ‹ˇpÔ ÛÄ…ÔÛį˚ˇ¸⁄ÔÛį@ġ¸⁄ ÔÛį@ġ¸⁄ÔÛįA‡á¡¸⁄Ô-Ûį    C0ÜÊ|<˚B˛@˙ ˜Ô.Ûį    C0ÜÊ|B˚B˛˜Û
  2109. <˜=Ûį'C0ÜÊ|@8≥Ã8‚√ã0„å8√ã≈Œ√éaΔXp˙Bı@Ûį!CáÅÊ|@DÃë2DC$L…DDLë&$D˝"dà˙ É9aÖƒ‚¿˘AÛį'C0ÜÊ|<Dàë"<B$HàÒ@C»ê‰$D""DÄ˙ ÄEíE% ˘AÛį'C0ÜÊ|Dàü"DB'»â@DHé$$D"""Dp˙ ˇ‡ÄE ˘AÛį'C0ÜÊ|Dàê"DB$â@DHÅ$$D"""D˙ ÅE≈ ˘@Ûį!C0á¡¸BDàë"DB$HâDDHë$$D˝"Dà˙ ÇEE% ˘AÛį'@ġ¸<8àé"<2#ààƒ8C»é‰#É!¬Dq˙ BEE4% ˘%Ûį@ġ¸Áı <9Ñ”ƒ‚ ˘Ûį@ġ¸Á"ıÔÛį˚ˇ¸ÁıÔ ÛÄ…Ô ÛÄ…Ô ÛÄ… Ô ÛÄ…Ô ÛÄ…Ô ÛÄ…Ô ÛÄ…ÄÔÛ»ˇ˛Ì
  2110. Û…ˇ˛Ì•••••Í˙‚ÊÍ˙‚ÊÍ˙‚ÊÍ˙‚ÊÍ˙‚ ÊÍ˙‚ÊÍ˙‚ÊÍÄ˚ Ä„ÊÈ˚x„ÊÈ˚ˇ¿„ˇÄÊ
  2111. ÊÌ÷
  2112. ÊÌ÷
  2113. ÊÌ÷
  2114. ÊÌ÷
  2115. ÊÌ÷
  2116. ÊÌ÷
  2117. ÊÌ÷
  2118. ÊÌ÷
  2119. ÊÌ÷
  2120. ÊÌ÷
  2121. ÊÌ÷•••ò\V”V”œ$≠˙••Û»ˇ¸Ì
  2122. ÛÄ…Ì
  2123. ÛÄ…Ì
  2124. ÛÄ…ÌÛø˜Ôˇ¸ÛÏˇˆÌÛÄ@Ó`˛|`¸ÎÌÛø@Ôˇ¸`˛f˚ÏˇˆÌÛÄ@Ó c««¿fc√ÊœÎÌÛø@Ôˇ¸˛f    `fdfgôòÏˇˆÌÛÄ@Ó˛f`fcÊfôòÎÌÛø@Ôˇ¸gÊf`˝fôòÏˇˆÌÛÄ@Óff`˝fôòÎÌÛø@Ôˇ¸F&f`˝fôòÏˇˆÌÛÄ@Ó ÉΔf`|c„ÊôòÎÌÛø˜Ôˇ¸˘`¸ÏˇˆÌÛÄÂ`ÁÌÛÄ¿ÁÌ ÛÄ…¿Ô
  2125. Û»ˇ˛pÔÛÄ @÷Ô!¯@˙Ä Ò@÷Ô@¯Ä <@÷ Ô$    A√à‡LX‡˝ÄÄ 9√8@÷Ô2    B$IR"e˝Ä0Ä  Y    àp@˙˚ @!‚xÄ Ù3
  2126. B$I`"E?˛ˇ‡0Ä @±`h‡@"˚ ‚ÑÄ Ù8    B$H‡`"D‡˚ Åa#êhA¿@#å ≥•ÿŒpŒ1g‚ ÖŒr#Å≈p˘:    B$Hb"D˝Ä!¡N~h„Ä@"Rƒ•%) P
  2127.     )‚ ¿ë"$B&"à˘:    B$Jb"F˝ÄÄ"Åhw@"^Ñ•%È L
  2128. 9)‚ ˇ‡8Å"$$"˘:    A√â‡\E‡˝ÅÜÄ'˚!Äh>@"PÑ•%     BI)‚ è"#ʼn>x˘0ÛÅÜÄ$@~h@"LÉù$…\9' „ Çë" B$ à˘'ÛÄ$ Ë@˝Ä€ Bì"hBd"ò˘'ÛÄ'¯(@˛⁄ <LëßÅîd˘ÛÄ @÷Ô
  2129. Û»ˇ˛Ô ÛÄ… Ô
  2130. Û»ˇ˛Ô ÛÄ…Ô ÛÄ…Ô ÛÄ…ÄÔ
  2131. ÛÄ…Ì
  2132. ÛÄ…Ì*Ûĸ˙à@ ı0@ ˚@"˚Ì!Ûĸ˜àÛ¯@ ˙Ì5Ûĸ1ÿÃcå˛    ;Œ1ÿŒΔc`˜éΔc`ÿŒqéΔv3„˝Ì6ÛĸJI$íR˛    $§âI%$I$íê˜RI$íê%$JI)"I$îIJÌ5ÛĸJIrL˛    $úây$‰H#í`˜RH#í`$‰K…'"Aì˝Ì6ÛĸJIíB˛    $§âA%$H$í˜RH$í%$J    )"A$êIJÌ6ÛĸJI$íR˛    $§âI%$I$íê˜RI$íê%$JI)"I$îIJÌ5Ûĸ1»ƒrL˛    $úI1$‚F#í`˜éF#í`$‚Iâ'1ì˝ÌÛÄ>˝@ÊÌÛć˛ÄÊ ‡ÌÛÄÕ0Ì%ÛÄ˚ˇ¿¸ˇ¯Ô˛˚ˇ¿˚Ì*Ûĸ>¸>¿ÒÄ˝>˚Ì-Ûĸ‡˛¿<Ò˝‡¸Ì/Ûĸp˛8˛˛ÚÄ¿˛p˛8¸Ì/ÛÄ˝IJ˛p˝‡Û˝8IJ¸Ì,ÛÄ˝ ¸¿Ä˝Û`˝ ¸¿˝Ì,ÛÄ˝0¸0¸ÙÄ˝Ä0¸0˝Ì*ÛÄ˝`¸ ¸Ù˚¿`¸˝Ì+ÛIJĸ0˚¿ı ˚0ĸ˝Ì)ÛIJ˚@˚ ı˚˚˝Ì(ÛIJ ˙¡Ä˚ı`˚ ˙¿˛Ì'ÛIJ˙c˙ ı¿˚˙`˛Ì&ÛIJ ˙˙ˆ˘†˙˛Ì&ÛIJ@˙˙ˆ˘@˙˛Ì&ÛIJÄ˙˘Ä˜˘†˙˛Ì&ÛĢ"˘@˜˙˙˛Ì&ÛĢA˘ ˜˙˙˛Ì&ÛĢÄÄ˙˜ ˙˘ÄÌ'ÛÄ˙@˙˜@˙˘@Ì'ÛÄ˙`˙ ˜¿˙˘`Ì'ÛÄ˙ ˙˜Ä˙˘ Ì(ÛÄ ˙˙¯˘ Ä˙Ì(ÛÄ@˙˙¯˘@@˙Ì(ÛÄ@˙˙¯˘@@˙Ì(ÛÄÄ˙˘Ä˘˘Ä ˙Ì)ÛÄÄ˙0˘¿˘ ˙Ä0˙Ì(ÛĢ ˘@˘˙˙Ì(ÛĢ@˘ ˘˙˙Ì(ÛĢ@˘ ˘˙˙Ì(ÛĢÄÄ˙˘ ˙˘ÄÌ(ÛĢÄÄ˙˘ ˙˘ÄÌ(ÛĢÄÄ˙˘ ˙˘ÄÌ)ÛÄ˙˛@˙˘@˙˘@Ì)ÛÄ˙˛@˙˘@˙˘@Ì)ÛÄ˙˛`˙ ˘¿˙˘`Ì)ÛÄ˙˛ ˙˘Ä˙˘ Ì)ÛÄ˙˛ ˙˘Ä˙˘ Ì)ÛÄ˙˛ ˙˘Ä˙˘ Ì*ÛÄ ˙˛˙˙˘ ˛Ä˙Ì*ÛÄ ˙˛˙˙˘ ˛Ä˙Ì*ÛÄ ˙˛˙˙˘ ˛Ä˙Ì*ÛÄ ˙˛˙˙˘ ˛Ä˙Ì*ÛÄ ˙˛˙˙˘ ˛Ä˙Ì*ÛÄ@˙˛˙˙˘@˛@˙Ì*ÛÄ@˙˛˙˙˘@˛@˙Ì*ÛÄ@˙˛˙˙˘@˛@˙Ì*ÛÄ@˙˛˙˙˘@˛@˙Ì3ÛÄ@˙˛˙˙˘@˛@˙˝<˜1ÛÄ@˙˛˙˙˘@˛@˙˝Bı5ÛÄ@˙˛˙˙˘@˛@˙˝É9aÖƒ‚¿˘4ÛÄ@˙˛˙˙˘@˛@˙¸ˇ‡ÄEíE% ˘3ÛÄ@˙˛˙˙˘@˛@˙˚ÄE ˘5ÛÄ@˙˛˙˙˘@˛@˙˝ÅE≈ ˘5ÛÄ@˙˛˙˙˘@˛@˙˝ÇEE% ˘5ÛÄ@˙˛˙˙˘@˛@˙˝BEE4% ˘5ÛÄ@˙˛˙˙˘@˛@˙˝<9Ñ”ƒ‚ ˘*ÛÄ@˙˛˙˙˘@˛@˙Ì*ÛÄ ˙˛˙˙˘ ˛Ä˙Ì*ÛÄ ˙˛˙˙˘ ˛Ä˙Ì*ÛÄ ˙ˇ‡˙˙˘ ˛Ä˙Ì*ÛÄ ˙¯˙˙˘ ˛Ä˙Ì.ÛÄ ˙˛˙˙˘ ˛Ä˙˝
  2133. Ú-ÛÄ˙:˛<˙˘Ä˙˘ ˝Ú4ÛÄ˚¬˛#Ä˚˘Ä˙˘ ˝j8yN,¿˜4ÛÄ˚˛ `˚˘Ä˙˘ ˝öDâë3 ˜4ÛÄ˚˛`˚ ˘¿˙˘`˝äâ" ˜;¯˘Ä˚0˛@ ˚˘@˙˘@˝ä<â" ˜8ˆÄ˚¿˛@˚˘@˙˘@˝äDâ" ˜?N,»„á˚ĸÄÄĸ˘ ˙˘Ä˝öLâ" ˜@ë3)HĸĸÄÄ`¸˘ ˙˘Ä˝j2y ¢ ˜9˘")H˙ˇ˛¸ ÄÄ0¸˘ ˙˘Ä˚Ù9"(Á«˘¸@¸ ˘˙˙˚àÙ<"(ĸĸ @¸ ˘˙˙˚pÙ8"*Pĸĸ@ ¸@˘˙˙Ì8")„è˚ÄÄ˝Ä0¸¿˘ ˙Ä0˙Ì0ÛÄIJ˛˛Ä˝Ä˘˘Ä ˙Ì0ÛÄ@˛˛˛@˛¯˘@@˙Ì0ÛÄ@˛˛˛ ˛¯˘@@˙Ì0ÛÄ ˛ ˛˛0˛¯˘ Ä˙Ì/ÛIJ˛ ˛˛˜Ä˙˘ Ì3ˆÄ˛˛`˛˛ ˜¿˙˘`Ì3ˆÄ˛ ˛@˛˛˜@˙˘@Ì7‘pÚúYÄ˚IJ ˝ÄIJ˛˜ ˙˘ÄÌ74â"f@˚IJ@˝A˝˛ ˜˙˙˛Ì7    D@˚IJ¿˝"˝˛@˜˙˙˛Ì6yD@˚IJÄÄ˝˝˛Ä˜˘†˙˛Ì3â"D@˚IJ@¸¸Äˆ˘@˙˛Ì34ô&D@˚IJ ¸¸Äˆ˘†˙˛Ì4‘dÚD@˚IJ¸c¸@ ı¿˚˙`˛Ì0˝¯Ä˛ ¸¡Ä˝@ı`˚ ˙¿˛Ì2˛¯Ä˛˝@˝@ ı˚˚˝Ì2˝‡¯Ä˛Ä˝0˝ ¿ı ˚0ĸ˝Ì,ÛÄ˝`˝ ˝ Ù˚¿`¸˝Ì.ÛÄ˝0 ˝0˝0ÙÄ˝Ä0¸0˝Ì.ÛÄ˝ ˝¿IJÛ`˝ ¸¿˝Ì0ÛÄ˝à˛˛p˛‡Û˝8IJ¸Ì/Ûĸx˛8˛˛ÚÄ¿˛p˛8¸Ì-Ûĸ‡˛¿<Ò˝‡¸Ì*Ûĸ>¸>»ÒÄ˝>˚Ì'Ûĸˇ¿¸ˇ¯˛˚ˇ¿˚ÌÛĸˆflÌÛĸˆflÌÛĸ ˆfl0ÌÛĸ ˆ‡‡ÌÛĸ ˆ‡ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸ ˆ›ÌÛĸˆ›ÌÛĸˆ›ÌÛĸˆ›ÌÛĸˆ›ÌÛĸˆ›ÌÛĸˆ›ÌÛĸˆ›ÌÛĸˆ›ÌÛĸ ˆ0›ÌÛĸˆ ›ÌÛĸˆ ›ÌÛĸˆ@›ÌÛĸˆ@›ÌÛĸˆ@›ÌÛĸˆÄ›ÌÛĸˆÄ›ÌÛÄ˚į‹ÌÛÄ˚¿¯‹ÌÛÄ˚@¯‹ÌÛÄ˚ ¯‹ÌÛÄ˚ ¯‹ÌÛÄ˚¯‹ÌÛÄ˚¯‹ÌÛÄ˚ ¯0‹ÌÛÄ˚¯ ‹ÌÛÄ˚¯@‹ÌÛÄ˚¯Ä‹ÌÛÄ˙Ä˙€ÌÛÄ˙@˙€ÌÛÄ˙ ˙€ÌÛÄ˙˙€ÌÛÄ˙ ˙0€ÌÛÄ˙˙`€ÌÛÄ˙˙Ä€ÌÛĢ¿¸⁄ÌÛĢ0¸ ⁄ÌÛĢ¸⁄ÌÛĢ¸`⁄ÌÛĢ¿˛Ä⁄ÌÛį8˛ŸÌÛÄĢ˛ŸÌÛć¯¯ÿÌÛÄ>¯ˇ‡ÿÌ
  2134. ÛÄ…Ì
  2135. ÛÄ…Ì
  2136. ÛÄ…ÌÛĘ&ÿÌÛĘÿÌÛįéb1åqΔ,¿€ÌÛįI"JRI)1 €ÌÛįI"IíI/ ¿€ÌÛįI"HRI(  €ÌÛįI"JRI)! €ÌÛįâ"1åq& ¿€ÌÛį˝@ÿÌÛį˝@ÿÌ
  2137. ÛÄ…Ì
  2138. ÛÄ…Ì
  2139. ÛÄ…Ì
  2140. ÛÄ…Ì
  2141. ÛÄ…Ì
  2142. ÛÄ…Ì
  2143. ÛÄ…Ì
  2144. ÛÄ…Ì
  2145. ÛÄ…ÌÛÄÊ˙ÄÄŸÌÛĢÅÄÄŸÌÛÄ>fl˛√èÄŸÌÛÄffqò˛Á˛ôÄŸÌÛÄΔffaò˛}˛ôÄŸÌÛÄffa¯˛9˛ôÄŸÌÛÄffaIJ˛ôÄŸÌÛÄffaà˛˛ôÄŸÌÛÄ>>`˛èÄŸÌÛIJÕÌÛIJFÕÌÛIJ<Õ¿Ô ÛÄ…pÔÛÄ˙ˇ˚ˇ¸⁄ÔÛġ‡@Ä@ˇˇ⁄ÔÛġ‡@Ä@ˇˇ⁄ Ô%˙˛˙Äœ‡CÄ¡A‡¯?⁄Ô3ıÄè·@`Å¡C0˘ˇÑbIJĸÄÔÔ7    <âNa≈á˝Äœ‡@¿Ç¡C0˘ˇÑbIJÄ˚ÄÏÔA
  2146. Dâëí&HIJ)Äœ‡A‡Ñ¡C0˘ˇÑR80áx∞‚Á‚Áá0„,8ÚÔA
  2147. ÚDâ$H˛ˇ$˛œ‡0@0à¡C¯ÑRDôàë"D…ÅÄàë˛2DÚÔ?    Dâ$G¸(œ‡`@0è·C0˘ˇÑJDëàê"DâÚÄàë"@ÚÔA
  2148. Dâ$@IJ)Äœ‡¿@0Ä¡C0˘ˇÑJDëàé"DâÚÄàë"8ÚÔA
  2149. Dô$PIJ)Äœ·ÄB0Ä¡C0˘ˇÑFDëàÅ"DâÅàë"ÚÔF    <i·ƒO˝$Äœ·¯A‡Ä¡C0¯?FDëàë"DâÅÄàë˛"DÚ¸ı=˛˜*ġ‡@Ä@ˇˇB8áxà‚Úá·"8ÄÛÇÚ6˛D˜Äˇ‡@Ä@ˇˇ˛¸@˘Ì Çßdq√į6˛8˜Äˇ‡@Ä@ˇˇ˛¸@˘Ì Ç»ôîä$@¯"ÛÄ˙ˇ˚ˇ¸ÔÌ
  2150. ˇ‡¸àëÇ$˜ÛÄ… Äèës„įÛÄ… Äà
  2151. @¯ÛÄ… Äàë
  2152. (@¯ÛÄ… ÄáҫįÛį˚ˇ¸⁄ÔÛį@ġ˛⁄ÔÛį@ġ˛⁄ÔÛįA‡á¡¸˛⁄Ô.Ûį    C0ܸ˛Ñ<˚B˛@˚`˛ ˜Ô+Ûį    C0ܸ˛ÑB˚B˛¯ ˛ ˜Ô7Ûį'C0ܸ˛Ñ@8≥Ã8‚√ã0„å8√ã≈Œ≈å!√á,8π¿˙Ô7Ûį'CáŸ˛Ñ@DÃë2DC$L…DDLë&&D"$Hë2D¬ ˙Ô6Ûį&C0ܸ˛Ñ<Dàë"<B$HàÒ@C»ê‰$D"$ë"DǢÔ7Ûį'C0ܸ˛ÑDàü"DB'»â@DHé$$D"#àë"|Å¿˙Ô7Ûį'C0ܸ˛ÑDàê"DB$â@DHÅ$$D" Hë"@Ä ˙ Ô7Ûį'C0ᡸ˛BDàë"DB$HâDDHë$$D"$Hë"DÇ ˙Ô7Ûį'@ġ˛<8àé"<2#ààƒ8C»é‰ƒD!√á"8Ń˙ÔÛį@ġ˛Ï¸ˆÔÛį@ġ˛Ï¸ˆÄÔÛį˚ˇ¸⁄Ì
  2153. ÛÄ…Ì ÛÄ…¿ÔÛÄ‹ˇpÔ ÛÄ…ÔÛį˚ˇ¸⁄ÔÛį@ġ¸⁄ ÔÛį@ġ¸⁄ÔÛįA‡á¡¸⁄Ô-Ûį    C0ÜÊ|<˚B˛@˙ ˜Ô.Ûį    C0ÜÊ|B˚B˛˜Û
  2154. <˜=Ûį'C0ÜÊ|@8≥Ã8‚√ã0„å8√ã≈Œ√éaΔXp˙Bı@Ûį!CáÅÊ|@DÃë2DC$L…DDLë&$D˝"dà˙ É9aÖƒ‚¿˘AÛį'C0ÜÊ|<Dàë"<B$HàÒ@C»ê‰$D""DÄ˙ ÄEíE% ˘AÛį'C0ÜÊ|Dàü"DB'»â@DHé$$D"""Dp˙ ˇ‡ÄE ˘AÛį'C0ÜÊ|Dàê"DB$â@DHÅ$$D"""D˙ ÅE≈ ˘@Ûį!C0á¡¸BDàë"DB$HâDDHë$$D˝"Dà˙ ÇEE% ˘AÛį'@ġ¸<8àé"<2#ààƒ8C»é‰#É!¬Dq˙ BEE4% ˘%Ûį@ġ¸Áı <9Ñ”ƒ‚ ˘Ûį@ġ¸Á"ıÔÛį˚ˇ¸ÁıÔ ÛÄ…Ô ÛÄ…Ô ÛÄ… Ô ÛÄ…Ô ÛÄ…Ô ÛÄ…Ô ÛÄ…ÄÔÛ»ˇ˛Ì
  2155. Û…ˇ˛Ì•••••Í˙‚ÊÍ˙‚ÊÍ˙‚ÊÍ˙‚ÊÍ˙‚ ÊÍ˙‚ÊÍ˙‚ÊÍÄ˚ Ä„ÊÈ˚x„ÊÈ˚ˇ¿„ˇÄÊ
  2156. ÊÌ÷
  2157. ÊÌ÷
  2158. ÊÌ÷
  2159. ÊÌ÷
  2160. ÊÌ÷
  2161. ÊÌ÷
  2162. ÊÌ÷
  2163. ÊÌ÷
  2164. ÊÌ÷
  2165. ÊÌ÷
  2166. ÊÌ÷•••ò\V”V”≠$ä˙Í@ÒH◊ÍÜ!H’ÍJ8p–FXpÙ!!I√»ÂòŸÍJDâ0I"dàÙ0J$IdŸÍJDâP"DÄÙJ$IDŸÍJDâP"DpÙJ$H‰DŸÍ*DâQ"DÙ äJ$HDŸÍ2Dâ0Q"EÙåJ$JDŸÍ"8p–NDÙ I√…‰DŸ    ”@◊    ”@◊    ”Ä◊•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••$ÒÚ<˛ ~@ ˛†¸Ä ÷#Ú    BÄ@¡É˛@˛Ä˙Ä0÷#ÚBà@ÅÅ˛@˛Ä˙Ä ÷'Ú!`H@OÄɬÒ8ÚG<ßáª≈∏DìŒåDÄ÷'Ú!êO|QÅ$âD
  2167. àë"†H†&DLí1íLÄ÷&Ú ê‰HÄ@QÅ$â@zèë"£»°‰D-0°-’&Ú êB@Ä@QAâAäà"¨H¶$D-0°-’&Ú `BòÄ@QAâEë"®»§dD31í3’%Ò <@O êÒ8Ê"ß'£îD.å’È˝įČÈ˝ Ä˘Õ•)Ú˛ ˛˝¿HŸ%ÚÄ @Ä˚ ¸L0Ÿ%ÚÄ @Ä(˚¸JPŸ*Ú$y‹√§\‰√¡Ã)„âÓ0«Å    Ãwñ‰ÚN<(ËêJPŸ*Ú$Dë$dbE" í(II$AÒ"@Yâë"IêîJPŸ*Ú$Dí$`F °(Ù    ÑÑA!"C—âü"Iı†TJPŸ*Ú$Dí$`F °´    ÑdA!"LQâê"I†TIPŸ*Ú$Dë$d‚E" í 4IJA"H—â#!â`4IêŸ*Ú$DP√£\$¬ LâÀâ1‰A G1௬!‚BIŸfi˝˚’fi<˛‡˚’•Ì˛@ĸ»ÒADz˛    Äp‡Ä»Ò¬F˛˛    ÄâÄ»ÚD
  2168. Üú¿âNéàÅ·ÖÁ08q‡ÀÚEäII ôQëbÅEH#DâÀÚFRPîHÄZPü0Å% !|˘ÀÚ‰PîH`ZPꬡ%!@ÅÀÒDBIJfQëÅEÑ#DâÀÒCÇÜE‡$NéA˘‡Å·Öx8q‡ÀÔ˙@˚ Ô˙@˚ •    Ú@∏Ú@<‚ΩÚ@    AΩÚÁHú8AΩÚÒ»¢DxËΩÚ    ¯H†|D ΩÚ        H†@ÄæÚ        …¢Dƒ$ÄæÚÁFú88#Ω•••••••••••••••Ò@<˚¡Ò¿B˛¡Ò†Dz¡Ú#«ë¿Ä1nxãúpÁ¬Ú"$R ÄIëDâ"@Ä√Ú‚$S‡ÄÖDâ>@¬Ú$RÇÖDâ @¬Ú$R DIDô"@Ä√Ú «ë¿81xhúD¬Ò¸@¿Ò¸@¿•Ú‡0$ºÚ @$ ¿Ú Ä$ ¿Ú ^|%ùfis¡Ú ‡Q%I$à¡Ú ÑQ%    (H¡Ú DQ%…1(H¡Ú $— %4)#$à¡Ú 3Q|Å$”≈ì¡ÏĪÏĪ•ÚH∂ÚH@ΩÚ    H@ÄæÚ    I9fi„@æÚ    IëDê@æÚ    IHP@æÚ    Ië1HP!@æÚ    I8Q#Dê!ÄæÚH◊â£AΩ••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••ò\V”V”≠$ä˙Í@ÒH◊ÍÜ!H’ÍJ8p–FXpÙ!!I√»ÂòŸÍJDâ0I"dàÙ0J$IdŸÍJDâP"DÄÙJ$IDŸÍJDâP"DpÙJ$H‰DŸÍ*DâQ"DÙ äJ$HDŸÍ2Dâ0Q"EÙåJ$JDŸÍ"8p–NDÙ I√…‰DŸ    ”@◊    ”@◊    ”Ä◊•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••$ÒÚ<˛ ~@ ˛†¸Ä ÷#Ú    BÄ@¡É˛@˛Ä˙Ä0÷#ÚBà@ÅÅ˛@˛Ä˙Ä ÷'Ú!`H@OÄɬÒ8ÚG<ßáª≈∏DìŒåDÄ÷'Ú!êO|QÅ$âD
  2169. àë"†H†&DLí1íLÄ÷&Ú ê‰HÄ@QÅ$â@zèë"£»°‰D-0°-’&Ú êB@Ä@QAâAäà"¨H¶$D-0°-’&Ú `BòÄ@QAâEë"®»§dD31í3’%Ò <@O êÒ8Ê"ß'£îD.å’È˝įČÈ˝ Ä˘Õ•)Ú˛ ˛˝¿HŸ%ÚÄ @Ä˚ ¸L0Ÿ%ÚÄ @Ä(˚¸JPŸ*Ú$y‹√§\‰√¡Ã)„âÓ0«Å    Ãwñ‰ÚN<(ËêJPŸ*Ú$Dë$dbE" í(II$AÒ"@Yâë"IêîJPŸ*Ú$Dí$`F °(Ù    ÑÑA!"C—âü"Iı†TJPŸ*Ú$Dí$`F °´    ÑdA!"LQâê"I†TIPŸ*Ú$Dë$d‚E" í 4IJA"H—â#!â`4IêŸ*Ú$DP√£\$¬ LâÀâ1‰A G1௬!‚BIŸfi˝˚’fi<˛‡˚’•Ì˛@ĸ»ÒADz˛    Äp‡Ä»Ò¬F˛˛    ÄâÄ»ÚD
  2170. Üú¿âNéàÅ·ÖÁ08q‡ÀÚEäII ôQëbÅEH#DâÀÚFRPîHÄZPü0Å% !|˘ÀÚ‰PîH`ZPꬡ%!@ÅÀÒDBIJfQëÅEÑ#DâÀÒCÇÜE‡$NéA˘‡Å·Öx8q‡ÀÔ˙@˚ Ô˙@˚ •    Ú@∏Ú@<‚ΩÚ@    AΩÚÁHú8AΩÚÒ»¢DxËΩÚ    ¯H†|D ΩÚ        H†@ÄæÚ        …¢Dƒ$ÄæÚÁFú88#Ω•••••••••••••••Ò@<˚¡Ò¿B˛¡Ò†Dz¡Ú#«ë¿Ä1nxãúpÁ¬Ú"$R ÄIëDâ"@Ä√Ú‚$S‡ÄÖDâ>@¬Ú$RÇÖDâ @¬Ú$R DIDô"@Ä√Ú «ë¿81xhúD¬Ò¸@¿Ò¸@¿•Ú‡0$ºÚ @$ ¿Ú Ä$ ¿Ú ^|%ùfis¡Ú ‡Q%I$à¡Ú ÑQ%    (H¡Ú DQ%…1(H¡Ú $— %4)#$à¡Ú 3Q|Å$”≈ì¡ÏĪÏĪ•ÚH∂ÚH@ΩÚ    H@ÄæÚ    I9fi„@æÚ    IëDê@æÚ    IHP@æÚ    Ië1HP!@æÚ    I8Q#Dê!ÄæÚH◊â£AΩ••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••ò\¬”¬”ä$˙••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••ò\¬”¬”ä$˙••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••ˇKX@ˇ ˇˇˇˇ@
  2171. ˇ·ˇ‚7^
  2172. 4H\, Palatino&e.3+ä"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@ä Introduction4⁄ä˙(‡ä The Sample ‡)3 Application
  2173. (‡ 23
  2174. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2175. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  2182. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2183. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2184.  
  2185.  
  2186.  
  2187.  
  2188.  
  2189. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˜˙ˇˇ˙ˇ˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  2190. 4Å4w?òÄ
  2191. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2192. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2193.  
  2194.  
  2195.  
  2196.  
  2197.  
  2198. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˜˙ˇ˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛¸ˇˇ
  2199. ˇ˛ˇ˛¸ˇ˛¸ˇ˝˚ˇ˛˛˛ˇ˝
  2200. ˇ˛ˇ˛
  2201. ˇ˛ˇ˛˛˛ˇ˝˜˛˛ˇ˝
  2202. ˇ˛ˇ˛
  2203. ˇ˛ˇ˛˙ˇ˜˛˝ˇ˛ˇ˙˛ˇ˚¸ˇ˛˜˛˛ˇ˝
  2204. ˇ˛ˇ˛
  2205. ˇ˛ˇ˛˛ˇˇ˝˜˛¸ˇˇ
  2206. ˇ˛ˇ˛    ¸ˇˇ˜˛˛ˇ˝
  2207. ˇ˛ˇ˛
  2208. ˇ˛ˇ˛˛˛ˇ˝˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\äh(eä[This window is designed to let the user select a syllogism and then assess the validity of °dONLNd[iäuÍ*the syllogism by apprX@°dONLNdpiÍu\)`opriately modifying the V!†°dONLNdâi\u∞)renn diagram (the fi•‡°dONLNdúi∞uı)Tve overlapping °dONLNd´väÇï(äcirù†°dONLNdÆvïǶ) >cles). The user graphs the information contained in the two prΩ†°dONLNdÏv¶ÇÓ(¶emises in the thrw °dONLNd˝vÔÇ˚)Iee °dONLNdÉäèï(åäcirù†°dONLNdÉïèπ) Ecles on the left and the information in the conclusion in the two cirM °dONLNdHÉ∫è(å∫cles on the right.°dONLNd[ïä°%(ûä$As you can see, a syllogism is an arxÄ°dONLNdï%°ò)õgument containing two pr@°dONLNdóïô°)temises and one conclusion. °dONLNd≤¢äÆ≥(´ä    These thrõ °dONLNdª¢≥Æà))0ee statements must each be of one of four specifi≥†°dONLNdÏ¢àÆÎ)’c forms, known as the °dONLNdØäª/(∏ä#statement’s mood. The four moods ar˜`°dONLNd%Ø/ªæ)•"e often designated by the letters ¿Ä°dONLNdGØæª
  2209. )èA, E, I, and O, as °dONLNdZºä»≠(≈äfollows:°dONLNdÙä"è*ZSø¿°dONLNdıè"≈) yllogisms arü†°dONLNd≈" )6e further classifiN†°dONLNd "-)Ged by fiWÄ°dONLNd-"<)!gur≤¿°dONLNd<"±)e, which determines the orfl°dONLNd8±")uder of the terms in the °dONLNdP#ä/ß(,ätwo pr÷°dONLNdV#ß/…)emises. A@°dONLNd^# /—)#A{‡°dONLNd_#—/-) syllogism is completl`°dONLNdt#./C)]ely dI@°dONLNdy#D/û)etermined by the thr—Ä°dONLNdç#û/)Zee terms involved, the °dONLNd§0ä<”(9ämoods of the thró@°dONLNd¥0”<=)Iee statements, and the fi˚Ä°dONLNdÕ0=<L)jgurV¿°dONLNd–0M<T)e.°dONLNd”BäNÛ(KäRThe user can graph the information in a syllogism by clicking in the overlapping r °dONLNd%BÛN(KÛegions °dONLNd,Oä[∞(Xä
  2210. in the cir4¿°dONLNd6O±[€)' cles. If a r `°dONLNdBO€[û)*,egion is white, nothing is known about the r¿°dONLNdnOû[Ÿ)√egion. If the r‚Ä°dONLNd}Oÿ[¸):    egion is °dONLNdÜ\äh(eäshaded, it’s known that ther5`°dONLNd¢\h_)|e is nothing in that r¿°dONLNd∏\_h±)Yegion (that is, the rñÄ°dONLNdÕ\±h˙)Region is empty). °dONLNdfiiäu®(räFinally°dONLNdÂi®u), if an X appears in the r¿°dONLNdˇiuÖ)iegion, it’s known that therM†°dONLNdiÖuÍ)te is something in that r>@°dONLNd2iÍu)eegion. g‡°dONLNd9iu)A¢Ä°dONLNd:iu) °dONLNd;väÇõ(äcorr`°dONLNd?vúÇ´)ectlÇ°dONLNdCv´Ç∏)y g @°dONLNdFvπÇ=)raphed syllogism is shown in r°dONLNdcv=ÇU)ÑFigurD¿°dONLNdhvUÇi)e 1-1U†°dONLNdmviÇn)1U†°dONLNdnvnÇp).
  2211. §Hµ4•Hµ"•H]
  2212. ˇ·ˇ‚7^    °dONLNdpöä•∫(¢ä Figure 1-11°dONLNd|öÕ“)BA0°dONLNd}ö“•Ò)     correctl¿°dONLNdÜöÚ•˝) y cć°dONLNdâö˝•/) onstructed VÜ0°dONLNdïö/•a)2 enn diagram
  2213. °dONLNdbŒä⁄ë(◊äA[‡°dONLNddŒ¶⁄˚)All philosophers arQ‡°dONLNdwŒ˚⁄,)U e logicians.°dONLNdÖfiäÍê(ÁäE[‡°dONLNdáfi¶Í˚)No philosophers ar~@°dONLNdôfi˚Í,)U e logicians.°dONLNdßÓä˙ç(˜äI[‡°dONLNd©Ó¶˙)Some philosophers ar ¿°dONLNdΩÓ˙7)` e logicians.°dONLNdÀ˛ä
  2214. ë(äO[‡°dONLNdÕ˛¶
  2215. )Some philosophers ar ¿°dONLNd·˛
  2216. H)`e not logicians.
  2217. ¥~ÖòÄ:7œHHL≥lˇˇˇˇˇˇ7œ∑ãÅ∏»ˇ¸Ä…Ä…Ä…ø˜Ôˇ¸ÛÏˇ˜Ä@Ó`˛|`¸Îø@Ôˇ¸`˛f˚Ïˇ˜Ä@Ó c««¿fc√ÊœÎø@Ôˇ¸˛f    `fdfgôòÏˇ˜Ä@Ó˛f`fcÊfôòÎø@Ôˇ¸gÊf`˝fôòÏˇ˜Ä@Óff`˝fôòÎø@Ôˇ¸F&f`˝fôòÏˇ˜Ä@Ó ÉΔf`|c„ÊôòÎø˜Ôˇ¸˘`¸Ïˇ˜ ÄÂ`Á Ä¿ÁÄ…«ˇÄ @÷Ä Ò@÷Ä <@÷ÄÄ 9√8@÷Ä0Ä  Y    àp@÷Ä0Ä @±`h‡@÷Ä Åa#êhA¿@÷Ä!¡N~h„Ä@÷ÄÄ"Åhw@÷ÅÜÄ'˚!Äh>@÷ÅÜÄ$@~h@÷Ä$ Ë@÷Ä'¯(@÷Ä @÷«ˇÄ…«ˇÄ…Ä…Ä…Ä…Ä…Ģ ¯˜x˘Ģ ¯ÄÒ˜D˘ĢP¯ÄÒįD˘ĢP¯įx˘Ģà¯ÄÒ@¯D˘Ģ¯¯ÄÒ¿¯D˘Ģà¯ÄÒ@¯D˘Ģà¯@¯x˘Ä…Ä…Ä…Ģˇ¿¸ˇ¯Ô˛˚ˇ¿˘"Ä˙>¸>¿ÒÄ˝>˘%Ä˙‡˛¿<Ò˝‡˙'Ä˙p˛8˛˛ÚÄ¿˛p˛8˙'Ä˚IJ˛p˝‡Û˝8IJ˙$Ä˚ ¸¿Ä˝Û`˝ ¸¿˚$Ä˚0¸0¸ÙÄ˝Ä0¸0˚"Ä˚`¸ ¸Ù˚¿`¸˚#ĸĸ0˚¿ı ˚0ĸ˚!ĸ˚@˚ ı˚˚˚ Ä¸ ˙¡Ä˚ı`˚ ˙¿¸ĸ˙c˙ ı¿˚˙`¸ĸ ˙˙ˆ˘†˙¸ĸ@˙˙ˆ˘@˙¸ĸÄ˙˘Ä˜˘†˙¸Ä˝˘"˘@˜˙˙¸Ä˝˘A˘ ˜˙˙¸ Ä˝˘ÄÄ˙˜ ˙˘Ä˝!Ä˝˙@˙˜@˙˘@˝!Ä˝˙`˙ ˜¿˙˘`˝!Ä˝˙ ˙˜Ä˙˘ ˝"Ä˝ ˙˙¯˘ Ä˙˝"Ä˝@˙˙¯˘@@˙˝"Ä˝@˙˙¯˘@@˙˝"Ä˝Ä˙˘Ä˘˘Ä ˙˝$IJÄ˙0˘¿˘ ˙Ä0˙˝#IJ˘ ˘@˘˙˙˝#IJ˘@˘ ˘˙˙˝#IJ˘@˘ ˘˙˙˝$IJ˘ÄÄ˙˘ ˙˘Ä˛$IJ˘ÄÄ˙˘ ˙˘Ä˛$IJ˘ÄÄ˙˘ ˙˘Ä˛%IJ˙˛@˙˘@˙˘@˛%IJ˙˛@˙˘@˙˘@˛%IJ˙˛`˙ ˘¿˙˘`˛%IJ˙˛ ˙˘Ä˙˘ ˛%IJ˙˛ ˙˘Ä˙˘ ˛%IJ˙˛ ˙˘Ä˙˘ ˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛)IJ@˙˛˙˙˘@˛@√˝˛)IJ@˙˛˙˙˘@˛@f˝˛)IJ@˙˛˙˙˘@˛@<˝˛)IJ@˙˛˙˙˘@˛@˝˛)IJ@˙˛˙˙˘@˛@<˝˛)IJ@˙˛˙˙˘@˛@f˝˛)IJ@˙˛˙˙˘@˛@√˝˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙ˇ‡˙˙˘ ˛Ä˙˛&IJ ˙˙™ø˙˙˘ ˛Ä˙˛&IJ ˙˛U˙˙˘ ˛Ä˙˛%IJ˙:˛™º˙˘Ä˙˘ ˛'IJ˚◊˛UcÄ˚˘Ä˙˘ ˛&IJ˚˝™†`˚˘Ä˙˘ ˛'IJ˚W˛U`˚ ˘¿˙˘`˛'IJ˚:´˛™¿ ˚˘@˙˘@˛&IJ˚’˝U@˚˘@˙˘@˛'IJ¸¸™Äĸ˘ ˙˘Ä˛)IJ¸UU’UUÄ`¸˘ ˙˘Ä˛'IJ¸¸™Ä0¸˘ ˙˘Ä˛'IJ¸¸U¸ ˘˙˙˝)IJ¸*™™Í™´¸ ˘˙˙˝(IJ¸˛UuUV¸@˘˙˙˝)IJÄ˝˛™∫™Æ¸¿˘ ˙Ä0˙˝(ĽIJ¸UT˛Ä˝Ä˘˘Ä ˙˝(Ä˝@˛¸™®˛@˛¯˘@@˙˝*Ä˝@˛˛U]UX˛ ˛¯˘@@˙˝*Ä˝ ˛˛™Æ™∞˛0˛¯˘ Ä˙˝)Ä˝˛˛UWU`˛˛˜Ä˙˘ ˝)Ä˝˛˛™´™‡0¿˛ ˜¿˙˘`˝'Ä˝˛5¸U@IJ˜@˙˘@˝'Ä˝˛*¸™Ä˛˜ ˙˘Ä˝%Ä˝˛˚U˛ ˜˙˙¸'Ä˝˛Í¸™˛@˜˙˙¸&ĸÄ’˝UTÄ˛Ä˜˘†˙¸$ĸ@¸™®0¿Äˆ˘@˙¸"ĸ ¸UT¸Äˆ˘†˙¸#ĸ¸™„¸@ ı¿˚˙`¸$ĸ ¸U¡Ä˝@ı`˚ ˙¿¸%ĸ˝™´@˝@ ı˚˚˚&ĸÄ˝UV0˝ ¿ı ˚0ĸ˚$Ä˚`˝™∏ ˝ Ù˚¿`¸˚&Ä˚0˝Up˝0ÙÄ˝Ä0¸0˚&Ä˚
  2218. ˝™¿IJÛ`˝ ¸¿˚(Ä˚ç˛UW˛p˛‡Û˝8IJ˙'Ä˙z˛™∏˛˛ÚÄ¿˛p˛8˙%Ä˙˛U‡˛¿<Ò˝‡˙"Ä˙˙™æ¸>»ÒÄ˝>˘Ä˙ˇ¿¸ˇ¯˛˚ˇ¿˘Ä˙ˆ›Ä˙ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ ˆ0›Ä˙ˆ ›Ä˙ˆ ›Ä˙ˆ@›Ä˙ˆ@›Ä˙ˆ@›Ä˙ˆÄ›Ä˙ˆÄ›Ä˘Ä¯‹Ģ¿¯‹Ģ@¯‹Ģ ¯‹Ģ ¯‹Ģ¯‹Ģ¯‹Ģ ¯0‹Ģ¯ ‹Ģ¯@‹Ģ¯Ä‹įÄ˙€į@˙€į ˙€į˙€į ˙0€į˙`€į˙Ä€Ę¿¸⁄Ę0¸ ⁄ʸ⁄ʸ`⁄Ę¿˛Ä⁄Ĉ8˛ŸĈ˛Ÿ Äı¯ÿ Äıˇ‡ÿÄ…Ä…Ä…
  2219. ÄÙ8◊
  2220. ÄÙD◊
  2221. ÄÙ@◊
  2222. ÄÙ@◊
  2223. ÄÙ@◊
  2224. ÄÙ@◊
  2225. ÄÙD◊
  2226. ÄÙ8◊Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…ÄÊ˙ÄÄŸÄ˘ÅÄÄŸÄ>fl˛√èÄŸÄffqò˛Á˛ôÄŸÄΔffaò˛}˛ôÄŸÄffa¯˛9˛ôÄŸÄffaIJ˛ôÄŸÄffaà˛˛ôÄŸÄ>>`˛èÄŸ
  2227. IJÕ
  2228. IJFÕ
  2229. IJ<ÕÄ…Ä˙ˇ˚ˇ¸⁄ġ‡@Ä@ˇˇ⁄ġ‡@Ä@ˇˇ⁄Äœ‡CÄ¡A‡¯?⁄ Äè·@`Å¡C0˘ˇÑbIJ„ Äœ‡@¿Ç¡C0˘ˇÑb@˛„ Äœ‡A‡Ñ¡C0˘ˇÑR8qsÄ(„ Äœ‡0@0à¡C¯ÑRDâÑ@(„ Äœ‡`@0è·C0˘ˇÑJDy@D„ Äœ‡¿@0Ä¡C0˘ˇÑJDâ¿D„ Äœ·ÄB0Ä¡C0˘ˇÑFDⲄ Äœ·¯A‡Ä¡C0¯?FD@â@Ç„!ġ‡@Ä@ˇˇB8ÄyÄÇ@‰Äˇ‡@Ä@ˇˇ⁄ġ‡@Ä@ˇˇ⁄Ä˙ˇ˚ˇ¸⁄Ä…Ä…Ä…Ä…į˚ˇ¸⁄į@ġ˛⁄į@ġ˛⁄įA‡á¡¸˛⁄į    C0ܸ˛Ñ<˛‡˛Âį    C0ܸ˛ÑB˛˛!ÂįC0ܸ˛Ñ@8≥\‡ ÂįCáŸ˛Ñ@DÃë‡"a ÂįC0ܸ˛Ñ<DàëA ÂįC0ܸ˛ÑDàü"A ÂįC0ܸ˛ÑDàê"A ÂįC0ᡸ˛BDàë"A!Âį@ġ˛<8àé‡@‡ Êį@ġ˛⁄į@ġ˛⁄į˚ˇ¸⁄Ä…Ä… Ä‹ˇÄ…į˚ˇ¸⁄į@ġ¸⁄į@ġ¸⁄įA‡á¡¸⁄į    C0ÜÊ|<˛‡¸@Ëį    C0ÜÊ|B˛¸@ËįC0ÜÊ|@8≥\‡,8‡
  2230. ËįCáÅÊ|@DÃë‡"a2D@
  2231. ËįC0ÜÊ|<DàëA"D@ËįC0ÜÊ|Dàü"A"D@ˠįC0ÜÊ|Dàê"A"D@?ÄȠįC0á¡¸BDàë"A"D@ ÄȠį@ġ¸<8àé‡@‡"80 êÈį@ġ¸⁄į@ġ¸⁄į˚ˇ¸⁄Ä…Ä…Ä…Ä…Ä…Ä…Ä…«ˇ»ˇˇ#ä@ˇ ˇˇˇˇ@
  2232. ˇ·ˇ‚7^
  2233. 4*\¯, Palatino&e.3+l"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@l Introduction4⁄*˙¯
  2234. (‡*24    )BConventions for Sample Code4^*¿¯
  2235. °dONLNd\lhÇ(elAt th`°dONLNd\Éh‹)e top of the windowU¿°dONLNd\€hB)X, just below the title barÚÄ°dONLNd2\AhN)f, ar∑Ä°dONLNd6\OhÜ)e a set of too¿‡°dONLNdD\Ühé)7l i†°dONLNdG\èhÂ)    cons and an empty °dONLNdYiluë(rl    status ar ‡°dONLNdbiëu¡)% ea. The too˝†°dONLNdmi¡u…)0l iN`°dONLNdpi uÓ)    Acons allow the user to perform various operations on the diagram °dONLNd±vlÇ+(l(without having to move out of the window∑†°dONLNdŸv*Ç)æ0. For instance, clicking the tool in the middle °dONLNd    Élè”(ål(the eraser) clears the V@°dONLNd"É”èÎ)g=enn diagram. These same operations can also be invoked using °dONLNd_êlúÉ(ôlthe V˘¿°dONLNddêÇúÍ)enn menu, as shown in @°dONLNdzêÎú)iFigurR°dONLNdêú)e 1-12ÔÄ°dONLNdÖêú).
  2236. æ*œ¯4ø*œ¯"ø*]
  2237. ˇ·ˇ‚7^    °dONLNdá¥løú(ºl Figure 1-12°dONLNdì¥ÆøΔ)BThe VP°dONLNdò¥ΔøÓ)enn menu
  2238. °dONLNd°AlMÜ(JlThe Vÿ °dONLNd¶AÖM˛)enn Diagrammer applicatioµ†°dONLNdøAˇM1)z n displays ig °dONLNdÀA2M’)3$nformation in the window’s status ar`°dONLNdÔA÷Mˆ)§ea. For °dONLNd˜NlZŸ(Wlexample, if the user click‘¿°dONLNdNŸZ‚)ms t‘ °dONLNdN„ZH)
  2239. he leftmost tool icon (o˛‡°dONLNd,NHZv)e r chooses t§ °dONLNd7NwZÑ)/he `¿°dONLNd:NÑZ´)Assess V≤¿°dONLNdBN™ZÂ)&alidity menu °dONLNdO[lgc(dl5command), the application determines whether the curr©¿°dONLNdÑ[cg‡)˜ently displayed syllogism is °dONLNd°hlt%(ql/valid or invalid. If it’s valid, the applicatio~`°dONLNd–h&tY)∫ n displays t⇰dONLNd‹hYtØ)3he message “The arñ°dONLNdÓhØt›)V
  2240. gument is °dONLNd¯ulÅÕ(~lvalid.” in the status arÙ¿°dONLNduÕÅ)aea; otherwiseI‡°dONLNduÅ
  2241. );,…‡°dONLNdu
  2242. Å) i2@°dONLNd uÅ@) t displays tÆ¿°dONLNd,u@Åñ)0he message “The ar∫‡°dONLNd>uñÅÎ)Vgument is invalid.”
  2243. à*£¯4â*£¯
  2244. ≥*ª¯4¥*ª¯ µ*µ˛
  2245. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdR†*≥(Æ*Conventions for Sample CodeˇˇˇˇˇˇU˛(Æ1
  2246. °dONLNdnƒl–¬(ÕlThe sample code pr °dONLNdă√–Ù)W esented thr5@°dONLNdãƒÙ–fi)13oughout this book follows a number of conventions tS°dONLNdæƒfi–Â)Ío °dONLNd¿—l›á(⁄lhelp y†°dONLNdΔ—à›ç)oä °dONLNd«—ç›õ)u u`°dONLNd —ú›    )nderstand the code and t@°dONLNd‚—
  2247. ›K)no distinguish aF°dONLNdÒ—K›ã)Application-defiB‡°dONLNd—団)Aned r>†°dONLNd—£›Õ)
  2248. outines frV‡°dONLNd—Õ››)*om °dONLNdfilÍÆ(Álsystem softwarM‡°dONLNd fiØÍ∫)Ce r\Ä°dONLNd#fi∫Íß) 7outines. For the most part, the sample code listings pr;@°dONLNdZfißÍÀ)Ìesented °dONLNdbÎl˜y(ÙlthrX¿°dONLNdeÎy˜±) oughout the “@°dONLNdqα˜ˆ)8Inside Macintosh¥@°dONLNdÅΘ˜ )F1 suite of books follow these conventions as well.,Zapf Dingbats°dONLNd≥lq(ln
  2249. .°dONLNdµ˛x
  2250. ∏) Constants defi°dONLNd√˛∏
  2251. Ò)@ ned by the Vd@°dONLNdœ˛
  2252. –)8/enn Diagrammer application begin with the letted@°dONLNd˛˛–
  2253. ÷)‡r ,
  2254. Courierd@°dONLNd˛÷
  2255. ‹)kd@°dONLNd˛‹
  2256. fl).d@°dONLNd˛fl
  2257. Ú) For .°dONLNd
  2258. x(x#example, the number of tools in a V∫`°dONLNd*
  2259. ú)úenn diagram window is specifi °dONLNdG
  2260. ù)âed by the constant .°dONLNdZx"Æ(x    kNumTools°dONLNdcÆ"…)6. TherR`°dONLNdi…"⁄)e ar$¿°dONLNdm⁄" )
  2261. e, howeverg`°dONLNdw "â)1, several exceptions to this rS`°dONLNdïâ"ö)~ule:.°dONLNdö(x0}(.xn
  2262. ˇˇÕ÷.°dONLNdú%Ñ1Ê) Constants specifying rÓ °dONLNd≤%Ê1˝)besour¿l°dONLNd∑%˝1t)ce IDs begin with the lette≈ö°dONLNd“%t1y)wr ˇˇiÇìp°dONLNd‘%z1Ä)rˇˇÕ÷÷°dONLNd’%1Ç).÷°dONLNd÷%Ç1÷) For example, the rfl»°dONLNdÈ%÷1Ì)Tesour≤(°dONLNdÓ%Ì1˜)ce °dONLNdÒ1Ñ=(:ÑID of the menu bar is specifi°dONLNd1=)}e°dONLNd1=)d by t°dONLNd1=T) he constant °dONLNd!1T=Ñ)5rMenuBar¬†°dONLNd)1É=Ü)/..°dONLNd+CxK}(Ixn
  2263. .°dONLNd-@ÑL) Constants specifying menu rR`°dONLNdH@L)|esour$¿°dONLNdM@Lè)ce IDs begin with the lette$¿°dONLNdh@èLï)xr $¿°dONLNdj@ïLõ)m$¿°dONLNdk@õLû).$¿°dONLNdl@ûLÔ) For example, the °dONLNd~LÑXà(UÑrR`°dONLNdLàXü)esour$¿°dONLNdÑLüX+) ce ID of the File menu is specifi$¿°dONLNd•L+X0)åe$¿°dONLNd¶L0XI)d by t$¿°dONLNd¨LIX~) he constant $¿°dONLNd∏L~Xú)5mFile$¿°dONLNdΩLúXü)..°dONLNdø^xf}(dxn
  2264. .°dONLNd¡[Ñgá) 7Constants specifying menu commands begin with the lette°dONLNd¯[ágç(dár °dONLNd˙[çgì)i°dONLNd˚[ìgñ).°dONLNd¸[ñgÁ) For example, the °dONLNdgÑsy(pÑ5number of the Quit command in the File menu is specifi°dONLNdDgys~)ıe°dONLNdEg~só)d by t°dONLNdKgósÃ) he constant °dONLNdWgÃsÍ)5iQuit°dONLNd\gÍsÌ)..°dONLNd^yxÅ}(xn
  2265. °dONLNd`vÑÇ‘) KConstants specifying messages displayed to the user in a window’s status ar @°dONLNd´v’Ç·(’ea .°dONLNdÆÇÑéfl(ãÑbegin with the lette°dONLNd¬ÇfléÂ)[r °dONLNdƒÇÂéÎ)e°dONLNd≈ÇÎéÓ).°dONLNdΔÇÓéâ)! For example, the message “The arR`°dONLNdÁÇâé„)õgument is valid.” is °dONLNd¸éÑö¢(óÑspecifi°dONLNdé¢öß)e°dONLNdéßö¿)d by t°dONLNd
  2266. é¿öı) he constant °dONLNdéıö7)5 eArgIsValid°dONLNd!é7ö:)B.
  2267. Œb*¯òÄÖëHHL≥,ˇˇˇˇˇˇÖë—m'À˚ˇ¿Ù˚ˇ¿Ù˚ˇ¿Ù˚ˇ¿Ù    ˇÃ˝ˇ¿Ù    ˇÃ˝ˇ¿Ù
  2268. ˇÃ·¡¡ˇ¿Ù    ˇ˝Ãˇ¿Ù    ˇ˝Ãˇ¿Ù
  2269. ˇÃ¿ÃÃˇ¿Ù
  2270. ˇÃœÃÃˇ¿Ù
  2271. ˇÕŒÃÃˇ¿Ù
  2272. ˇ√·ÃÃˇ¿Ù˚ˇ¿Ù˚ˇ¿Ù˚ˇ¿Ù˚ˇ¿Ù˚ˇ¿ÙÔˇÄÒ@ÄÒ¿ÄÒ‡Äx¿Ģc¡‡ă¿ĢîôŇÄ¿¯xqò˘îõ‡Ä¿ÃÃ…∞˘‡Ä¿Ãᇢ‡Ŀø¡¿˘‡Ŀÿ¡‡˘îõ‡ăÃ…∞˘îôŇÄxÃxqò˘c¡‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄqIJ‡¿˛c‡
  2273. Ä…Äê˝îòŇÄ¡ÒôÅÅ„3<«èÄîò‡Ä·˛ôÅ√33Ãÿ‡Äq˛ôÄ„33ÃÿŇÄ9˛ôÄs33ÃÿŇIJôIJ3    ÃÿîôŇÄ˝ô˛3    ÃÿîôŇÄqòÒ˛·„ «å¿c‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡Äx¿ˆc‡ă¿ˆîôŇÄ¿«áçĢîôŇĿûŒ¯ŇĿëï‡Ä¿œÃïŇĿà ïîôŇăÃLïîôŇÄx«áïc‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡Äx` Ä Ä¿˛‡ ă`0Ä @˝‡Ä¿x8èûè<œá«‡ Ä¿Ã`<ôôå Δ˛ÃćċÃ`.ôôååΔÃÃŒ‡Äø`'üè œΔÃë‡Äÿ`#òåÃÃÃ√ćÄÃ`!òôåÃFÃÅćÄxx0 èÜáÉ Ã««‡
  2274. ÄÛ¿‡ ÄÙ¿‡ ÄÙćÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡Äx¸ÃÃ Δ˝‡Äøÿ ˝‡ÄÃp··√ÄÃxÃ|œ3˛‡ÄÃ…ì3&@ÃåÃÃΔ3˛‡ĸ·√3áÃ|ÃÃΔ3˛‡ÄÃp„Ò√Ä˝ÃΔ3˛‡ÄÃ8s·¿˝ÃΔ3˛‡ÄÃô3d¿»˛ÃΔ3˛‡ÄÃp··√Ä|Ã|√˛‡ Äı˛‡ Äı#˛‡ Äı˛‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡’U‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡į‡¯cŇÄÃįîôŇ Äß„«çû><8˛îôŇ ÄÄ1åŒ332fd˛Ň į√1åÃ330fp˛‡ Ä¿√ÒèÃ?30~8˛‡ Ä¿√å 030`˛î܇Ŀ√åL132bLf`î܇Ŀ¡·áå3<8f`c‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡Ôˇ‡ˇ‡ˇ:2@ˇ ˇˇˇˇ@
  2275. ˇ·ˇ‚7^
  2276. 4H\, Palatino&e.3+ä"CHAPTER ”)>1,     Helvetica    ˇˇ—ÚˇÆ(@ä Introduction4⁄ä˙(‡äConventions for Sample Code
  2277. (‡ 25
  2278. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2279. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2280.  
  2281.  
  2282.  
  2283.  
  2284.  
  2285. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  2286. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2287. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˜˙ˇˇ˙ˇ˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  2294. 4Å4w?òÄ
  2295. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2296. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˜˙ˇ˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛¸ˇˇ
  2303. ˇ˛ˇ˛¸ˇ˛¸ˇ˝˚ˇ˛˛˛ˇ˝
  2304. ˇ˛ˇ˛
  2305. ˇ˛ˇ˛˛˛ˇ˝˜˛˛ˇ˝
  2306. ˇ˛ˇ˛
  2307. ˇ˛ˇ˛˙ˇ˜˛˝ˇ˛ˇ˙˛ˇ˚¸ˇ˛˜˛˛ˇ˝
  2308. ˇ˛ˇ˛
  2309. ˇ˛ˇ˛˛ˇˇ˝˜˛¸ˇˇ
  2310. ˇ˛ˇ˛    ¸ˇˇ˜˛˛ˇ˝
  2311. ˇ˛ˇ˛
  2312. ˇ˛ˇ˛˛˛ˇ˝˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,Zapf Dingbats°dONLNd_äfè(eän
  2313. ˇˇ.°dONLNd\ñhª) @Application global variables have names beginning with the lette°dONLNdB\ªh¿(eªr ,
  2314. Courierˇ˝°dONLNdD\¿hΔ)gˇˇ°dONLNdE\Δh…).°dONLNdF\…h) For example, the .°dONLNdXhñt (qñXglobal variable that indicates whether the user wants to quit the application is called .°dONLNd∞tñÄ¥* gDone°dONLNdµt¥Äœ). TherR`°dONLNdªtœÄ‡)e ar$¿°dONLNdøt‡ÄH)e no exceptions to this r¿°dONLNdÿtHÄY)hule..°dONLNd›âäêè(èän
  2315. .°dONLNdflÜñí‰) Application-defi°dONLNdÔ܉í˙)Nned rR`°dONLNdÙÜ˙íö)"outines have names beginning with R`°dONLNdÜöíπ)†either R`°dONLNdÜπí’)the pr$¿°dONLNd#Ü’í·)efi$¿°dONLNd&Ü·íË) x $¿°dONLNd(ÜËíÙ)Do$¿°dONLNd*ÜÙí)  or the °dONLNd2íñû†(õñprR`°dONLNd4í†û¨)
  2316. efiR`°dONLNd7í¨û≥) x R`°dONLNd9í≥ûø)My6†°dONLNd;íæû¡) .6†°dONLNd<í¡û) For example, the r    °dONLNdOíûÏ)U.outine that handles window updating is called °dONLNd}ûñ™Δ(ßñDoUpdate°dONLNdÖûΔ™À)0. °dONLNdáûÀ™˘)    Similarlyd@°dONLNdêû¯™)-, the r6†°dONLNdóû™L)outine that r    °dONLNd§ûL™‡)9!eturns a random number is called     °dONLNd≈û‡™)îMyRandom    °dONLNdÕû™)0. .°dONLNdœ™ñ∂™(≥ñTher¿°dONLNd”™´∂”)
  2317. e is one eI‡°dONLNd›™”∂Û)(xceptioN¿°dONLNd‰™Û∂˛) n t‚Ä°dONLNdÁ™˛∂) o this ro¿°dONLNdÔ™∂-)ule:°dONLNdÙºñƒõ(¬ñn
  2318. °dONLNdˆπ¢≈Í) Application-defiD °dONLNdπÎ≈)Ined r?‡°dONLNd π≈<)outines that r⁄`°dONLNdπ<≈):*eturn Boolean values have names beginning ˇˇJX.°dONLNdC≈¢—’(Œ¢ with the prÁ°dONLNdN≈’—·)3efiÁ°dONLNdQ≈·—Á) x ˇ˝fl1h°dONLNdS≈Ë—Ù)IsˇˇJX1h°dONLNdU≈Ù—˜) .1h°dONLNdV≈˜—I) For example, the r-(°dONLNdi≈I—)R-outine that determines whether a window is a °dONLNdñ—¢›¸(⁄¢dialog box is called °dONLNd´—¸›P)ZIsDialogWindowï°dONLNdπ—O›æ)S. Several system softwarg`°dONLNd——æ›…)oe r9¿°dONLNd‘—…›) outines have .°dONLNd·›¢È¿(Ê¢similar °dONLNdË›¡È¥)5-sounding names. (For instance, the Dialog Manager pr◊@°dONLNd›¥È‰)Û ovides the .°dONLNd(È¢ı(Ú¢IsDialogEvent°dONLNd5Èıˆ)N rR`°dONLNd7Ȉı)outine.R`°dONLNd>Èı)).°dONLNd@˛äè(än
  2319. °dONLNdB˚ñù) AG@°dONLNdC˚ûfi)pplication-defiD °dONLNdR˚fl)A ned data str∑°dONLNd^˚*)4uctur<‡°dONLNdc˚+˚)-es and types have names beginning with the pr§ °dONLNdê˚˚)–efizÄ°dONLNdì˚) x .°dONLNdïñ¢(ñMyd@°dONLNdó°§) .d@°dONLNdò§) For example, the strP@°dONLNd≠)]uctur"†°dONLNd≤)4e that holds information about a document window is °dONLNdÊñµ(ñcalled °dONLNd̵Â)MyDocRec°dONLNdıÂÍ)0. !†°dONLNd˜ÍÚ)Aï°dONLNd¯Ò-) pointer to a rg`°dONLNd-?)<ecor9¿°dONLNd ?i)
  2320. d of type 9¿°dONLNdiô)*MyDocRec9¿°dONLNdô«)0  is of type 9¿°dONLNd)«    ). MyDocRecPtr|`°dONLNd4 )A..°dONLNd6(ä/è(.än
  2321. ˇˇ ê.°dONLNd8%ñ1‚) GRoutine parameters and local variables have names beginning with the pr<°dONLNd%„1Ô(.„efi<°dONLNdÇ%Ô1ı) x ˇˇ_∞ê°dONLNdÑ%ˆ1)myˇˇ êÍ–°dONLNdÜ%1)
  2322. .Í–°dONLNdá%1) For .°dONLNdå1ñ=˚(:ñexample, many of the r†°dONLNd¢1¸=A)foutines in the VÕÄ°dONLNd≤1@=Δ)Denn Diagrammer application r¡`°dONLNdŒ1Δ=›)Üequirÿ†°dONLNd”1›=) e a window .°dONLNdfi=ñI¿(FñCpointer as one of the parameters; this parameter is usually called °dONLNd!=¿I(F¿myWindowï°dONLNd)=ÔI )/. This .°dONLNd0IñU(Rñconvention has, howeverÖ°dONLNdGIUV)n, many exceptions.
  2323. bHp4cHp°dONLNdZcäk©(iäIMPORTÄ°dONLNd`c©kπ)ANT
  2324. ˇ·ˇ‚7^
  2325. °dONLNddnäz (wäThese naming conventions ar†°dONLNdn zØ)Ç$e adopted in this book (and elsewherF†°dONLNd£nØz¡)£e in °dONLNd®zäÜœ(ÉäInside Macintoshb°dONLNd∏z–Ü)F) solely for r퇰dONLNdΔzÜï)5!easons of consistency and clarity≥Ä°dONLNdÁzîܱ)è. They °dONLNdÓÜäí;(èä(might not be suitable for your purposes.S¿°dONLNdâAëG)∑s
  2326. °dONLNd!óä£:(†ä'It’s worth mentioning in advance that V°dONLNdHó:£Ô)∞&enn Diagrammer takes a minimalist apprŒ†°dONLNdnóÔ£)µoach to °dONLNdv§ä∞ñ(≠äerr@°dONLNdy§ó∞†)or;¿°dONLNd{§†∞6)    %-handling: it tries to detect any errã¿°dONLNd†§6∞¨)ñors that might adversely af‡°dONLNdª§≠∞Ì)wfect its further °dONLNdñäΩì(∫äprG °dONLNdŒ±îΩ˝)
  2327. ocessing and to work arq†°dONLNd±˝Ω=)iound those errÏÄ°dONLNdÛ±=Ω˝)@,ors in such a way as to avoid those adverse °dONLNdæä í(«äefo‡°dONLNd!æí ∞)Gfects. In fact, this strategy is far too simple for most applications. ö†°dONLNdhæ∞ ∂(«∞Y[ °dONLNdiæ∂ ¸)our application °dONLNdyÀä◊µ(‘ä    should prV@°dONLNdÇÀµ◊Ò)+ovide far morî¿°dONLNdèÀÒ◊0)<e extensive errDÄ°dONLNdûÀ1◊)@or detection and r≤°dONLNd∞À◊’)Neporting to the user…`°dONLNdƒÀ’◊Î)V. See °dONLNd ÿ䉅(·ä“Handling ErrC °dONLNd◊ÿ ‰3)@ors” beginning on page >`°dONLNdÓÿ4‰C)j176>`°dONLNdÒÿC‰T) for ˙`°dONLNdˆÿT‰m)some  Ä°dONLNd˚ÿn‰ÿ)further discussion of errÄ°dONLNdÿŸ‰‚)korO°dONLNdÿ‚‰)    
  2328. -handling °dONLNd ÂäÒº(Óä techniques.ˇJ@ˇ ˇˇˇˇ@
  2329. ˇ·ˇ‚7^
  2330. 4^*¿¯ˇ¨@ˇ ˇˇˇˇ@
  2331. ˇ·ˇ‚7^
  2332. 4⁄∫˙,     Helvetica    .(‡∫Contents, Palatino
  2333. (‡ 27    3, Ã(#∫CHAPTER ßí)h2
  2334. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2335. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2336.  
  2337.  
  2338.  
  2339.  
  2340.  
  2341. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  2342. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2343. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2344.  
  2345.  
  2346.  
  2347.  
  2348.  
  2349. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜ ˇˇ˛ˇˇ ˛ˇˇˇ     ˇˇˇˇ
  2350. ˇ˝ˇ ˇ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜ˇˇˇˇˇˇ(JH
  2351. Figure 2-0*     Listing 2-0*    T)able 2-0
  2352. zH,
  2353. 4zH, H°dONLNd∫*˘+m Contentsˇˇˇˇˇˇ
  2354. ˇ·ˇ‚7^ˇˇ∫Ρ◊(qH2°dONLNd]∫y“)rMƒK°dONLNd]”y)emory
  2355. °dONLNd;∫G˛(D∫ About Memory°dONLNd;G)Y29°dONLNd!HƒT(QƒThe System HeapD¿°dONLNd2H&T0)b31°dONLNd5Uƒa (^ƒThe System Global Vc¿°dONLNdHU aB)\ariablesµ`°dONLNdRUVa`)631°dONLNdUb∫n(k∫Application PartitionsS¿°dONLNdmb0n:)v32°dONLNdpoƒ{◊(xƒThe ]`°dONLNdto◊{%)Application Stack›°dONLNdáo9{C)b33°dONLNdä|ƒà◊(ÖƒThe ]`°dONLNdé|◊à&)Application Heapx†°dONLNd†|:àD)c34°dONLNd£âƒï◊(íƒThe ]`°dONLNdßâ◊ï5)Application Global Vó†°dONLNdªâ4ïl)]ariables and x°dONLNd»âlïÖ)8A5 W‘@°dONLNdÃâÑïñ)orld@Ä°dONLNd“â´ïµ)'37°dONLNd’ñ∫¢ˇ(ü∫Memory Blocks¿ °dONLNd‰ñ¢)Y38°dONLNdÁ£ƒØ€(¨ƒNonr⁄¿°dONLNdΣ€Ø&)elocatable Blocks$Ä°dONLNd˛£;ØE)`39°dONLNd∞ƒº(πƒRelocatable Blocksw¿°dONLNd∞*º4)f40°dONLNdΩƒ…Ä(Δƒ(Locking and Unlocking Relocatable Blocks˝ °dONLNdBΩî…û)–42°dONLNdE ƒ÷‘(”ƒPurU¿°dONLNdH ‘÷à)(ging and Reallocating Relocatable BlocksL°dONLNdr ù÷ß)…43°dONLNdu◊∫„◊(‡∫Data T:`°dONLNd{◊◊„Î)ypes“@°dONLNdÅ◊ˇ„    )(44°dONLNdщƒ#(̃Pointers and Handles °dONLNdö‰8B)t44°dONLNdùÒƒ˝‚(˙ƒStringsz†°dONLNd¶Ò˜˝)345°dONLNd©˛ƒ
  2356. Õ(ƒPrN†°dONLNd´˛Œ
  2357. Ï)
  2358. ocedur‡°dONLNd±˛Ï
  2359. )
  2360. e Pointers§°dONLNdΩ˛,
  2361. 6)@46°dONLNd¿ ƒ (ƒT∫¿°dONLNd¡ …Ò)ype Coer∞¿°dONLNd… Ò)(cionP@°dONLNdœ ")'47ˇJ@ˇ ˇˇˇˇ@
  2362. ˇ·ˇ‚7^
  2363. 4^*¿¯ˇ5 @ˇ ˇˇˇˇ@
  2364. ˇ·ˇ‚7^, Palatino&e.3+ä"CHAPTER ”)>2
  2365. 4⁄ä˙,     Helvetica    (‡ä About Memory
  2366. (‡ 29
  2367. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2368. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2369.  
  2370.  
  2371.  
  2372.  
  2373.  
  2374. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  2375. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2376. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜ ˇˇ˛ˇˇ ˛ˇˇˇ     ˇˇˇˇ
  2383. ˇ˝ˇ ˇ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  2384. 4€4—?òÄ
  2385. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2386. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2387.  
  2388.  
  2389.  
  2390.  
  2391.  
  2392. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  2393. ˛ˇˇˇˇ
  2394. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˙ˇˇ˛˝ˇ˛˙ˇˇ˙ˇˇ˛˝ˇ˛˜˜˝˛ˇ˛
  2395. ˛ˇ˛ˇˇ
  2396. ˛ˇ˛ˇˇ˝˛ˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˚ˇˇˇ    ˇˇˇ˝ˇˇ˚˝ˇˇ˝˚ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜    ˇˇ—ÚˇÆ°dONLNdˇˇ(@äM–¢°dONLNdˇˇ)emoryˇˇˇˇˇˇ≠>(@2
  2397. °dONLNd\ähò(eäThiZÄ°dONLNd\ôh…) s chapter p‹°dONLNd\…hÃ)0r°°dONLNd\Õh)ovides a brief intrà¿°dONLNd"\hÚ)N+oduction to memory management on Macintosh °dONLNdMiäu (räcomputers. It describes the or≥@°dONLNdki u)Ç7ganization of the partition of memory assigned to your °dONLNd¢väÇ(äXapplication when it is launched and explains the basic data types used by the Macintosh °dONLNd˙Éäèê*Tµ¿°dONLNd˚Éèè)Noolbox and Operating System. This chapter also describes how you can allocate °dONLNdIêäúM(ôä,portions of that memory partition for specifi‹Ä°dONLNdvêMú )√&c purposes and how the Memory Manager °dONLNdúùä©(¶ähelps to maintain an orê °dONLNd≥ù©2)fderly partition.°dONLNdƒØäªÕ(∏äThis chapter pr°°dONLNd”ØÕª)CEovides only the minimum information about memory that you’ll need to °dONLNdºä»”(≈äunderstand the r?`°dONLNd(º‘»V)Jest of this book and to begin r¿°dONLNdGºW»ë)Éeading other ÑÄ°dONLNdTºë»÷):Inside MacintoshfÄ°dONLNddº◊»)F books. For a °dONLNdr…ä’ú(“ämoréÄ°dONLNdu…ú’˘)Ne detailed description of basic memory management strategies, see the chapter °dONLNd√÷ä‚ü(flä“Intr∑@°dONLNd»÷ü‚r)+oduction to Memory Management” in the book ] °dONLNdÛ÷s‚‡)‘Inside Macintosh: MemoryO¿°dONLNd ÷‡‚‚)m.
  2398. ÈH4ÍH
  2399. H4H H
  2400. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdH∏(H About MemoryˇˇˇˇˇˇU˛(2
  2401. °dONLNd%ä1.(.ä%In the cooperative multitasking enviru¿°dONLNd?%.1\)§    onment prµ °dONLNdH%\1¸)."ovided by the Macintosh Operating °dONLNdj2ä>(;äUSystem, your application can use only part of the total amount of RAM available on a °dONLNdø?äK¥*computerÑ@°dONLNd«?¥KA)* . Some of the available RAM is r`°dONLNdÁ?BK)é0eserved for use by the Operating System itself, °dONLNdLäX±(Uä    and the rÄ°dONLNd L≤Xi)((emainder of the available memory is shar˜‡°dONLNdHLhXÙ)∂ed among all open applications.°dONLNdh^äjÊ(gäMWhen the Operating System starts up, it divides the available RAM into two br˚@°dONLNdµ^Êj˘(gÊoad °dONLNdπkäwø(täsections. It rã`°dONLNd«køw4)5eserves for itself a zone or ù`°dONLNd‰k4w[)u    partitionó °dONLNdÌk\wœ)( of memory known as the ‚ °dONLNdkœwÒ)ssystem °dONLNd xäÑ¥(Åä
  2402. partition.˘¿°dONLNdx¥Ñ§)*6 The system partition always begins at the lowest addr¨Ä°dONLNdLx•Ñ)Òessable byte of memory °dONLNdcÖäë (éä (memory addrπ@°dONLNdoÖ ë9)@ess 0) and extends upwarãÄ°dONLNdáÖ:ëö)pd. The system partitio ‡°dONLNdùÖõë)an consists of two main °dONLNd¥íäû¢(õäparts:,Zapf Dingbats°dONLNdª®äØè*n
  2403. °dONLNdΩ•ñ±õ) a°dONLNdæ•õ±Œ)  system hea °dONLNd…•œ±’)4p°dONLNdÀ∫ä¡è(¿än
  2404. °dONLNdÕ∑ñ√õ) a°dONLNdŒ∑õ√˘) set of global variable™@°dONLNdÂ∑˘√˝)^s°dONLNdÁ»ä‘(—äYIn general, the memory in the system partition is for use by the Operating System alone. °dONLNd@’ä·ê*Y@Ä°dONLNdA’ê·‡)our application pr-¿°dONLNdS’‡·C)Pobably won’t need to rŒ¿°dONLNdi’C·¥)cead or write that memory˝Ä°dONLNdÅ’≥·µ)p.°dONLNdÉÁäÛë(äAG@°dONLNdÑÁíÛ)Vll memory outside the system partition is available for allocation to applications or °dONLNd⁄Ùä≈(˝äother softwar™@°dONLNdÁÙ≈´);3e components. In the cooperative multitasking envir¿°dONLNdÙ¨
  2405. )Áonment, the user can °dONLNd/ä(
  2406. äXhave multiple applications open at once. When an application is launched, the Operating °dONLNdáä *YSystem assigns it a section of memory known as its application partition. In general, an °dONLNd‡ä'‹*Lapplication uses only the memory contained in its own application partition.°dONLNd--ä9¢*FigurR¿°dONLNd2-¢9∂)e 2-1@°dONLNd7-∂9) illustrates the or`°dONLNdJ-9„)K1ganization of memory when several applications arΩ‡°dONLNd{-„9)‚
  2407. e open at °dONLNdÖ:äF⁄(CäJthe same time. The system partition occupies the lowest position in memoryu`°dONLNdœ:ŸFfi(CŸ. °dONLNd—:fiF) Application °dONLNd›GäS,(Pä&partitions occupy some or all of the r±@°dONLNd    G,S )¢3emaining space. Note that application partitions arª°dONLNd    6G S)‡e °dONLNd    8Tä`.(]ä$loaded into the top part of memory fifi °dONLNd    ]T.`9)§rstP °dONLNd    `T:`?) . Ò¿°dONLNd    bT>`Ë)(An application partition consists of thrç`°dONLNd    äTÈ`)´ee main °dONLNd    íaäm¢(jäparts:°dONLNd    ôwä~è*n
  2408. °dONLNd    õtñÄÌ) an application heap°dONLNd    Øâäêè(èän
  2409. °dONLNd    ±Üñí≥) a stack°dONLNd    πõä¢è(°än
  2410. °dONLNd    ªòñ§£) an s°dONLNd    æò£§©);A5 world, which includes the application’s global variablesˇF\@ˇ ˇˇˇˇ@
  2411. ˇ·ˇ‚7^
  2412. 4*\¯, Palatino&e.3+l"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@lMemory4⁄*˙¯
  2413. (‡*30    )B About Memory4^*¿¯
  2414. g*w¯4g*w¯"h*]
  2415. ˇ·ˇ‚7^°dONLNd\lgñ(dl
  2416. Figure 2-1°dONLNd \Æg±)B?Memory organization in the cooperative multitasking environment
  2417. wd@˜4v\w]ò4@ö@öw]∑˜ÕÕ€ˇı    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆò4@Äö@Äö∑]˜˜    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆò4Ä¿öÄ¿ö˜]7˜    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆò4¿ö¿ö7]w˜    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆò4@ö@öw]∑˜    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆò4@Äö@Äö∑]˜˜    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆò4Ä¿öÄ¿ö˜]7˜    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆò4¿ö¿ö7]w˜    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ    €ˇÄˆ
  2418. ‹ˇÄˆÕÕÕÕÕÕÕÕÕÕÕÕÕÕ˛ ÄÄÅ?@Ä®˙¸˚Ú˛ ¡ÅA Ä¨ÔHÚ˛ ¡Ç' ĨÔHÚ'˛!ä¢Ç! OÄÄ
  2419. )«π„ƒ;‡¿s¿q‰Kºx˜ÛÑFÎÚ(˛"ä¢Ç!>PÄÄ
  2420. *$FD!$  ä âJBDà¢â™LÄÛ(˛"Rî≤! PÄÄ    K‰F(!$  : ˘äBDàæâ™HÄÛ(˛"RîÇ! PÄÄ    JF(!$    ÅäBDà†â™HÄÛ(˛"RîÅA QÄÄ    J$F(!$` ö âäBDà¢âHÄÛ(˛""àÄÅ NÄÄâƒE‚#® f q
  2421. <DàúâÅhÄÛˆÄ˚ „˜    ˙@„˜˙`¿„˙˛P˚‚˙˛@˚‚˙˛@˚‚˛:#éqñ,Q«:y·¡‚√û·˛F$HâY2V(íÖ$Q·˛}G»9—"TíÖ¬'—·˛AD…Q"T íÖ"$·˛!EDHô—"T)íÖ"$Q·˛8Éàe><SΔZy¡„√ë· ¯ ˚fl ¯ ˚fl ¯ ˚fl)˛P   @@˙Ñ˝ ˛I˘)˛ 0`˝`¿˚Ü ˝@˛I0˘)˛ 0`˝`¿˚Ü ˝@˛I0˘.˛(ŒÔDwO(ßÁû QNxqÛèq«π„‹Ò‚OOq¿IP˘.˛($ê£EäPë(®ëR QQDäHä$Q#    "êîHä IP˘.˛($ê°EPë%/ëQ@JGD:»ã‰Q•Ú#    êîHã‡Iê˘.˛($ê°EPë%(Q@JYD äR•#    êîHäIê˘.˛($ê°M
  2422. Pë%(ëQ@JSDö4Hä$R•#    êî»ä …ê˘.˛(&è4ÛO"'êÄDLƒe”àâƒ\D‚"ÒHâƒI˘ÔÄ˝¯¸ıÔIJ ¯¸ı¸‡¯0Ô˛1¯˛ è@‰˛»˛@ê˛‰˛Ñ˛@ê ˛‰˛Ñ ,y<Áät‡û O9¡—√ñÊ˛å 2Ö"HRçë$ °Hí2$YÊ˛t@"Ö"ORÖÅ$°Hì¬Á—Ê˛!@"Ö"@ÖRÖ·~°Hê"Êò4@ö@öw]∑˜˛!à@"Ö"PÇ"Öë°Hî"$QÊ˛pÄ<y"o"|‚éHõ¡Ò√ûÊ˚ ˚˛˚Ê˚ ˚˛˚Ê˚ ˜˚Ê˚ ˜˚ÊÕÕÕÕÕÕÕÕÕÕÕ˛Ä¿˚Ä›˛Ä ˛Ä›˛Ä˛Ä›˛XéèrƒxÁûfi˛    dëHã$Qëbfi˛ëDüHä$QÙë@fi˛ëDêHä$Që@fi˛ëDë(Hä$—ëBfi˛^xé«àã√X‰@ë<fi˝@˝˛@‹˝@˝˛@‹ ˝@˝ÿ˛C˛Bÿ˛ÄD˛@@€˛ÄH˛@@€˛ ÄPDÒ‡HéÓsºp›˛ hDà HêHâB@›˛ HDà@HûH9B@›˛ DDàÄHÅH…B@›˛ BLâI°HôB@›˛ C4ã‰Fûheº@›˘÷˘÷Õ ˛@¸‡Ÿ˛@Ä(Ÿ˛@ÄDŸ˛Q‹Áx‡DŸ˛Q ëÑÄ`DŸ˛Q<êrÑÄDŸ˛QëíÑÇDŸ˛SBë2ÑÇ(Ÿ˛M<–ÀxÅ‚ŸÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@Aö@Aö∑]∏˜Õò4@ö@öw]∑˜ÕÕ€3ı⁄ı⁄ı
  2423. ċĈ⁄ı
  2424. ċĈ⁄ı⁄ı⁄ı
  2425. ċĈ⁄ı
  2426. ċĈ⁄ı Ô`@Ôı Ô@@ÔıÄÚgq°¥6∞ÚĈÔÈISÍL†ÛıÄÚiIR*L†ÚĈÔgIQÍ4@ÛıÓ˝@ÛıÓ˝ÄÛı
  2427. ċĈ⁄ıÄ„<Ú˝Äˆ ‡®J<ı ‡æwêı ‡®BıÄ˙«Ìˇ¸<~·º˛Äˆ˜pÓ¿˙ıÄ˙@Ó¿˘Äˆ˜@Ó¿˙ı˜¿Ó¿˙ı˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜Ä˙8@˙¿˙ı˜Ä˙
  2428. @@˙¿˛å`ı˜Ä˙
  2429. q+9¿˙¿$æÛä@ı Ä˙Ä˙    l™@˙    ¿ ®DïÓ`Ĉ˜Ä˙H¨™@˙ˇ¸ ®Gîäı Ä˙Ä˙0ì)¿˙    ¿~Ù{`Ĉ˜ÄÓ¿˛Äı˜ÄÓ¿˙ı˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ı˜ÄÓ¿˙ı˜ÄÓ¿˙ıÄ˙ÄÓˇ¿˘Äˆ˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜Ä˘=@˘¿˙ı˜Ä˘A@˘¿˙ı˜Ä˘;„X˘¿˙ıÄ˙Ģ4‡˘¿˘Äˆ˜Ä˘E‘P˘¿˙ıÄ˙Ģ9Û»˘¿˘Äˆ˜ÄÓ¿˙ı˜ÄÓˇ¿˙ıò4@Äö@Äö∑]˜˜˜ÄÓ"¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ıÄ˙ÄÓà¿˘Äˆ˜ÄÓ¿˙ı˜ÄÓ¿˙ı˛¿ÄÓ"¿˙ı Ä(Ä ÄÓ¿˘Äˆ˛)‹ÕŒnÄÓ¿˙ı Ä92“fôÄÓà¿˝Ĉ˛E2—¶ô?ÄÓ¿g@ı˛E‹ŒÊiÄÓ¿Ó"¨@ı˛¸ÄÓÁˇ¸ô"    TıĸÄÓ    ¿ô"IT@Ĉ˛¸ÄÓ¿6Ów›^0ıIJTÄÓà¿à¸Äˆ˚ÄÓ¿Ã˝ı¸œ˝úÄÓ¿˙ı¸iVRÄÓ"¿˙ı Ä©VRÄÓ¿˘Äˆ¸È›íÄÓ¿˙ıÄ˝ÄÓà¿˘Äˆ¸˝ÄÓ¿˙ı¸˝ÄÓ¿˙ı˜ÄÓ"¿˙ıÄ˙ÄÓˇ¿˘Äˆ˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ı˜ÄÓ¿˙ı˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ı˜ÄÓ¿˙ı˜ÄÓ¿˙ıÄ˙Ģ$˜¿˘Äˆ˜Ä˘$˜¿˙ıÄ˙Ģ$Œ‡˘¿˘Äˆ˜Ä˘=„ê˘¿˙ı˜Ä˘%ê˘¿˙ı˜Ä˘$Á‡˘¿˙ıÄ˙Ä˜Ä˘¿˘Äˆ˜Ä˜Ä˘¿˙ıÄ˙Ä˜Ä˘¿˘Äˆ˜ÄÓ¿˙ı˜ÄÓ¿˙ı˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜¿Ó¿˙ıÄ˙@Ó¿˘Äˆ˜`Ó¿cÄı˜<Ó¿Ó úÃı˜«Ìˇ¸ô!"≤ıÄ˙ƒÓ    ¿ô""æĈ˜pÓ¿6Ósú∞ı Ä˙@˙8@˙    ¿àĈ˜@˙
  2430. @@˙¿Ã˝ı˜¿˙
  2431. q+9¿˙¿˙ı˜Ä˙    l™@˙¿˙ıÄ˙Ä˙H¨™@˙¿˘Äˆ˜Ä˙0ì)¿˙¿˙ıÄ˙ÄÓ¿˘Äˆò4Ä¿öÄ¿ö˜]7˜˜ÄÓ¿˙ı˜ÄÓˇ¿˙ı˜ÄÓ¿˙ıÄ˙Ģ=@˘¿˘Äˆ˜Ä˘A@˘¿˙ıÄ˙Ģ;„X˘¿˘Äˆ˜Ä˘4‡˘¿˙ı˜Ä˘E‘P˘¿˙ı˜Ä˘9Û»˘¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓˇ¿˙ıÄ˙ÄÓà¿˘Äˆ˜ÄÓ¿˙ı˜ÄÓ¿˙ı˜ÄÓ"¿˙ıÄ˙ÄÓ¿˘Äˆ˛¿ ÄÓ¿˙ı Ä(ÄÄÓà¿˘Äˆ˛)‹ÕŒnÄÓ¿˙ı˛92“fô ?ÄÓ¿˙ı˛E2—¶ôÄÓ"¿˙ı ÄE‹ŒÊiÄÓ¿˘Äˆ˛¸ÄÓ¿˙ıĸÄÓà¿˘Äˆ˛¸ÄÓ¿˙ı˚TÄÓ¿˙ı˚ÄÓ"¿˙ı Äœ˝úÄÓ¿˘Äˆ¸iVRÄÓˇ¿˙ı Ä©VRÄÓ¿˘Äˆ¸È›íÄÓ¿˙ı¸˝ÄÓ¿˙ı¸˝ÄÓ¿˙ıÄ˝ÄÓ¿˘Äˆ˜Ä˘$˜¿˙ıÄ˙Ģ$˜¿˘Äˆ˜Ä˘$Œ‡˘¿˙ı˜Ä˘=„ê˘¿˙ı˜Ä˘%ê˘¿˙ıÄ˙Ģ$Á‡˘¿˘Äˆ˜Ä˜Ä˘¿˙ıÄ˙Ä˜Ä˘¿˘Äˆ˜¿˜Ä˘¿˙ı˜@Ó¿˙ı˜@Ó¿˙ıÄ˙pÓ¿˘Äˆ˜«Óˇ¿˙ıĢÓà¿˘ÄˆˆÓ¿˙ıˆÓ¿˙ıˆÓ"¿˙ıĢÓ¿˘ÄˆˆÓ¿˙ıĢÓà¿˘ÄˆˆÓ¿˙ıˆÓ¿˙ıˆÓ"¿˙ıĢÓ¿˘ÄˆˆÓ¿˙ıĢÓà¿˘ÄˆˆÓ¿˙ıˆÓ¿˙ıˆÓ"¿˙ıĢÓ¿˘Äˆò4¿ö¿ö7]w˜ˆÓ¿˙ıĢÓˇ¿˘Äˆ˜ƒÓ¿˙ı˜pÓ¿˙ı˜@Ó¿˙ıÄ˙@Ó¿˘Äˆ˜¿Ó¿˙ıÄ˙Ä˙8@˙¿˘Äˆ˜Ä˙
  2432. @@˙¿˙ı˜Ä˙
  2433. q+9¿˙¿˙ı˜Ä˙    l™@˙¿˙ıÄ˙Ä˙H¨™@˙¿˘Äˆ˜Ä˙0ì)¿˙¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ı˜ÄÓ¿˙ı˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ıÄ˙ÄÓˇ¿˘Äˆ˜ÄÓ¿˙ı˜Ä˘=@˘¿˙ı˜Ä˘A@˘¿˙ıÄ˙Ģ;„X˘¿˘Äˆ˜Ä˘4‡˘¿˙ıÄ˙ĢE‘P˘¿˘Äˆ˜Ä˘9Û»˘¿˙ı˜ÄÓ¿˙ı˜ÄÓˇ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ıÄ˙ÄÓà¿˘Äˆ˜ÄÓ¿˙ı˜ÄÓ¿˙ı˜ÄÓ"¿˙ı Ä¿ ÄÓ¿˘Äˆ˛(ÄÄÓ¿˙ı Ä)‹ÕŒnÄÓà¿˘Äˆ˛92“fô?ÄÓ¿˙ı˛E2—¶ôÄÓ¿˙ı˛E‹ŒÊi ÄÓ"¿˙ıĸÄÓ¿˘Äˆ˛¸ÄÓ¿˙ıĸÄÓà¿˘Äˆ˚TÄÓ¿˙ı˚ÄÓ¿˙ı¸œ˝úÄÓ"¿˙ı ÄiVRÄÓ¿˘Äˆ¸©VRÄÓ¿˙ı ÄÈ›íÄÓˇ¿˘Äˆ¸˝ÄÓ¿˙ı¸˝ÄÓ¿˙ı¸˝ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ı˜ÄÓ¿˙ı˜ÄÓ¿˙ıÄ˙Ģ$˜¿˘Äˆ˜Ä˘$˜¿˙ıÄ˙Ģ$Œ‡˘¿˘Äˆ˜Ä˘=„ê˘¿˙ı˜Ä˘%ê˘¿˙ıò4@ö@öw]∑˜˜Ä˘$Á‡˘¿˙ıÄ˙Ä˜Ä˘¿˘Äˆ˜Ä˜Ä˘¿˙ıÄ˙Ä˜Ä˘¿˘Äˆ˜ÄÓ¿˙ı˜ÄÓ¿˙ı˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ıÄ˙¿Ó¿˘Äˆ˜@Ó¿˙ı˜`Ó¿˙ı˜<Ó¿˙ıÄ˙«Óˇ¿˘ÄˆˆÓ¿˙ıĢÓà¿˘ÄˆˆÓ¿˙ıˆÓ¿˙ıˆÓ"¿˙ıĢÓ¿˘ÄˆˆÓ¿˙ıĢÓà¿˘ÄˆˆÓ¿˙ıˆÓ¿˙ıˆÓ"¿˙ıĢÓ¿˘ÄˆˆÓ¿˙ıĢÓà¿˘ÄˆˆÓ¿˙ıˆÓ¿˙ıˆÓ"¿˙ıĢÓ¿˘ÄˆˆÓ¿˙ıĢÓà¿˘ÄˆˆÓ¿˙ıˆÓ¿˙ıˆÓ"¿˙ıĢÓ¿˘ÄˆˆÓ¿˙ıĢÓà¿˘ÄˆˆÓ¿˙ıˆÓ¿˙ıˆÓ"¿˙ıĢÓ¿˘ÄˆˆÓ¿˙ıĢÓà¿˘ÄˆˆÓ¿˙ıˆÓ¿˙ıˆÓ"¿˙ıĢÓ¿˘ÄˆˆÓ¿˙ıĢÓà¿˘ÄˆˆÓ¿˙ıˆÓ¿˙ıˆÓ"¿˙ıĢÓ¿˘ÄˆˆÓ¿˙ıĢÓà¿˘ÄˆˆÓ¿˙ıˆÓ¿˙ıˆÓ"¿˙ıĢÓ¿˘ÄˆˆÓ¿˙ıĢÓà¿˘Äˆò4@Äö@Äö∑]˜˜ˆÓ¿˙ıˆÓ¿˙ıˆÓ"¿˙ıĢÓ¿˘ÄˆˆÓ¿˙ıĢÓà¿˘ÄˆˆÓ¿˙ıˆÓ¿˙ıˆÓ"¿˙ıĢÓ¿˘ÄˆˆÓ¿˙ıĢÓà¿˘ÄˆˆÓ¿˙ıˆÓ¿˙ıˆÓ"¿˙ıĢÓ¿˘ÄˆˆÓ¿˙ıĢÓà¿˘ÄˆˆÓ¿˙ıˆÓ¿˙ıˆÓˇ¿˙ıÄ˙ƒÓ¿˘Äˆ˜8Ó¿˙ıÄ˙`Ó¿˘Äˆ˜@Ó¿˙ı˜¿Ó¿˙ı˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ı˜ÄÓ¿˙ı˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ı˜Ä˚ĠĢ¿˙ı˜Ä˚ Ä˘¿˙ıÄ˙Ä˚[|–„sÄ˚¿˘Äˆ˜Ä˚◊æ®óö@˚¿˙ıÄ˙Ä˚÷∞®îj@˚¿˘Äˆ˜Ä˚#>®ìªÄ˚¿˙ı˜Ä˙ ˛˙¿˙ı˜Ä˙@˛˙¿˙ıÄ˙Ĉ˙¿˘Äˆ˜ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ı˜ÄÓ¿˙ı˜ÄÓ¿˙ı ÄÄÄÓ¿˘Äˆ¸ ÄÄÓ¿˙ı ÄmÛ@ÄÓ¿˘Äˆ¸ ^˙°ˇÄÓ¿˙ı¸#Z¬†ÄÓ¿˙ı¸å˙†ÄÓ¿˙ıIJIJÄÓ¿˘Äˆ¸˝ÄÓ¿˙ıÄ˙ÄÓ¿˘Äˆ˚`ÄÓˇ¿˙ı˚@ÄÓ¿˙ı¸ÓnʇÄÓ¿˙ı ÄìFiêÄÓ¿˘Äˆò4Ä¿öÄ¿ö˜]7˜¸ùFiêÄÓ¿˙ı ÄÁFfêÄÓ¿˘Äˆ¸Ä˝ÄÓ¿˙ı¸Ä˝ÄÓ¿˙ı¸Ä˝ÄÓ¿˙ı Ä˙Ä˝    < Ä@Ǹ¿˘Äˆ˜Ä˝    @ Ä@¸¿˙ı!Ä˙Ä˝
  2434. :€ÊÅÊÁEÛªì0˝¿˘Äˆ˜Ä˝
  2435. ΩıBië≈éW¯˝¿˙ı˜Ä˝
  2436. FµÖBiñ≈j∂Th˝¿˙ı˜Ä˝
  2437. 9ıAÊ„¬:üì∞˝¿˙ıÄ˙Ä˝˛@˜¿˘Äˆ˜Ä˝Ę¿˙ıÄ˙ÄÓ¿˘Äˆ˜ÄÓ¿˙ı˜¿Ó¿˙ı˜@Ó¿˙ıÄ˙`Ó¿˘Äˆ˜8Ó¿˙ıÄ˙«Óˇ¿˘ÄˆˆÓˇ¿˙ı⁄ı⁄ı
  2438. ċĈ⁄ı
  2439. ċĈ⁄ı
  2440. ÔÌı
  2441. ÔÌıÄÚd¶Ü–⁄¿ÚĈÔï•O©2ÄÛıÄÚí•H©2ÄÚĈÔ‚EG®—Úı
  2442. ÍÚı
  2443. ÍÚıġ‡flĈ ˝Ä ‡ıÄÄ flĈ˝Ä @‰ı˝Ä †‰ı˝Ä Ãp¨‹Âı
  2444. ÄÄ ˛êÈʉĈ˝Ä ∞ëÂı
  2445. ÄÄ  ŒqӉĈ ˝Ä ‡ı ˝Ä ‡ı ˝ˇ‡‡ı
  2446. ċĈ⁄ıġ‡flĈ ˝Ä ‡ı˝Ä ‰ı˝¢ ‰ı ÄÄ …f9ËÂĈ˝Ä )ˇHiÊÊı Äà†)ÿI©ÂĈ˝Ä 'g8ËÓÊı ˝Ä ‡ı ˝¢ ‡ıġ‡flĈ⁄ı
  2447. ċĈ⁄ı⁄ıò4¿ö¿ö7]w˜⁄ı
  2448. ċĈ⁄ı
  2449. ċĈ⁄ı€Uı€3ıÕÕÕÕÕÕÕÕÕÕÕÕÕÕ˛ ÄÄÅ?@Ä®˙¸˚Ú˛ ¡ÅA Ä¨ÔHÚ˛ ¡Ç' ĨÔHÚ'˛!ä¢Ç! OÄÄ
  2450. )«π„ƒ;‡¿s¿q‰Kºx˜ÛÑFÎÚ(˛"ä¢Ç!>PÄÄ
  2451. *$FD!$  ä âJBDà¢â™LÄÛ(˛"Rî≤! PÄÄ    K‰F(!$  : ˘äBDàæâ™HÄÛ(˛"RîÇ! PÄÄ    JF(!$    ÅäBDà†â™HÄÛ(˛"RîÅA QÄÄ    J$F(!$` ö âäBDà¢âHÄÛ(˛""àÄÅ NÄÄâƒE‚#® f q
  2452. <DàúâÅhÄÛˆÄ˚ „˜    ˙@„˜˙`¿„˙˛P˚‚˙˛@˚‚˙˛@˚‚˛:#éqñ,Q«:y·¡‚√û·˛F$HâY2V(íÖ$Q·˛}G»9—"TíÖ¬'—·˛AD…Q"T íÖ"$·˛!EDHô—"T)íÖ"$Q·˛8Éàe><SΔZy¡„√ë· ¯ ˚fl ¯ ˚fl ¯ ˚fl)˛P   @@˙Ñ˝ ˛I˘)˛ 0`˝`¿˚Ü ˝@˛I0˘)˛ 0`˝`¿˚Ü ˝@˛I0˘.˛(ŒÔDwO(ßÁû QNxqÛèq«π„‹Ò‚OOq¿IP˘.˛($ê£EäPë(®ëR QQDäHä$Q#    "êîHä IP˘.˛($ê°EPë%/ëQ@JGD:»ã‰Q•Ú#    êîHã‡Iê˘.˛($ê°EPë%(Q@JYD äR•#    êîHäIê˘.˛($ê°M
  2453. Pë%(ëQ@JSDö4Hä$R•#    êî»ä …ê˘.˛(&è4ÛO"'êÄDLƒe”àâƒ\D‚"ÒHâƒI˘ÔÄ˝¯¸ıÔIJ ¯¸ı¸‡¯0Ô˛1¯˛ è@‰˛»˛@ê˛‰˛Ñ˛@ê ˛‰˛Ñ ,y<Áät‡û O9¡—√ñÊ˛å 2Ö"HRçë$ °Hí2$YÊ˛t@"Ö"ORÖÅ$°Hì¬Á—Ê˛!@"Ö"@ÖRÖ·~°Hê"Êò4@ö@öw]∑˜˛!à@"Ö"PÇ"Öë°Hî"$QÊ˛pÄ<y"o"|‚éHõ¡Ò√ûÊ˚ ˚˛˚Ê˚ ˚˛˚Ê˚ ˜˚Ê˚ ˜˚ÊÕÕÕÕÕÕÕÕÕÕÕ˛Ä¿˚Ä›˛Ä ˛Ä›˛Ä˛Ä›˛XéèrƒxÁûfi˛    dëHã$Qëbfi˛ëDüHä$QÙë@fi˛ëDêHä$Që@fi˛ëDë(Hä$—ëBfi˛^xé«àã√X‰@ë<fi˝@˝˛@‹˝@˝˛@‹ ˝@˝ÿ˛C˛Bÿ˛ÄD˛@@€˛ÄH˛@@€˛ ÄPDÒ‡HéÓsºp›˛ hDà HêHâB@›˛ HDà@HûH9B@›˛ DDàÄHÅH…B@›˛ BLâI°HôB@›˛ C4ã‰Fûheº@›˘÷˘÷Õ ˛@¸‡Ÿ˛@Ä(Ÿ˛@ÄDŸ˛Q‹Áx‡DŸ˛Q ëÑÄ`DŸ˛Q<êrÑÄDŸ˛QëíÑÇDŸ˛SBë2ÑÇ(Ÿ˛M<–ÀxÅ‚ŸÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@Aö@Aö∑]∏˜Õˇ:v@ˇ ˇˇˇˇ@
  2454. ˇ·ˇ‚7^
  2455. 4H\, Palatino&e.3+ä"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@äMemory4⁄ä˙(‡ä About Memory
  2456. (‡ 31
  2457. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2458. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2459.  
  2460.  
  2461.  
  2462.  
  2463.  
  2464. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  2465. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2466. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜ ˇˇ˛ˇˇ ˛ˇˇˇ     ˇˇˇˇ
  2473. ˇ˝ˇ ˇ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  2474. 4€4—?òÄ
  2475. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2476. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2477.  
  2478.  
  2479.  
  2480.  
  2481.  
  2482. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  2483. ˛ˇˇˇˇ
  2484. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˙ˇˇ˛˝ˇ˛˙ˇˇ˙ˇˇ˛˝ˇ˛˜˜˝˛ˇ˛
  2485. ˛ˇ˛ˇˇ
  2486. ˛ˇ˛ˇˇ˝˛ˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˚ˇˇˇ    ˇˇˇ˝ˇˇ˚˝ˇˇ˝˚ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  2487. kHr4lHr mäm
  2488. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd\äk˜(gäThe System Heapˇˇˇˇˇˇ€r(g2
  2489. °dONLNdrä~Q({ä.The main part of the system partition is an ar]`°dONLNd>rQ~Œ)«ea of memory known as the r°dONLNdXrŒ~)} system heap.P†°dONLNddr    ~ ); °dONLNdeäã(àä In general, the system heap is rL†°dONLNdÖã)â6eserved for exclusive use by the Operating System and °dONLNdªåäòÊ(ïäother system softwar`°dONLNdœåÁò¸)]>e components, which load into it various items such as system °dONLNdôä•ç(¢ärE°dONLNdô镶)esourç@°dONLNdô¶•u).ces, system code segments, and system data strN‡°dONLNdAôv•ç)–uctur‘¿°dONLNdFôç•õ)es. }°dONLNdJôõ•€)All system buf≥ °dONLNdXô€•)@    fers and °dONLNda¶ä≤Ò(Øäqueues, for example, ars°dONLNdx¶Ò≤w)ge allocated in the system heap.°dONLNdò∏äƒc(¡ä1The system heap is also used for code and other r*Ä°dONLNd…∏dƒ|)⁄esourr¿°dONLNdŒ∏|ƒ) ces that do not belong to specifi臰dONLNdÔ∏ƒ)ãc °dONLNdÒ≈ä—(Œäapplications, such as code rF¿°dONLNd≈—)yesourè°dONLNd≈—l)ces that add featur?Ä°dONLNd%≈m—)R#es to the Operating System or that °dONLNdH“äfiì(€äprG °dONLNdJ“îfiΔ)
  2490. ovide contro °dONLNdU“Δfi)2Fol of special-purpose peripheral equipment. System patches and system .°dONLNdõfläÎœ(Ëäextensions (storR`°dONLNd´flœÎ)E ed as code r$¿°dONLNd∑flÎ)3esour˜ °dONLNdºflÎI) ces of type ,
  2491. Courier˜ °dONLNd»flIÎm)1'INIT'˜ °dONLNdŒflmÎ})$) ar…Ä°dONLNd“fl}Î)e loaded into the system heap .°dONLNdÏä¯(ıäduring the system startup pr)†°dONLNd Ï    ¯6)
  2492. ocess. Hari`°dONLNdÏ6¯M)-dwar° °dONLNdÏM¯©)e device drivers (stor<†°dONLNd0Ï™¯fi)] ed as code ro °dONLNd<Ïfi¯ˆ)4esour∑`°dONLNdAψ¯)ces of .°dONLNdH˘ä°(ätype °dONLNdM˘°≈)'DRVR'°dONLNdS˘≈’)$) arR`°dONLNdW˘’ÿ)8e loaded into the system heap when the driver is opened.
  2493. *H14+H1 ,ä,
  2494. ˇ·ˇ‚7^ˇˇ‹..ˇ◊°dONLNdêä* (&äThe System Global V Í°dONLNd£ *:)Åariablesˇˇˇˇˇˇ€r(&2
  2495. °dONLNd¨1ä=Î(:äQThe lowest part of memory is occupied by a collection of global variables called ≤¿°dONLNd˝1Î=(:Îsystem °dONLNd>äJ”(Gäglobal variablesà@°dONLNd>”J‚)I (orƒ@°dONLNd>‚J)  low-memoryò °dONLNd#>J!)=  °dONLNd$>"Jç)system global variablesGÄ°dONLNd;>çJ)k). The Operating System uses °dONLNdXKäW(Täthese variables to maintain dif»°dONLNdwKW)Öfer™Ä°dONLNdzKW‚) -ent kinds of information about the operating .°dONLNdßXäd¢(aäenvirR`°dONLNd¨X¢d)onment. For example, the R`°dONLNd≈Xd4)tTicksR`°dONLNd X4d}) global variableR`°dONLNd⁄X}d˝)I contains the number of ticks .°dONLNd¯eäq∂(näE(sixtieths of a second) that have elapsed since the system was most r‰†°dONLNd=e∂q
  2496. (n∂ecently started up. .°dONLNdQrä~æ({äDSimilar variables contain, for example, the height of the menu bar (°dONLNdïræ~˙({æ
  2497. MBarHeight°dONLNdür˙~)<) and °dONLNd•äãè(àä:pointers to the heads of various operating-system queues (°dONLNdflèãπ(àèDTQueue°dONLNdÊπãæ)*, °dONLNdËæã‚)FSQHdr¬†°dONLNdÓ·ãÊ)#, °dONLNdåäò∫(ïäVBLQueue°dONLNd¯å∫ò®)04, and so forth). Most low-memory global variables arR`°dONLNd,å®ò)Óe of this variety: they .°dONLNdDôä•ı(¢äScontain information that is generally useful only to the Operating System or other °dONLNdó¶ä≤Ã*system softwarM‡°dONLNd•¶Õ≤ )Ce components.°dONLNd≥∏äƒ√(¡äDOther low-memory global variables contain information about the curr¥°dONLNd˜∏√ƒ
  2498. (¡√ent application. ˇˇÒ¯.°dONLNd≈ä—ÿ(ŒäFor example, the ˇˇ’ËUË°dONLNd≈Ÿ—    )OApplZoneˇˇÒ¯UË°dONLNd!≈    —Q)0 global variable9ÿ°dONLNd1≈R—¢)I contains the addr‚ °dONLNdC≈¢—‘)P ess of the fi∏°dONLNdP≈’—)3rst byte of the ˇ˛ô"°dONLNd`“äfi%(€ä$active application’s partition. The ˇ˚Àf‰à°dONLNdÑ“%fi[)õ    ApplLimitˇ˛ô"‰à°dONLNdç“[fi°)6 global variableðdONLNdù“¢fiÓ)G contains the addr¥í°dONLNdØ“Ófi)L ess of the °dONLNd∫fläÎ∑(ËäClast byte the active application’s heap can expand to include. The °dONLNd˝fl∑ÎÌ(Ë∑    CurrentA5°dONLNdflÌÎ)6 global .°dONLNdÏä¯≠(ıävariable:‡°dONLNdÏƯ˝)$ contains the addrÖ°dONLNd(Ï˝¯)O<ess of the boundary between the active application’s global °dONLNdd˘äÍ(äQvariables and its application parameters. Because these global variables contain °dONLNdµä*Uinformation about the active application, the Operating System changes the values of °dONLNd    
  2499. ä*Ythese variables whenever a context switch occurs (that is, whenever an application takes °dONLNd    c ä,†*contr>Ä°dONLNd    h °,Ê)ol of the CPU frC‡°dONLNd    x Ê,R)Eom another application).°dONLNd    ë2ä> (;ä!In general, it is best to avoid r< °dONLNd    ≤2>)É6eading or writing low-memory system global variables. °dONLNd    Ë?äK˚(HäMost of these variables arT`°dONLNd
  2500. ?˚Kr)qe undocumented, and the r•`°dONLNd
  2501. ?rK )w$esults of changing their values can °dONLNd
  2502. ?LäX¨(Uäbe unpr‡°dONLNd
  2503. FL¨X˚)"edictable. Usually˙`°dONLNd
  2504. XL˙X)NA, when the value of a low-memory global variable is likely to be °dONLNd
  2505. ôYäeA(bä*useful to applications, the system softwar® °dONLNd
  2506. √YAeR)∑e pr∏‡°dONLNd
  2507. «YRe})
  2508. ovides a r§`°dONLNd
  2509. —Y}eı)+outine that you can use to r‡°dONLNd
  2510. ÌYˆe)yead or ˇˇb⁄.°dONLNd
  2511. Ùfärh(oä3write that value. For example, you can get the currÃ
  2512. °dONLNd 'fhrÆ)fient value of the ˇ˛(éWr°dONLNd 8fØrÕ)GTicksˇˇb⁄Wr°dONLNd =fÕr) global variable °dONLNd NsäÀ(|äby calling the °dONLNd ]sÀ)A    TickCount°dONLNd fs*)6
  2513.  function.ˇ?é@ˇ ˇˇˇˇ@
  2514. ˇ·ˇ‚7^
  2515. 4*\¯, Palatino&e.3+l"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@lMemory4⁄*˙¯
  2516. (‡*32    )BApplication Partitions4^*¿¯
  2517. ^*x¯4^*x¯
  2518. à*ê¯4â*ꯠä*ä˛
  2519. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdu*à»(É*Application PartitionsˇˇˇˇˇˇU˛(É2
  2520. °dONLNdôl•Í(¢lXWhen your application is launched, the Operating System allocates for it a partition of °dONLNdo¶l≤Ω*memory called its ˜°dONLNdŶΩ≤)Qapplication partition.퇰dONLNdó¶≤ã)a That partition contains r¿°dONLNd±¶å≤£)nequir%°dONLNd∂¶£≤¯)ed segments of the °dONLNd…≥lø®(ºlJapplication’s code as well as other data associated with the application. lÄ°dONLNd≥©ø¡(º©Figur?@°dONLNd≥¡ø’)e 2-2‹¿°dONLNd≥’ø◊) °dONLNd¿lÃ◊(…lillustrates the general ora‡°dONLNd8¿◊Ã~)k'ganization of an application partition.
  2521. Ó*ˇ¯4Ô*ˇ¯"Ô*]
  2522. ˇ·ˇ‚7^    °dONLNd`‰lÔñ(Ïl
  2523. Figure 2-2°dONLNdk‰ÆÔG)B(Organization of an application partition
  2524. °dONLNdîYler(blY@Ä°dONLNdïYre0)-our application partition is divided into thr˚`°dONLNd¬Y0eq)æee major parts:,Zapf Dingbats°dONLNd“olvq(uln
  2525. °dONLNd‘lxx”) the application stack°dONLNdÍÅlàq(áln
  2526. °dONLNdÏ~xä“) the application heap°dONLNdìlöq(ôln
  2527. °dONLNdêxú) %the application global variables and w‡°dONLNd(êúB)†A5 world°dONLNd1°l≠‚(™lSThe heap is located at the low-memory end of your application partition and always °dONLNdÑÆl∫¸*expands (when necessary) towar. °dONLNd¢Æ˝∫A)ëd high memory±@°dONLNdØÆ@∫X)C. The 醰dONLNdµÆX∫À)A5 world is located at the 
  2528. aA˜4ˇVWò4@†@†W@˜ÕÕ€ˇˆ
  2529. €ˇÄ˜
  2530. €ˇÄ˜
  2531. €ˇÄ˜
  2532. €ˇÄ˜
  2533. €ˇÄ˜
  2534. €ˇÄ˜
  2535. €ˇÄ˜
  2536. €ˇÄ˜
  2537. €ˇÄ˜
  2538. €ˇÄ˜
  2539. €ˇÄ˜
  2540. €ˇÄ˜
  2541. €ˇÄ˜
  2542. €ˇÄ˜
  2543. €ˇÄ˜
  2544. €ˇÄ˜
  2545. €ˇÄ˜
  2546. €ˇÄ˜
  2547. €ˇÄ˜
  2548. €ˇÄ˜
  2549. €ˇÄ˜
  2550. €ˇÄ˜
  2551. €ˇÄ˜
  2552. €ˇÄ˜
  2553. €ˇÄ˜
  2554. €ˇÄ˜
  2555. €ˇÄ˜
  2556. €ˇÄ˜
  2557. €ˇÄ˜
  2558. €ˇÄ˜
  2559. €ˇÄ˜
  2560. €ˇÄ˜
  2561. €ˇÄ˜
  2562. €ˇÄ˜
  2563. €ˇÄ˜
  2564. €ˇÄ˜
  2565. €ˇÄ˜
  2566. €ˇÄ˜
  2567. €ˇÄ˜
  2568. €ˇÄ˜
  2569. €ˇÄ˜
  2570. €ˇÄ˜
  2571. €ˇÄ˜
  2572. €ˇÄ˜
  2573. €ˇÄ˜
  2574. €ˇÄ˜
  2575. €ˇÄ˜
  2576. €ˇÄ˜
  2577. €ˇÄ˜
  2578. €ˇÄ˜
  2579. €ˇÄ˜
  2580. €ˇÄ˜
  2581. €ˇÄ˜
  2582. €ˇÄ˜
  2583. €ˇÄ˜
  2584. €ˇÄ˜
  2585. €ˇÄ˜
  2586. €ˇÄ˜
  2587. €ˇÄ˜
  2588. €ˇÄ˜
  2589. €ˇÄ˜ò4@Ć@Ć@WĘ
  2590. €ˇÄ˜
  2591. €ˇÄ˜
  2592. €ˇÄ˜
  2593. €ˇÄ˜
  2594. €ˇÄ˜
  2595. €ˇÄ˜
  2596. €ˇÄ˜
  2597. €ˇÄ˜
  2598. €ˇÄ˜
  2599. €ˇÄ˜
  2600. €ˇÄ˜
  2601. €ˇÄ˜
  2602. €ˇÄ˜
  2603. €ˇÄ˜
  2604. €ˇÄ˜
  2605. €ˇÄ˜
  2606. €ˇÄ˜
  2607. €ˇÄ˜
  2608. €ˇÄ˜
  2609. €ˇÄ˜
  2610. €ˇÄ˜
  2611. €ˇÄ˜
  2612. €ˇÄ˜
  2613. €ˇÄ˜
  2614. €ˇÄ˜
  2615. €ˇÄ˜
  2616. €ˇÄ˜
  2617. €ˇÄ˜
  2618. €ˇÄ˜
  2619. €ˇÄ˜
  2620. €ˇÄ˜
  2621. €ˇÄ˜
  2622. €ˇÄ˜
  2623. €ˇÄ˜
  2624. €ˇÄ˜
  2625. €ˇÄ˜
  2626. €ˇÄ˜
  2627. €ˇÄ˜
  2628. €ˇÄ˜
  2629. €ˇÄ˜
  2630. €ˇÄ˜
  2631. €ˇÄ˜
  2632. €ˇÄ˜
  2633. €ˇÄ˜
  2634. €ˇÄ˜
  2635. €ˇÄ˜
  2636. €ˇÄ˜
  2637. €ˇÄ˜
  2638. €ˇÄ˜
  2639. €ˇÄ˜
  2640. €ˇÄ˜
  2641. €ˇÄ˜
  2642. €ˇÄ˜
  2643. €ˇÄ˜
  2644. €ˇÄ˜
  2645. €ˇÄ˜
  2646. €ˇÄ˜
  2647. €ˇÄ˜
  2648. €ˇÄ˜
  2649. €ˇÄ˜
  2650. €ˇÄ˜
  2651. €ˇÄ˜
  2652. €ˇÄ˜
  2653. €ˇÄ˜ò4Ä¿†Ä¿†ÄW¿˜
  2654. €ˇÄ˜
  2655. €ˇÄ˜
  2656. €ˇÄ˜
  2657. €ˇÄ˜
  2658. €ˇÄ˜
  2659. €ˇÄ˜
  2660. €ˇÄ˜
  2661. €ˇÄ˜
  2662. €ˇÄ˜
  2663. €ˇÄ˜
  2664. €ˇÄ˜
  2665. €ˇÄ˜
  2666. €ˇÄ˜
  2667. €ˇÄ˜
  2668. €ˇÄ˜
  2669. €ˇÄ˜
  2670. €ˇÄ˜
  2671. €ˇÄ˜
  2672. €ˇÄ˜
  2673. €ˇÄ˜
  2674. €ˇÄ˜
  2675. €ˇÄ˜
  2676. €ˇÄ˜
  2677. €ˇÄ˜
  2678. €ˇÄ˜
  2679. €ˇÄ˜
  2680. €ˇÄ˜
  2681. €ˇÄ˜
  2682. €ˇÄ˜
  2683. €ˇÄ˜
  2684. €ˇÄ˜
  2685. €ˇÄ˜
  2686. €ˇÄ˜
  2687. €ˇÄ˜
  2688. €ˇÄ˜
  2689. €ˇÄ˜
  2690. €ˇÄ˜
  2691. €ˇÄ˜
  2692. €ˇÄ˜
  2693. €ˇÄ˜
  2694. €ˇÄ˜
  2695. €ˇÄ˜
  2696. €ˇÄ˜
  2697. €ˇÄ˜
  2698. €ˇÄ˜
  2699. €ˇÄ˜
  2700. €ˇÄ˜
  2701. €ˇÄ˜
  2702. €ˇÄ˜
  2703. €ˇÄ˜
  2704. €ˇÄ˜
  2705. €ˇÄ˜
  2706. €ˇÄ˜
  2707. €ˇÄ˜
  2708. €ˇÄ˜
  2709. €ˇÄ˜
  2710. €ˇÄ˜
  2711. €ˇÄ˜
  2712. €ˇÄ˜
  2713. €ˇÄ˜
  2714. €ˇÄ˜
  2715. €ˇÄ˜
  2716. €ˇÄ˜
  2717. €ˇÄ˜ò4¿†¿†¿W˜
  2718. €ˇÄ˜
  2719. €ˇÄ˜
  2720. €ˇÄ˜
  2721. €ˇÄ˜
  2722. €ˇÄ˜
  2723. €ˇÄ˜
  2724. €ˇÄ˜
  2725. €ˇÄ˜
  2726. €ˇÄ˜
  2727. €ˇÄ˜
  2728. €ˇÄ˜
  2729. €ˇÄ˜
  2730. €ˇÄ˜
  2731. €ˇÄ˜
  2732. €ˇÄ˜
  2733. €ˇÄ˜
  2734. €ˇÄ˜
  2735. €ˇÄ˜
  2736. €ˇÄ˜
  2737. €ˇÄ˜
  2738. €ˇÄ˜
  2739. €ˇÄ˜
  2740. €ˇÄ˜
  2741. €ˇÄ˜
  2742. €ˇÄ˜
  2743. €ˇÄ˜
  2744. €ˇÄ˜
  2745. €ˇÄ˜
  2746. €ˇÄ˜
  2747. €ˇÄ˜
  2748. €ˇÄ˜
  2749. €ˇÄ˜
  2750. €ˇÄ˜
  2751. €ˇÄ˜
  2752. €ˇÄ˜
  2753. €ˇÄ˜
  2754. €ˇÄ˜
  2755. €ˇÄ˜
  2756. €ˇÄ˜
  2757. €ˇÄ˜
  2758. €ˇÄ˜
  2759. €ˇÄ˜
  2760. €ˇÄ˜
  2761. €ˇÄ˜
  2762. €ˇÄ˜
  2763. €ˇÄ˜
  2764. €ˇÄ˜
  2765. €ˇÄ˜
  2766. €ˇÄ˜
  2767. €ˇÄ˜
  2768. €ˇÄ˜
  2769. €ˇÄ˜
  2770. €ˇÄ˜
  2771. €ˇÄ˜
  2772. €ˇÄ˜
  2773. €ˇÄ˜
  2774. €ˇÄ˜
  2775. €ˇÄ˜
  2776. €ˇÄ˜
  2777. €ˇÄ˜
  2778. €ˇÄ˜
  2779. €ˇÄ˜
  2780. €ˇÄ˜
  2781. €ˇÄ˜ò4@†@†W@˜
  2782. €ˇÄ˜
  2783. €ˇÄ˜
  2784. €ˇÄ˜
  2785. €ˇÄ˜
  2786. €ˇÄ˜
  2787. €ˇÄ˜
  2788. €ˇÄ˜
  2789. €ˇÄ˜
  2790. €ˇÄ˜
  2791. €ˇÄ˜
  2792. €ˇÄ˜
  2793. €ˇÄ˜
  2794. €ˇÄ˜
  2795. €ˇÄ˜
  2796. €ˇÄ˜
  2797. €ˇÄ˜
  2798. €ˇÄ˜
  2799. €ˇÄ˜
  2800. €ˇÄ˜
  2801. €ˇÄ˜
  2802. €ˇÄ˜
  2803. €ˇÄ˜
  2804. €ˇÄ˜
  2805. €ˇÄ˜
  2806. €ˇÄ˜
  2807. €ˇÄ˜
  2808. €ˇÄ˜
  2809. €ˇÄ˜
  2810. €ˇÄ˜
  2811. €ˇÄ˜
  2812. €ˇÄ˜
  2813. €ˇÄ˜
  2814. €ˇÄ˜
  2815. €ˇÄ˜
  2816. €ˇÄ˜
  2817. €ˇÄ˜
  2818. €ˇÄ˜
  2819. €ˇÄ˜
  2820. €ˇÄ˜
  2821. €ˇÄ˜
  2822. €ˇÄ˜
  2823. €ˇÄ˜
  2824. €ˇÄ˜
  2825. €ˇÄ˜
  2826. €ˇÄ˜
  2827. €ˇÄ˜
  2828. €ˇÄ˜
  2829. €ˇÄ˜
  2830. €ˇÄ˜
  2831. €ˇÄ˜
  2832. €ˇÄ˜
  2833. €ˇÄ˜
  2834. €ˇÄ˜
  2835. €ˇÄ˜
  2836. €ˇÄ˜
  2837. €ˇÄ˜
  2838. €ˇÄ˜
  2839. €ˇÄ˜
  2840. €ˇÄ˜
  2841. €ˇÄ˜
  2842. €ˇÄ˜
  2843. €ˇÄ˜ÕÕò4@Ć@Ć@WĘÕÕÕÕÕÕÕÕÕÕÕÕ)˛ ÄÄá Ù<˛@˛ ÄÄÄAÙ'˛ ¡ÅHÄ"ÄB¸ÄÄÄÄÙ'˛ ¡Ç(Ä"ÄŸÄ@ÄÄÙ+˛%ä¢Ç Ä"¯@Åw«<OÀ«ÅÁEãqŒûxé?]<xˆ+˛%ä¢Ç!#Â@ÅHH¢A"å$BëFLïä$°D "IBDˆ+˛%Rî≤""@ÅHC¢Bå$Bë‰HD<"IBDˆ+˛%RîÇ$"@ÅHL¢D2å$B ë$Hï$°D"IBDˆ+˛%RîÅH" @BH…¢H&å$B    ë$Hï
  2844. d°DB"IBDˆ+˛%"àÄèÄ"Ë>@<GFb_ÀƒA‚QèÒñûD< £M<Dˆ¯Ä@˜Í¯êÄĘͯpĘͲ@˛  ˝@@˚ADÄÄÓ˛ 0`˝`¿˚aD¡ÄÓ˛ 0`˝`¿˚QD¡ÄÓ#˛ŒÔDwO(ßÁû QNxqÛèq«∏ QD¢ÄÓ#˛$ê£EäPë(®ëR QQDäHä$P ID¢ÄÓ#˛$ê°EPë%/ëQ@JGD:»ã‰P EDîÄÓ#˛$ê°EPë%(Q@JYD äP@EDîÄÓ#˛$ê°M
  2845. Pë%(ëQ@JSDö4Hä$P@CDîÄÓ#˛&è4ÛO"'êÄDLƒe”àâƒXÄADàÄÓ
  2846. ÔÄ˝ ÔIJ Â
  2847. ¸‡Â˛1¯˛ Ñ@‰˛»˛@D"˛‰˛Ñ˛@\"˛‰˛Ñ ,y<Áät‡D" O9¡—√ñÊ˛å 2Ö"HRçÑ °Hí2$YÊ˛t@"Ö"ORÖD"°Hì¬Á—Ê˛!@"Ö"@ÖRÖD"°Hê"Ê˛!à@"Ö"PÇ"ÖD"°Hî"$QÊ˛pÄ<y"o"|‚ÑHõ¡Ò√ûÊ˚ ˚˛˚Ê˚ ˚˛˚Ê˚ ˜˚Ê˚ ˜˚ÊÕÕÕÕÕÕÕÕÕÕÕ˛Ä¿˚Ä›˛Ä ˛Ä›˛Ä˛Ä›˛XéèrƒxÁûfiò4Ä¿†Ä¿†ÄW¿˜˛    dëHã$Qëbfi˛ëDüHä$QÙë@fi˛ëDêHä$Që@fi˛ëDë(Hä$—ëBfi˛^xé«àã√X‰@ë<fi˝@˝˛@‹˝@˝˛@‹ ˝@˝ÿ˛@@/Ä¿˛í‚˛Ä`¿˝(@˝íÊ˛Ä`¿˝(@˝íÊ˛Q^;…„„π«H@xíDÓsπÁÁ˛Qa")$$OÄDíEDRÁ˝ÄJa")'ê‰HD íE‰A“Á˛ÄJa") S$àD@íDFRÁ˛ÄJa")hRdàìDÄíND“Á˛D^")ßôïÕEí5ÊC9‰Á˜ ÿ¯@ÿ¯¿ÿ ˛ĸ‡Ÿ˛ÄÄ(Ÿ˛ÄÄDŸ˛ë‹Áx‡DŸ˛ë ëÑÄ`DŸ˛ë<êrÑÄDŸ˛ëëíÑÇDŸ˛ìBë2ÑÇ(Ÿ˛ç<–ÀxÅ‚ŸÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿†¿†¿W˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@†@†W@˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@†@†W@˜ÕÕ€3ˆŸˆ
  2848. ‹ˆÿĘŸˆÿĘ
  2849. ‹ˆŸˆ
  2850. ‹ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔ0˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô0¯ˆˆÔ>˜Ä˜ˆÔ¯ˆˆÔ ˜Ä˜˘˚J˜ ¯ˆˆ ˚H˜¯ˆ˘˚JÓ43Fv˚8¯ˆˆ˚{)*z©T˚p˜Ä˜ˆ0˚K)*B©T˚`¯ˆˆ`˚JÈ*:¶H˚‡˜Ä˜˘@˙ ˛¸¿¯ˆˆ¿˚¿˛¸įˆ˙‡¯ˆˆÔ ˜Ä˜ˆÔ0¯ˆ˜üÔˇ˜Ä˜˙xÔ0¯ˆ˜¿Ô0¯ˆ˙ÄÔ0¯ˆ˜ÄÔ0˜Ä˜¯ÄÔ0¯ˆ¯Ô0˜Ä˜˚Ô0¯ˆ¯Ô0¯ˆ˚Ô0¯ˆ¯Ô0˜Ä˜¯Ô0¯ˆ¯Ô0˜Ä˜˚Ô0¯ˆ¯Ô0¯ˆ˚Ô0¯ˆ˝Ô0˜Ä˜˝êÔ0¯ˆ˝úJŒpÔ0˜Ä˜ Ç[*ìˇÔ0¯ˆ˝R+*êÔ0¯ˆ L$ pÔ0¯ˆ¯Ô0˜Ä˜¯Ô0¯ˆ¯Ô0˜Ä˜˚Ô0˛Cˆ¯Ô
  2851. 0WΩåBêˆ˚Ô
  2852. 0RJÛòˆ¯ÌˇR BÑ˛Ä˜¯Ô
  2853. 07æ
  2854. 6ÿˆ¯Ô0˛¿¸Ä˜˚Ô0¯ˆ¯Ô0¯ˆò4@Ć@Ć@WĘ˚ÄÔ0¯ˆ˜ÄÔ0˜Ä˜˜ÄÔ0¯ˆ˜¿Ô0<˛Ä˜˙xÔ
  2855. 0W° rìÜ`ˆ˜üÌˇRŒì»êˆ˘Ô
  2856. 0RÉFˆˆÔ 07∏œvΩÏÄĘˆÔ0˘pˆˆÔ0˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔ0˜Ä˜˘˙»˘0¯ˆˆ˙˘0¯ˆ˘˙ü¿˙0¯ˆˆ˙Iߢ0˜Ä˜ˆ˙N¢Ä˙0¯ˆˆ˙èû@˙0˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔ0˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô0¯ˆˆÔ0˜Ä˜ˆÔˇ¯ˆˆ˘àâ¯à∞˜Ä˜˘˘¯0¯ˆˆ˘¯0¯ˆ˘˘"#¯"0¯ˆˆ˘¯0˜Ä˜ˆ˘¿˘0¯ˆˆ˘àè»˘à∞˜Ä˜˘˘¿˘0¯ˆˆ˘Ģ0¯ˆ˘˘"'¢˘"0¯ˆˆ˘Ģ0˜Ä˜ˆ˘Ģ0¯ˆˆ˘àã¯à∞˜Ä˜˘˘¯0¯ˆˆ˘¯0¯ˆ˘Ô"0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔà∞˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô"0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔà∞˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô"0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔà∞˜Ä˜ò4Ä¿†Ä¿†ÄW¿˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô"0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔà∞˜Ä˜˘Ô0˝˛ˆˆÔ
  2857. 0 Ĉ˘Ô"
  2858. 0
  2859. sâ ”ˆˆÔ0JI©<˛Ä˜ˆÔü
  2860. ˇˇ
  2861. JI$©ˆˆÔà∞süÓ´å˛Ä˜˘Ô0B˚ˆˆÔ0c˚ˆ˘Ô"0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔà∞˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô"0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔà∞˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô"0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔà∞˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô"0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔà∞˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô"0¯ˆˆ˘¯0˜Ä˜ˆ˘¯0¯ˆˆ˘àã¯à∞˜Ä˜˘˘Ģ0¯ˆˆ˘Ģ0¯ˆ˘˘"'¢˘"0¯ˆˆ˘¿˘0˜Ä˜ˆ˘¿˘0¯ˆˆ˘àè»˘à∞˜Ä˜˘˘¯0¯ˆˆ˘¯0¯ˆ˘˘"#¯"0¯ˆˆ˘¯0˜Ä˜ˆ˘¯0¯ˆˆÔˇ˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔ0˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô0¯ˆˆÔ0˜Ä˜ò4¿†¿†¿W˜ˆÔ0¯ˆˆÔ0˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔ0˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔ0˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔ0˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô0¯ˆˆÔ0˜Ä˜ˆ˙ ¯0¯ˆˆ˙ ¯0˜Ä˜˘˙&Á˘0¯ˆˆ˙Ô4Ä˙0¯ˆ˘˙(‘Ä˙0¯ˆˆ˙'w˘0˜Ä˜ˆ¯˘0¯ˆˆ¯˘0˜Ä˜˘¯˘0¯ˆˆÔ0¯ˆ˘Ô0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔ0˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔ0˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔ0˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔ0˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô0¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔ0˜Ä˜˘Ô0¯ˆˆÔ0¯ˆò4@†@†W@˜˘Ô0 ¿˝ˆˆÔ0
  2862. sàNc˝Ä˜ˆÔ
  2863. 0JHëTĈˆÌˇ
  2864. JIWÄ˛Ä˜˘Ô0sùŒT˛ˆˆÔ
  2865. 0BĈ˘Ô0c˚ˆˆÔ>˜Ä˜ˆÔ ¯ˆˆÔ ˜Ä˜˘ Ô¯ˆˆÔ8¯ˆ˘Ô0¯ˆˆ0Ô`˜Ä˜ˆ`Ô‡¯ˆˆ@Ô¿˜Ä˜˘¿įˆ˜‡¯ˆ˘Ô ¯ˆˆÔ0˜Ä˜ˆÔ0¯ˆˆÔ0˜Ä˜˘Ô0¯ˆˆÔ0¯ˆ˘Ô0¯ˆÿĘŸˆÿʡÄflˆ ˛ÄflˆÄflˆ˛ÄHA·Ä˜˛ÄHBÄ„ˆ˛ÄK1¬≥p„Ę
  2866. ÄO˙Cßò‰ˆ˛ÄN¬Ddh‰ˆ
  2867. Ä39ƒc∏‰ˆ ˛ÄfiĘ ˛Äflˆ ˛ˇÄfiĘ
  2868. ‹ˆŸˆˇÄflˆ ˛ÄfiʲÄH „ˆ˛àÄH ‚Ę ÄO%òÁ3pˆ˛ÄLß˝!ßòˆ "ÄLßa&§hˆ˛Ä4ùú„£∏‰Ä˜ ˛Äflˆ ˛àÄfiʡÄflˆŸˆ
  2869. ‹ˆÿĘŸˆÿĘ
  2870. ‹ˆŸˆ€3ˆ˛€ÃĘÕÕò4@Ć@Ć@WĘÕÕÕÕÕÕÕÕÕÕÕÕ)˛ ÄÄá Ù<˛@˛ ÄÄÄAÙ'˛ ¡ÅHÄ"ÄB¸ÄÄÄÄÙ'˛ ¡Ç(Ä"ÄŸÄ@ÄÄÙ+˛%ä¢Ç Ä"¯@Åw«<OÀ«ÅÁEãqŒûxé?]<xˆ+˛%ä¢Ç!#Â@ÅHH¢A"å$BëFLïä$°D "IBDˆ+˛%Rî≤""@ÅHC¢Bå$Bë‰HD<"IBDˆ+˛%RîÇ$"@ÅHL¢D2å$B ë$Hï$°D"IBDˆ+˛%RîÅH" @BH…¢H&å$B    ë$Hï
  2871. d°DB"IBDˆ+˛%"àÄèÄ"Ë>@<GFb_ÀƒA‚QèÒñûD< £M<Dˆ¯Ä@˜Í¯êÄĘͯpĘͲ@˛  ˝@@˚ADÄÄÓ˛ 0`˝`¿˚aD¡ÄÓ˛ 0`˝`¿˚QD¡ÄÓ#˛ŒÔDwO(ßÁû QNxqÛèq«∏ QD¢ÄÓ#˛$ê£EäPë(®ëR QQDäHä$P ID¢ÄÓ#˛$ê°EPë%/ëQ@JGD:»ã‰P EDîÄÓ#˛$ê°EPë%(Q@JYD äP@EDîÄÓ#˛$ê°M
  2872. Pë%(ëQ@JSDö4Hä$P@CDîÄÓ#˛&è4ÛO"'êÄDLƒe”àâƒXÄADàÄÓ
  2873. ÔÄ˝ ÔIJ Â
  2874. ¸‡Â˛1¯˛ Ñ@‰˛»˛@D"˛‰˛Ñ˛@\"˛‰˛Ñ ,y<Áät‡D" O9¡—√ñÊ˛å 2Ö"HRçÑ °Hí2$YÊ˛t@"Ö"ORÖD"°Hì¬Á—Ê˛!@"Ö"@ÖRÖD"°Hê"Ê˛!à@"Ö"PÇ"ÖD"°Hî"$QÊ˛pÄ<y"o"|‚ÑHõ¡Ò√ûÊ˚ ˚˛˚Ê˚ ˚˛˚Ê˚ ˜˚Ê˚ ˜˚ÊÕÕÕÕÕÕÕÕÕÕÕ˛Ä¿˚Ä›˛Ä ˛Ä›˛Ä˛Ä›˛XéèrƒxÁûfiò4Ä¿†Ä¿†ÄW¿˜˛    dëHã$Qëbfi˛ëDüHä$QÙë@fi˛ëDêHä$Që@fi˛ëDë(Hä$—ëBfi˛^xé«àã√X‰@ë<fi˝@˝˛@‹˝@˝˛@‹ ˝@˝ÿ˛@@/Ä¿˛í‚˛Ä`¿˝(@˝íÊ˛Ä`¿˝(@˝íÊ˛Q^;…„„π«H@xíDÓsπÁÁ˛Qa")$$OÄDíEDRÁ˝ÄJa")'ê‰HD íE‰A“Á˛ÄJa") S$àD@íDFRÁ˛ÄJa")hRdàìDÄíND“Á˛D^")ßôïÕEí5ÊC9‰Á˜ ÿ¯@ÿ¯¿ÿ ˛ĸ‡Ÿ˛ÄÄ(Ÿ˛ÄÄDŸ˛ë‹Áx‡DŸ˛ë ëÑÄ`DŸ˛ë<êrÑÄDŸ˛ëëíÑÇDŸ˛ìBë2ÑÇ(Ÿ˛ç<–ÀxÅ‚ŸÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿†¿†¿W˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@†@†W@˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕˇ>Ë@ˇ ˇˇˇˇ@
  2875. ˇ·ˇ‚7^
  2876. 4H\, Palatino&e.3+ä"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@äMemory4⁄ä˙(‡äApplication Partitions
  2877. (‡ 33
  2878. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2879. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2880.  
  2881.  
  2882.  
  2883.  
  2884.  
  2885. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  2886. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2887. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2888.  
  2889.  
  2890.  
  2891.  
  2892.  
  2893. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜ ˇˇ˛ˇˇ ˛ˇˇˇ     ˇˇˇˇ
  2894. ˇ˝ˇ ˇ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  2895. 4€4—?òÄ
  2896. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2897. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2898.  
  2899.  
  2900.  
  2901.  
  2902.  
  2903. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  2904. ˛ˇˇˇˇ
  2905. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˙ˇˇ˛˝ˇ˛˙ˇˇ˙ˇˇ˛˝ˇ˛˜˜˝˛ˇ˛
  2906. ˛ˇ˛ˇˇ
  2907. ˛ˇ˛ˇˇ˝˛ˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˚ˇˇˇ    ˇˇˇ˝ˇˇ˚˝ˇˇ˝˚ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\ähã(eä9high-memory end of your application partition and is of fiÜ °dONLNd:\ãh    (eãxed size. The stack begins at °dONLNdXiäuì(räthì¿°dONLNdZiìu±)    e high-KÄ°dONLNdai≤u)memory end of the ≥Ä°dONLNdsiuö)VA5 world and expands downwar@°dONLNdèiõu¿)ìd, towar‡°dONLNdói¿u)%d the top of the °dONLNd®väÇ¢(äheap.°dONLNdÆàäîŸ*As you can see in €†°dONLNd¿àŸîÒ)OFigurÆ`°dONLNd≈àÒî)e 2-2K‡°dONLNd àî), therÓ@°dONLNd–àîâ)e is usually an unused ar†¿°dONLNdÈàäî)nea of memory between the °dONLNdïä°#(ûä"stack and the heap. This unused arƒ‡°dONLNd$ï#°9)ôea pr’†°dONLNd)ï9°¿) ovides space for the stack to grô@°dONLNdIï¡°ˆ)à ow without °dONLNdT¢äÆú(´äencrP@°dONLNdX¢ùÆ)Ooaching upon the space assigned to the application heap. In some cases, however»¿°dONLNdߢÆ(´, °dONLNd©Ø䪟(∏äthe stack might grÄ°dONLNdªØ⁄ª)Pow into space r †°dONLNd Øª    )C9eserved for the application heap. If this happens, it is °dONLNdºä»b(≈ä2very likely that data in the heap will become corr‡°dONLNd5ºc»)Ÿupted..°dONLNd<Œä⁄û(◊äThe ,
  2908. Courier°dONLNd@Œû⁄‘)    ApplLimit°dONLNdIŒ‘⁄˙)6@ global variable marks the upper limit to which your heap can grR`°dONLNdâŒ˙⁄(◊˙owg`°dONLNdãŒ⁄) . If °dONLNdê€äÁ¬(‰äyou call the °dONLNdù€¬Á)8 MaxApplZone°dONLNd®€Á)B prR`°dONLNd´€Á-) ocedur$¿°dONLNd±€-Á™)e at the beginning of your pr˜ °dONLNdŒ€©Áˆ)|ogram, the heap .°dONLNdfiËäÙê(Òä<immediately extends all the way up to this limit. If you werã¿°dONLNdËêÙ(Òêe to use all of the heap’s frÿ°dONLNd7ËÙ)see °dONLNd:ıä(˛äRspace, the Memory Manager would not allow you to allocate additional blocks above .°dONLNdåä¿*    ApplLimit°dONLNdï¿)6. If you do not call °dONLNd™T)R MaxApplZone°dONLNdµTé)B, the heap grR`°dONLNd¬éº):    ows towar$¿°dONLNdÀºƒ).d $¿°dONLNdÕƒ˙)    ApplLimit$¿°dONLNd÷˙¸)6 .°dONLNd◊ä!(äwhenever the Memory Manager fiı¿°dONLNdı!Y)ónds that ther`°dONLNdZ )9'e is not enough memory in the heap to fiÍÄ°dONLNd* )≤ll .°dONLNd-ä(ñ(%äa rR`°dONLNd0ñ(·) equest. Howeverï°dONLNd?‡(/)J, once the heap grg`°dONLNdQ/(Z)O
  2909. ows up to g`°dONLNd[Z(ê)+    ApplLimitg`°dONLNddê(π)6 , it can gr9¿°dONLNdoπ(ı))ow no further|`°dONLNd|Ù(˘);. .°dONLNd~)ä5    (2äTThus, whether you maximize your application heap or not, you can use only the space .°dONLNd“6äB.*#between the bottom of the heap and °dONLNdı6.Bd)§    ApplLimit°dONLNd˛6dBg)6.°dONLNdHäTU(Qä-Unlike the heap, the stack is not bounded by °dONLNd-HUTã)À    ApplLimit°dONLNd6HãT¸)6. If your application uses .°dONLNdQUäa÷(^äheavily nested prË°dONLNdbU÷aÙ)Locedur@°dONLNdhUıaΔ)0es with many local variables or uses extensive rò†°dONLNdòUΔa)—ecursion, the .°dONLNd¶bän«(kästack could grR`°dONLNd¥b«n)=
  2910. ow downwar$¿°dONLNdæbn*)9    d beyond $¿°dONLNd«b*n`)*    ApplLimit$¿°dONLNd–b`nÒ)6 . Because you do not use Memory .°dONLNdoä{∏(xä    Manager rW°dONLNd˘o∏{).Houtines to allocate memory on the stack, the Memory Manager cannot stop .°dONLNdA|äà¬(Öäyour stack frR`°dONLNdN|¬à⁄)8om gr$¿°dONLNdS|⁄à)owing beyond $¿°dONLNd`|àO)?    ApplLimit$¿°dONLNdi|Oàû)6 and possibly encr˜ °dONLNd{|ùàı)Noaching upon space .°dONLNdéâäïç(íärE°dONLNdèâéï)eserved for the heap. However÷†°dONLNd¨âï¬)á&, an Operating System task checks apprX¿°dONLNd“â√ï˝)Æoximately 60 °dONLNdflñä¢
  2911. (üäZtimes each second to see if the stack has moved into the heap. If it has, the task, known °dONLNd9£äØ‘*as the “stack snif∂ °dONLNdK£‘؇)Jfer‡°dONLNdN£‡ØL) ,” generates a system err"†°dONLNdg£LØU)lorÕ`°dONLNdi£TØV).
  2912. ‘H€4’H€ ÷ä÷
  2913. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdk≈ä‘•(–äThe -ò°dONLNdo≈•‘)Application Stackˇˇˇˇˇˇ€r(–2
  2914. °dONLNdÅ€äÁù(‰äThe ª¿°dONLNdÖ€ùÁ¥)stack ‡°dONLNd䀵Á◊)     is an arG†°dONLNdì€◊Á≈)"6ea of memory in your application partition that can grØÄ°dONLNd…€≈Á
  2915. )Óow or shrink at °dONLNdŸËäÙ (Òäone end while the other end r®†°dONLNdˆË Ù4)Çemains fi…¿°dONLNdˇË4Ù)(2xed. This means that space on the stack is always °dONLNd1ıäÀ(˛äallocated and r`°dONLNd@ıÃ=)Beleased in LIFO (last-in, fi£`°dONLNd\ı=i)q rst-out) or6†°dONLNdgıjx)-derQ@°dONLNdjıx)$. The last item allocated is always °dONLNdéä†( äthe fiÍ °dONLNd) rst to be r™@°dONLNdü É)*,eleased. It also means that the allocated ar¿°dONLNdÀÑ)∫ea of the stack is always °dONLNdÂäÈ(äcontiguous. Space is r‡°dONLNd˚Í)`Beleased only at the top of the stack, never in the middle, so therLJ°dONLNd    =(e °dONLNd    ?ä(e(%ä2can never be any unallocated “holes” in the stack.°dONLNd    r.ä:*By convention, the stack gr≈ °dONLNd    ç.:)wows frgÄ°dONLNd    ì.:<)om higy‡°dONLNd    ô.<:M)h-ms °dONLNd    ú.N:m)emory à°dONLNd    ¢.m:Ç)addrÑÄ°dONLNd    ¶.Ç:ö)esses N¿°dONLNd    ¨.õ:µ)towar"†°dONLNd    ±.µ:≈)d lo@°dONLNd    µ.Δ:⁄)w-mõ °dONLNd    ∏.⁄:˘)emory °dONLNd    æ;äGü(Däaddr|Ä°dONLNd    ¬;üG2)#esses. The end of the stack that gr    °dONLNd    Â;3Gß)îows or shrinks is usually r°dONLNd
  2916. ;ßGª)teferrµ¿°dONLNd
  2917. ;ªG
  2918. )ed to as the “top” °dONLNd
  2919. HäT(QäYof the stack, even though it’s actually at the lower end of memory occupied by the stack.°dONLNd
  2920. rZäf˘*Because of its LIFO naturŸ†°dONLNd
  2921. ãZ˘fÊ)o8e, the stack is especially useful for memory allocation °dONLNd
  2922. √gäsZ(pä/connected with the execution of functions or pr`°dONLNd
  2923. Úg[sy)—ocedurö†°dONLNd
  2924. ¯gys)"es. When your application calls a °dONLNd täÄç(}ärE°dONLNd téÄ√)Ioutine, space is automatically allocated on the stack for a stack frame. ı`°dONLNd dt¬Ä…(}¬A0°dONLNd et ÄÃ) ∞°dONLNd ftÃÄ) stack frame+°dONLNd qtÄ)5 °dONLNd rÅäç≈(ääcontains the r†°dONLNd ÄÅΔç~)<+outine’s parameters, local variables, and r¿°dONLNd ´Å~ç≠)∏
  2925. eturn addr[`°dONLNd µÅ≠çø)/ess. ü°dONLNd ∫Åøç◊)Figurq¿°dONLNd øÅ◊çÎ)e 2-3@°dONLNd ƒÅÏçÓ) °dONLNd ≈éäöÛ(óäSillustrates how the stack expands and shrinks during a function call. The leftmost °dONLNd õäß#*"diagram shows the stack just beforä¿°dONLNd :õ#ß)ô3e the function is called. The middle diagram shows °dONLNd m®ä¥˙(±äUthe stack expanded to hold the stack frame. Once the function is executed, the local ˇM\@ˇ ˇˇˇˇ@
  2926. ˇ·ˇ‚7^
  2927. 4*\¯, Palatino&e.3+l"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@lMemory4⁄*˙¯
  2928. (‡*34    )BApplication Partitions4^*¿¯
  2929. °dONLNd\lh(el$variables and function parameters ar@°dONLNd$\hC)£ e popped ofÇ°dONLNd/\ChÂ)4)f the stack. If the function is a Pascal °dONLNdXiluª(rlfunction, all that rz °dONLNdliªu)Oemains is the prX`°dONLNd|iuå)F evious stack with the function rl¿°dONLNdúiåu¬)ãesult on top.
  2930. ó*®¯4ò*®¯"ò*]
  2931. ˇ·ˇ‚7^    °dONLNd™çlòñ(ïl
  2932. Figure 2-3°dONLNdµçÆò)BThe application stack
  2933. π*«¯4∫*«¯°dONLNdÀ∏l√(¿lNote
  2934. ˇ·ˇ‚7^
  2935. °dONLNd–≈l—w*:Dynamic memory allocation on the stack is usually handled °dONLNd
  2936. —l›–* automatically if you arö‡°dONLNd!—–›ß)d/e using a high-level development language such °dONLNdP›lÈE(Êl2as Pascal. The compiler generates the code that crD °dONLNdÇ›FȨ)⁄eates and deletes stack °dONLNdöÈlıÔ(Úlframes for each function or pr%‡°dONLNd∏Èı)ÑocedurΩ °dONLNdæÈı')e call.,Zapf Dingbats«¿°dONLNdŒÏ,Ù1)u
  2937. * ¯4* ¯ l¯
  2938. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd–
  2939. lá(lThe -ò°dONLNd‘
  2940. áÓ)Application Heapˇˇˇˇˇˇ€r(2
  2941. °dONLNd l,|()lAn ò†°dONLNdË |,»)application heapÚ@°dONLNd¯ »,Ì)L
  2942.  is the ar:°dONLNd Ó,Ò)&:ea of memory in your application partition in which space °dONLNd<-l9(6lis dynamically allocated and r>Ä°dONLNdZ-Ò9Ì)Ö5eleased on demand. The heap begins at the low-memory °dONLNdè:lFT(Cl3end of your application partition and extends upwar@°dONLNd¬:UFé)È d in memory#‡°dONLNdÕ:çF‰)8. The heap contains °dONLNd·GlSŸ(Plvirtually all items that arõ‡°dONLNd¸GŸSÛ)mBe not allocated on the stack. For instance, your application heap °dONLNd>Tl`9(]l.contains the application’s code segments and r
  2943.  °dONLNdlT:`R)ŒesourR`°dONLNdqTR`~) ces that ar‰`°dONLNd|T~`ó),e curr]°dONLNdÇTò`Â)ently loaded into °dONLNdîalmë(jlmemoryÕ °dONLNdöaêmfi)$J. The heap also contains other dynamically allocated items such as window °dONLNd‰nlzo(wlrE°dONLNdÂnpzÇ)ecorπ`°dONLNdÈnÇz≥) ds, dialog rH@°dONLNdın¥zΔ)2ecorº†°dONLNd˘nΔzT) ds, document data, and so forth.
  2944. ®(†˜4ß®ò<@‡@‡®Ë˜≈≈…ˇ…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯ò<@ć@ćË(˜…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯ò<Ä¿‡Ä¿‡(h˜…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯ò<¿‡¿‡h®˜…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯…ˇ¯≈≈≈≈≈≈≈≈≈≈≈ò<@‡@‡®Ë˜≈≈≈≈≈≈˛ ÄÄÅÄ ÙÅ˝˝    @˝·˛ ¡ÅB@"@!˝˛·˛ ¡Ç$@"@!˝˛·˛ä¢Ç$"¯ !a¿qeâ8ÁOπ√ì·˛ä¢Ç'Ä#  !í âñI≈Pë,T·˛Rî≤$@" !‡9IÄrPëêË·˛RîÇ$@"B !…IÅíPëS(·˛RîÅD@"B ! ôIÖ2PëRhR·˛"àÄÉÄ"Ë< !¿eÁâxÀOôóë·¯@˛ÿ¯ê@˛ÿ¯pIJÿ˛@˛  @@˙ADÄÄÊ˛ 0`˝`¿˚aD¡ÄÊ˛ 0`˝`¿˚QD¡ÄÊ#˛ŒÔDwO(ßÁû QNxqÛèq«∏ QD¢ÄÊ#˛$ê£EäPë(®ëR QQDäHä$P ID¢ÄÊ#˛$ê°EPë%/ëQ@JGD:»ã‰P EDîÄÊ#˛$ê°EPë%(Q@JYD äP@EDîÄÊ#˛$ê°M
  2945. Pë%(ëQ@JSDö4Hä$P@CDîÄÊ#˛&è4ÛO"'êÄDLƒe”àâƒXÄADàÄÊ
  2946. ÔÄ˝› ÔIJ ›
  2947. ¸‡›˛˛
  2948. Ç€˛$˛@B ˝€˛D0˛@F ˝€˛
  2949. @P,y<Áät‡J< é9`fi˛xê2Ö"HRçí" úQ #"Eêfi˛Dê"Ö"ORÖò<!>}fi˛?E¯"Ö"@ÖRÖ?Bò! Afi˛D"Ö"PÇ"Ö"òSB!"Efi˛8<y"o"|‚¬åº9‡fi˚ ˚˛¸›˚ ˚˛¸›˚ ˜¸›˚ ˜¸›≈≈≈≈≈≈≈≈≈≈≈˛Ä¿˚Ä’˛Ä ˛Ä’˛Ä˛Ä’˛XéèrƒxÁû÷˛    dëHã$Qëb÷˛ëDüHä$QÙë@÷˛ëDêHä$Që@÷˛ëDë(Hä$—ëB÷˛^xé«àã√X‰@ë<÷˝@˝˛@‘ò<@ć@ćË(˜˝@˝˛@‘ ˝@˝–˛C˛&–˛ÄD˛$ ‘˛ÄH˛$ ‘˛ ÄPDÒ‡%›Œwé’˛ hDà %    (H’˛ HDà@%…(H’˛ DDàÄ%)(H’˛ BLâ%4)(H’˛ C4ã‡$”Õ ∑à’≈≈≈ ˛@¸‡—˛@Ä(—˛@ÄD—˛Q‹Áx‡D—˛Q ëÑÄ`D—˛Q<êrÑÄD—˛QëíÑÇD—˛SBë2ÑÇ(—˛M<–ÀxÅ‚—≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<Ä¿‡Ä¿‡(h˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<¿‡¿‡h®˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<‡‡®∏˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@‡@‡®Ë˜≈≈…30……Δ…Δ……ÎÚ˙Û Û@ÛÄ˝Û Û@ÛÄ˙Û Û@ÛÄ˝Û Û@ÛÄ˝Û Û@ÛÄ˝Û Û@ÛÄ˙‡Ù<¿ÙxÄÙ˝¿Ù ÄÙÛ0'˘¿˛J˘ ˝î˘˛( ˘0,˝IJH˘˝ê˘0˛  ˘`7˝˝J~Ck˝8˝î¸46Ü÷˝p ˛)¯hm¨˝‡7˝˝zô>§ ˝0˝ı2*}Iî˝`˛ÍdT˙ì(˝¿4˙˝Jô"§ ˝` ˝ï2*EIî˝¿˛*dTäì(˛Ä9˝˝Jy£D˝‡˝îÚ*=Fà˛¿0˛)‰Tzç˛Ä1˙ ¸˛˝¿¸ ˛˛Ä ¸@˛˛8˝¸‡˛˛Ä0˝¿˛˛˛`˝IJ ˛˝ÙÄ`Ù˛¿Ù˝>Ù‡|Ù¿¯ÙÄ˙Û Û@ÛÄ˝Ûˇ‡Ûˇ¿ÛˇÄ˙Û0Û`Û¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û0Û`Û¿˙Û0Û`Û¿˝Û0Û`Û¿˙Û0Û`Û¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û0Û`Û¿˙Û0Û`Û¿˝Û0Û`Û¿˙Û0Û`Û¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û0Û`Û¿˙Û0Û`Û¿˝Û0Û`Û¿˙Û0Û`Û¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û0Û`Û¿˙Û0Û`Û¿˝Û0Û`Û¿˙Û0Û`Û¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û0Û`Û¿˙Û0Û`Û¿˝Û0Û`Û¿˙Û0Û`Û¿˝Û0Û`Û¿˝Û0Û`Û¿ò<@ć@ćË(˜˝Û0Û`Û¿˙Û0Û`Û¿˝Û0Û`Û¿˙Û0Û`Û¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û0Û`Û¿˙Û0Û`Û¿˝Û0Û`Û¿˙Û0Û`Û¿˝Û0Û`Û¿‡Û0Û`Û¿ÄÛ0Û`Û¿˝å‡Û0ÛÁ‡Ûœ¿íêˇ„ÛˇÛ`Û¿˝íêÛà∞Û`Û¿å‡Û0Û`Û¿&ÄÛ0Û`˛˛˝¿&ÄÛ"0Û`˛˛˝¿#¸ÄÛ0Û`˛û77ç7˝¿&Û0Û`˛ôKLãfl2˝¿$˝Ûà∞Û`˛ôCLä˝¿&úfl¬Û0Û`˛y;4âÃÛ˝¿IÈßÛ0Û`Û¿IÆ¢ÇÛ"0Û`Û¿˛àœûBÛ0Û`Û¿˝Û0Û`Ûˇ¿˙Ûà∞Û`Ûà¿˝Û0Û`Û¿˝Û0Û` Û¿˝Û"0Û`
  2950. Û"¿˙Û0Û`Û¿˝Û0Û`Û¿˙Ûà∞Û`Ûà¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û"0Û`
  2951. Û"¿˙Û0Û`Û¿˝Û0Û`Û¿˙Ûà∞Û`Ûà¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û"0Û`
  2952. Û"¿˙Û0Û`Û¿˝Û0Û`Û¿˙Ûà∞Û`Ûà¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û"0Û`
  2953. Û"¿˙Û0Û`Û¿˝Û0Û`Û¿˙Ûà∞Û`Ûà¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û"0Û`
  2954. Û"¿˙Û0Û`Û¿˝Û0Û`Û¿˙Ûà∞Û`Ûà¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û"0Û`
  2955. Û"¿˙Û0Û`Û¿˝Û0ÑÛ`Û¿˙Ûà∞Û`Ûà¿ò<Ä¿‡Ä¿‡(h˜˝Û0Û`Û¿˝Û0Û`Û¿˝Û"0Û`
  2956. Û"¿˙Û0Û`Û¿˝Û0Û`Û¿˙Ûà∞Ûˇ‡Ûà¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û"0Û"`
  2957. Û"¿˙Û0Û`Û¿˝Û0Û`Û¿˙Ûà∞Ûà‡Ûà¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û"0Û"`
  2958. Û"¿˙Û0Û`Û¿˝Û0Û`Û¿˙Ûà∞Ûà‡Ûà¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û"0Û"`
  2959. Û"¿˙Û0Û`Û¿˝Û0Û`Û¿˙Ûà∞Ûà‡Ûà¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û"0Û"`
  2960. Û"¿˙Û0Û`Û¿˝Û0Û`Û¿˙Ûà∞Ûà‡Ûà¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û"0Û"`
  2961. Û"¿˙Û0Û`Û¿˝Û0Û`Û¿˙Ûà∞Ûà‡Ûà¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û"0Û"`
  2962. Û"¿˙Û0Û`Û¿˝Û0Û`Û¿˙Ûà∞Ûà‡Ûà¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û"0Û"`
  2963. Û"¿˙Û0Û`Û¿˝Û0Û`Û¿˙Ûà∞Ûà‡Ûà¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û"0Û"`
  2964. Û"¿˙Û0Û`Û¿˝Û0Û`Û¿˙Ûà∞Ûà‡Ûà¿˝ÛˇÛˇ‡Ûˇ¿˝Û0Û`Û¿˝Û0Û`Û¿˙Û0Û`Û¿˝‡Ù<¿ÙxÄÙ˘¿Ù ÄÙÛ0¸ÄÙÛ8Ûp(˝IJ ¯˝@¯0˝Ä¯`'˝˝ ¯8˝@¯p ˝Ä¯‡3˙˝!•46Ü÷˝p ˝CJhm¨˝‡˝Üî–⁄X˛¿ò<¿‡¿‡h®˜7˝˝"m*}Iî˝`˝D⁄T˙ì(˝¿˝⥩ı&P˛Ä4˙ ˝"U*EI˝D™Täì(˛¿0˝âT©&P˛Ä9˝˝=í*=Fà˛¿0˝{$Tzç˛Ä`˝ˆH®ı ˛*˝¯˛Ä ¯˛˛@¯ ˛*˝>¯˛‡|¯ ˛¿¯¯@˛Ä˙Û0<Û`xÛ¿˝Û0Û`Û¿˙Û0Û`Û¿˝Û0Û`Û¿˝Û0Û`Û¿˝Û0Û`Û¿˙Û0Û`Û¿…Δ………Δ…    ˛ˇÀ
  2965. À Ñœ äœ˛&cäl‡—
  2966. /Ùé^0—˛-ÑëP–—
  2967. ΔsëNp—
  2968. À
  2969. À    ˛ˇÀ…Δ
  2970. ˇÀ
  2971. À
  2972. #À˛ @–     @–˛â.K1Œl‡“ )O˙C^0“ )N¬MP–“ #…;9«Np“    ˛À
  2973. ˇÀΔ………Δ…Δ……UP…30≈≈≈≈≈≈≈≈≈≈≈ò<@‡@‡®Ë˜≈≈≈≈≈≈˛ ÄÄÅÄ ÙÅ˝˝    @˝·˛ ¡ÅB@"@!˝˛·˛ ¡Ç$@"@!˝˛·˛ä¢Ç$"¯ !a¿qeâ8ÁOπ√ì·˛ä¢Ç'Ä#  !í âñI≈Pë,T·˛Rî≤$@" !‡9IÄrPëêË·˛RîÇ$@"B !…IÅíPëS(·˛RîÅD@"B ! ôIÖ2PëRhR·˛"àÄÉÄ"Ë< !¿eÁâxÀOôóë·¯@˛ÿ¯ê@˛ÿ¯pIJÿ˛@˛  @@˙ADÄÄÊ˛ 0`˝`¿˚aD¡ÄÊ˛ 0`˝`¿˚QD¡ÄÊ#˛ŒÔDwO(ßÁû QNxqÛèq«∏ QD¢ÄÊ#˛$ê£EäPë(®ëR QQDäHä$P ID¢ÄÊ#˛$ê°EPë%/ëQ@JGD:»ã‰P EDîÄÊ#˛$ê°EPë%(Q@JYD äP@EDîÄÊ#˛$ê°M
  2974. Pë%(ëQ@JSDö4Hä$P@CDîÄÊ#˛&è4ÛO"'êÄDLƒe”àâƒXÄADàÄÊ
  2975. ÔÄ˝› ÔIJ ›
  2976. ¸‡›˛˛
  2977. Ç€˛$˛@B ˝€˛D0˛@F ˝€˛
  2978. @P,y<Áät‡J< é9`fi˛xê2Ö"HRçí" úQ #"Eêfi˛Dê"Ö"ORÖò<!>}fi˛?E¯"Ö"@ÖRÖ?Bò! Afi˛D"Ö"PÇ"Ö"òSB!"Efi˛8<y"o"|‚¬åº9‡fi˚ ˚˛¸›˚ ˚˛¸›˚ ˜¸›˚ ˜¸›≈≈≈≈≈≈≈≈≈≈≈˛Ä¿˚Ä’˛Ä ˛Ä’˛Ä˛Ä’˛XéèrƒxÁû÷˛    dëHã$Qëb÷˛ëDüHä$QÙë@÷˛ëDêHä$Që@÷˛ëDë(Hä$—ëB÷˛^xé«àã√X‰@ë<÷˝@˝˛@‘ò<@ć@ćË(˜˝@˝˛@‘ ˝@˝–˛C˛&–˛ÄD˛$ ‘˛ÄH˛$ ‘˛ ÄPDÒ‡%›Œwé’˛ hDà %    (H’˛ HDà@%…(H’˛ DDàÄ%)(H’˛ BLâ%4)(H’˛ C4ã‡$”Õ ∑à’≈≈≈ ˛@¸‡—˛@Ä(—˛@ÄD—˛Q‹Áx‡D—˛Q ëÑÄ`D—˛Q<êrÑÄD—˛QëíÑÇD—˛SBë2ÑÇ(—˛M<–ÀxÅ‚—≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<Ä¿‡Ä¿‡(h˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<¿‡¿‡h®˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<‡‡®∏˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@‡@‡∏¯˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@ć@ć¯8˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<Ä¿‡Ä¿‡8x˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<¿‡¿‡x∏˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@‡@‡∏¯˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@ć@ć¯8˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<Ä¿‡Ä¿‡8x˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<¿‡¿‡x∏˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<‡‡∏»˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@‡@‡∏¯˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@ć@ć¯8˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<Ä¿‡Ä¿‡8x˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<¿‡¿‡x∏˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@‡@‡∏¯˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@ć@ć¯8˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<Ä¿‡Ä¿‡8x˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<¿‡¿‡x∏˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<‡‡∏»˜≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ˇYJ@ˇ ˇˇˇˇ@
  2979. ˇ·ˇ‚7^
  2980. 4H\, Palatino&e.3+ä"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@äMemory4⁄ä˙(‡äApplication Partitions
  2981. (‡ 35
  2982. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2983. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2984.  
  2985.  
  2986.  
  2987.  
  2988.  
  2989. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  2990. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2991. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  2992.  
  2993.  
  2994.  
  2995.  
  2996.  
  2997. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜ ˇˇ˛ˇˇ ˛ˇˇˇ     ˇˇˇˇ
  2998. ˇ˝ˇ ˇ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  2999. 4€4—?òÄ
  3000. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  3001. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  3002.  
  3003.  
  3004.  
  3005.  
  3006.  
  3007. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  3008. ˛ˇˇˇˇ
  3009. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˙ˇˇ˛˝ˇ˛˙ˇˇ˙ˇˇ˛˝ˇ˛˜˜˝˛ˇ˛
  3010. ˛ˇ˛ˇˇ
  3011. ˛ˇ˛ˇˇ˝˛ˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˚ˇˇˇ    ˇˇˇ˝ˇˇ˚˝ˇˇ˝˚ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\ähê(eäY@Ä°dONLNd\êhÛ)Oou allocate space within your application’s heap by making calls to the Memory .°dONLNdPiäu≤(räManager¬†°dONLNdWi±u„)' , either dirï°dONLNdci„ud)2ectly (for instance, using the ,
  3012. Courierï°dONLNdÇiduö)Å    NewHandleï°dONLNdãiöuË)6 function) or indirg`°dONLNdûiËu)N ectly (for ˇˇ˛F°dONLNd©väÇÿ(äinstance, using a rM2°dONLNdºvŸÇ)Ooutine such as H°dONLNdÀvÇ5)@the Wπ™°dONLNd–v5Çz)indow ManageruP°dONLNd›v|ÇÑ)G’s ˇˇ˙“sñ°dONLNd‡vÖǪ)        NewWindowˇˇ˛Fàñ°dONLNdÈv∫Çfi)5, which Ö"°dONLNdÒvflÇ˝)%in turn ÅÆ°dONLNd˘v˛Ç)calls .°dONLNdˇÉäè‡(åäMemory Manager r· °dONLNdɇèó)V,outines). Space in the heap is allocated in °¿°dONLNd;Éòè∏)∏blocks,¿°dONLNdBÉπè)! which can be of any °dONLNdWêäú!(ôä$size needed for a particular object.°dONLNd|¢äÆ*VThe Memory Manager does all the necessary housekeeping to keep track of blocks in the °dONLNd“ØäªÃ*heap as they ar †°dONLNd·ØÕª)Ce allocated and r†°dONLNdÚتˇ)H5eleased. Because these operations can occur in any or†°dONLNd'ت)Îder.@°dONLNd*ت), °dONLNd,ºä»(≈äthe heap doesn’t usually grl†°dONLNdGº»f)xow and shrink in an orµ¿°dONLNd]ºf»í)d    derly wayO†°dONLNdfºí» ),, as the stack does. Instead, °dONLNdÑ…ä’(“ä!after your application has been r·°dONLNd•…’)è0unning for a while, the heap can tend to become °dONLNd’÷ä‚^(flä/fragmented into a patchwork of allocated and fr`°dONLNd÷^‚¬)‘ee blocks, as shown in ∏ °dONLNd÷¬‚⁄)dFigur䇰dONLNd ÷⁄‚Ó)e 2-4(`°dONLNd%÷Ô‚    ). This °dONLNd,„äÔ(Ïäfragmentation is known as Ÿ`°dONLNdF„Ô^)xheap fragmentation.
  3013. H"4H""H]
  3014. ˇ·ˇ‚7^    °dONLNdZä¥(ä
  3015. Figure 2-4°dONLNdeÓ)BA0°dONLNdf“) fragmented heap
  3016. "Üi4!u"vò4@û@û"vbÕÕ
  3017. Ρ‡Á
  3018. ΡÁ
  3019. ΡÁ
  3020. ΡÁ
  3021. ΡÁ
  3022. ΡÁ
  3023. ΡÁ
  3024. ΡÁ
  3025. ΡÁ
  3026. ΡÁ
  3027. ΡÁ
  3028. ΡÁ
  3029. ΡÁ
  3030. ΡÁ
  3031. ΡÁ
  3032. ΡÁ
  3033. ΡÁ
  3034. ΡÁ
  3035. ΡÁ
  3036. ΡÁ
  3037. ΡÁ
  3038. ΡÁ
  3039. ΡÁ
  3040. ΡÁ
  3041. ΡÁ
  3042. ΡÁ
  3043. ΡÁ
  3044. ΡÁ
  3045. ΡÁ
  3046. ΡÁ
  3047. ΡÁ
  3048. ΡÁ
  3049. ΡÁ
  3050. ΡÁ
  3051. ΡÁ
  3052. ΡÁ
  3053. ΡÁ
  3054. ΡÁ
  3055. ΡÁ
  3056. ΡÁ
  3057. ΡÁ
  3058. ΡÁ
  3059. ΡÁ
  3060. ΡÁ
  3061. ΡÁ
  3062. ΡÁ
  3063. ΡÁ
  3064. ΡÁ
  3065. ΡÁ
  3066. ΡÁ
  3067. ΡÁ
  3068. ΡÁ
  3069. ΡÁ
  3070. ΡÁ
  3071. ΡÁ
  3072. ΡÁ
  3073. ΡÁ
  3074. ΡÁ
  3075. ΡÁ
  3076. ΡÁ
  3077. ΡÁ
  3078. ΡÁò4@Äû@Äûbv¢
  3079. ΡÁ
  3080. ΡÁ
  3081. ΡÁ
  3082. ΡÁ
  3083. ΡÁ
  3084. ΡÁ
  3085. ΡÁ
  3086. ΡÁ
  3087. ΡÁ
  3088. ΡÁ
  3089. ΡÁ
  3090. ΡÁ
  3091. ΡÁ
  3092. ΡÁ
  3093. ΡÁ
  3094. ΡÁ
  3095. ΡÁ
  3096. ΡÁ
  3097. ΡÁ
  3098. ΡÁ
  3099. ΡÁ
  3100. ΡÁ
  3101. ΡÁ
  3102. ΡÁ
  3103. ΡÁ
  3104. ΡÁ
  3105. ΡÁ
  3106. ΡÁ
  3107. ΡÁ
  3108. ΡÁ
  3109. ΡÁ
  3110. ΡÁ
  3111. ΡÁ
  3112. ΡÁ
  3113. ΡÁ
  3114. ΡÁ
  3115. ΡÁ
  3116. ΡÁ
  3117. ΡÁ
  3118. ΡÁ
  3119. ΡÁ
  3120. ΡÁ
  3121. ΡÁ
  3122. ΡÁ
  3123. ΡÁ
  3124. ΡÁ
  3125. ΡÁ
  3126. ΡÁ
  3127. ΡÁ
  3128. ΡÁ
  3129. ΡÁ
  3130. ΡÁ
  3131. ΡÁ
  3132. ΡÁ
  3133. ΡÁ
  3134. ΡÁ
  3135. ΡÁ
  3136. ΡÁ
  3137. ΡÁ
  3138. ΡÁ
  3139. ΡÁ
  3140. ΡÁ
  3141. ΡÁ
  3142. ΡÁò4Ä¿ûÄ¿û¢v‚
  3143. ΡÁ
  3144. ΡÁ
  3145. ΡÁ
  3146. ΡÁ
  3147. ΡÁ
  3148. ΡÁ
  3149. ΡÁ
  3150. ΡÁ
  3151. ΡÁ
  3152. ΡÁ
  3153. ΡÁ
  3154. ΡÁ
  3155. ΡÁ
  3156. ΡÁ
  3157. ΡÁ
  3158. ΡÁ
  3159. ΡÁ
  3160. ΡÁ
  3161. ΡÁ
  3162. ΡÁ
  3163. ΡÁ
  3164. ΡÁ
  3165. ΡÁ
  3166. ΡÁ
  3167. ΡÁ
  3168. ΡÁ
  3169. ΡÁ
  3170. ΡÁ
  3171. ΡÁ
  3172. ΡÁ
  3173. ΡÁ
  3174. ΡÁ
  3175. ΡÁ
  3176. ΡÁ
  3177. ΡÁ
  3178. ΡÁ
  3179. ΡÁ
  3180. ΡÁ
  3181. ΡÁ
  3182. ΡÁ
  3183. ΡÁ
  3184. ΡÁ
  3185. ΡÁ
  3186. ΡÁ
  3187. ΡÁ
  3188. ΡÁ
  3189. ΡÁ
  3190. ΡÁ
  3191. ΡÁ
  3192. ΡÁ
  3193. ΡÁ
  3194. ΡÁ
  3195. ΡÁ
  3196. ΡÁ
  3197. ΡÁ
  3198. ΡÁ
  3199. ΡÁ
  3200. ΡÁ
  3201. ΡÁ
  3202. ΡÁ
  3203. ΡÁ
  3204. ΡÁ
  3205. ΡÁ
  3206. ΡÁò4¿û¿û‚v"
  3207. ΡÁ
  3208. ΡÁ
  3209. ΡÁ
  3210. ΡÁ
  3211. ΡÁ
  3212. ΡÁ
  3213. ΡÁ
  3214. ΡÁ
  3215. ΡÁ
  3216. ΡÁ
  3217. ΡÁ
  3218. ΡÁ
  3219. ΡÁ
  3220. ΡÁ
  3221. ΡÁ
  3222. ΡÁ
  3223. ΡÁ
  3224. ΡÁ
  3225. ΡÁ
  3226. ΡÁ
  3227. ΡÁ
  3228. ΡÁ
  3229. ΡÁ
  3230. ΡÁ
  3231. ΡÁ
  3232. ΡÁ
  3233. ΡÁ
  3234. ΡÁ
  3235. ΡÁ
  3236. ΡÁ
  3237. ΡÁ
  3238. ΡÁ
  3239. ΡÁ
  3240. ΡÁ
  3241. ΡÁ
  3242. ΡÁ
  3243. ΡÁ
  3244. ΡÁ
  3245. ΡÁ
  3246. ΡÁ
  3247. ΡÁ
  3248. ΡÁ
  3249. ΡÁ
  3250. ΡÁ
  3251. ΡÁ
  3252. ΡÁ
  3253. ΡÁ
  3254. ΡÁ
  3255. ΡÁ
  3256. ΡÁ
  3257. ΡÁ
  3258. ΡÁ
  3259. ΡÁ
  3260. ΡÁ
  3261. ΡÁ
  3262. ΡÁ
  3263. ΡÁ
  3264. ΡÁ
  3265. ΡÁ
  3266. ΡÁ
  3267. ΡÁ
  3268. ΡÁ
  3269. ΡÁ
  3270. ΡÁò4@û@û"vb
  3271. ΡÁ
  3272. ΡÁ
  3273. ΡÁ
  3274. ΡÁ
  3275. ΡÁ
  3276. ΡÁ
  3277. ΡÁ
  3278. ΡÁ
  3279. ΡÁ
  3280. ΡÁ
  3281. ΡÁ
  3282. ΡÁ
  3283. ΡÁ
  3284. ΡÁ
  3285. ΡÁ
  3286. ΡÁ
  3287. ΡÁ
  3288. ΡÁ
  3289. ΡÁ
  3290. ΡÁ
  3291. ΡÁ
  3292. ΡÁ
  3293. ΡÁ
  3294. ΡÁ
  3295. ΡÁ
  3296. ΡÁ
  3297. ΡÁ
  3298. ΡÁ
  3299. ΡÁ
  3300. ΡÁ
  3301. ΡÁ
  3302. ΡÁ
  3303. ΡÁ
  3304. ΡÁ
  3305. ΡÁ
  3306. ΡÁ
  3307. ΡÁ
  3308. ΡÁ
  3309. ΡÁ
  3310. ΡÁ
  3311. ΡÁ
  3312. ΡÁ
  3313. ΡÁ
  3314. ΡÁ
  3315. ΡÁ
  3316. ΡÁ
  3317. ΡÁ
  3318. ΡÁ
  3319. ΡÁ
  3320. ΡÁ
  3321. ΡÁ
  3322. ΡÁ
  3323. ΡÁ
  3324. ΡÁ
  3325. ΡÁ
  3326. ΡÁ
  3327. ΡÁ
  3328. ΡÁ
  3329. ΡÁ
  3330. ΡÁ
  3331. ΡÁ
  3332. ΡÁ
  3333. ΡÁ
  3334. ΡÁò4@Äû@Äûbv¢
  3335. ΡÁ
  3336. ΡÁ
  3337. ΡÁ
  3338. ΡÁ
  3339. ΡÁÕÕÕÕÕÕÕÕÕÕÕÕÕ˛ "ÄÄá Ù˚² #¡ÅHÄÄ0˝Â˛ #¡Ç(Ä Ä(˝Â˛"ä¢Ç Ä"¯@(;ú|˜Ûútq`˲"ä¢Ç##Â$@H"Ñà¢â"å"âê˲"Rî≤ Ä"$@|Ñàæâ>Ñ>9˲"RîÇ0Ä"~@D2Ñà†â Ñ …˲"RîÅPÄ"@Ñ&åà¢â"Ñ"ô˲""àÄè"Ë@Çtàúâú|e‡Ë¯IJ˙Á¯êIJH˙Á¯p˝8˙Á!˛ @˛  ˝ÄÄ˝ÇHÄÄÓ˛  0`˝¡Ä˚¬H¡ÄÓ˛  0`˝¡Ä˚¢H¡ÄÓ#˛#‹Ô:DwO<(ß=œ ¢úxs„èqœ8 ¢H¢ÄÓ#˛"(êΔEäP¢    (®¢0í ¢¢Då$Hä(ê íH¢ÄÓ#˛"(ê¬EP¢    %/¢0ë@îéD<'»ãËê äHîÄÓ#˛"(ê¬EP¢    %("0ë@î≤DÃ$äê@äHîÄÓ#˛"(ê¬M
  3340. P¢    %(¢0ë@î¶DúdHä(ê@ÜHîÄÓ#˛",è>4ÛO" "'"/ÄàôDg£àâ»òÄÇHàÄÓ
  3341. ÔÄ˝ Â ÔIJ@ ˝¿Â˛1¯˛ @‰˛"»˛Ä베‰˛"Ñ˛Äë ˛ ‰˛Ñ ,Ò=«äˇÅ <Oq¡—«Ê˛ å 3    "àS$ ¬H¢2(ôÊ˛t@#    "èS    Ñ$¬H£¬ÔëÊ˛B@#    "ÄÖS    à~¬H†"Ê˛Bà@#    "êÇ#    ê¬H§"(ëÊ˛<pÄ<Ò"œ"¯‚<H≥¡Ò«Ê˚ ˚˛˚Ê˚ ˚˛˚Ê˚ ˜˚Ê˚ ˜˚ÊÕÕÕÕÕÕÕÕÕò4Ä¿ûÄ¿û¢v‚ÕÕ˛ÄÄ˚Ä›˛ Ä@˛Ä›˛
  3342. Ä ˛Ä›˛
  3343. ,Xúèr»π«ûfi˛2d¢Hã(í$ëbfi˛"DæHä(ì‰ë@fi˛"D†(Hä(íë@fi˛!"D¢HHä)í$ëBfi˛ ºxúáàãΔôƒ@ë<fi˝ @˝˛@‹˝ @˝˛@‹ ˝ @˝ÿ˛ @@OÄ!IJ킲!`¿˝ H@"˝íÊ˛!`¿˝ H@$˝íÊ˛Q^;…„ÁqŒà@("xíàÓÁ;«Á˛Qa")("(èÄ4"Díâàî$Á˛Ja")/ Ëà$"D íâ‰Éî$Á˛!Ja") £)""D@íàåî$Á˛!Ja")p¢i!&DÄíöâî$Á˛ D^")Ø1ö!öEíiÊÜ[ƒÁ˜ ÿ¯@ÿ¯¿ÿ ˛"ĸ‡Ÿ˛"ÄÄ(Ÿ˛"ÄÄDŸ˛"ë‹Áx‡DŸ˛"ë ëÑÄ`DŸ˛"ë<êrÑÄDŸ˛"ëëíÑÇDŸ˛"ìBë2ÑÇ(Ÿ˛"ç<–ÀxÅ‚ŸÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿û¿û‚v"ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@û@û"vbÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@Aû@AûbvcÕò4@û@û"vbÕÕ
  3344. Î3 ÁËÁË0Á–ËÁ–Ë0ÁËÁË0Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô> ˝ÔÁ Ô Â˝˚L˜ 0Á˝ ˚H˜Á˝˚LÓ46Üv˚80Á˚})*}IT˚p½0˚M)*EIT˚`Á`˚LÈ*=FH˚‡Â˝@˙ ˛¸¿0Á˝¿˚¿˛¸ÄÁ˛‡0Á Ô Â ˝ÔˇÁ Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Áò4@Äû@Äûbv¢ ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝ÔˇÁ ˝Ô"00Á Ô0 ˝Ô0Á Ôà∞ ˝Ô00Á ˝Ô0Á ˝Ô"00Á Ô0 ˝Ô0Á Ôà∞ ˝Ô00Á ˝Ô0Á ˝Ô"00Á Ô0 ˝Ô0Á Ôà∞ ˝Ô00Á ˝Ô0Á ˝Ô"00Á Ôˇ ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0Âò4Ä¿ûÄ¿û¢v‚ ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝ÔˇÁ ˝Ô"00Á Ô0 ˝Ô0Á Ôà∞ ˝Ô00Á ˝Ô0Á ˝Ô"00Á Ô0 ˝Ô0Á Ôà∞ ˝Ô00Á ˝Ô0Á ˝Ô"00Á Ô0 ˝Ô0Á Ôà∞ ˝Ô00Á ˝Ô0Á ˝Ô"00Á Ô0 ˝Ô0Á Ôà∞ ˝Ô00Á ˝ÔˇÁ ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ôˇ0Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0Âò4¿û¿û‚v" ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ôˇ ˝Ô00Á ˝Ô0Á ˝Ô"00Á Ô0 ˝Ô0Á Ôà∞ ˝Ô00Á ˝Ô0Á ˝Ô"00Á Ô0 ˝Ô0Á Ôà∞ ˝Ôˇ0Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Áò4@û@û"vb ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0Á ˝Ô00Á Ôˇ ˝Ô0Á Ô0 ˝Ô00Á ˝Ô>Á ˝Ô0Á˚ ˆ ½ ˚ ˆÁ˚#JhfåÏ˚½˚$⁄TıR®˚00Á˝0˚$™TÖR®˚pÁ˝ ˚?$TuLê˚`0Á`ˆ˚¿Â˝¿ˆ ¸¿ÁÄIJ‡0Á ˝Ô Á ˝Ô00Á Ô0 ˝Ô0Á Ô0 ˝Ô00Á ˝Ô0ÁË0Á–ËÁ–Ë0Á ˛ˇ¿ÓÁ ˛@Ó0Á @#êÄ ⁄˛    @SêÄ ıÁ@S1ª„úô≠Ä€˛
  3345. @sJMÙí¶s¿ˆ0Á˛
  3346. @ãJ5Ñí¶+@ˆÁ˛
  3347. @ã1›ÛúôÂĈ0Á    @” ˛@ÓÁ    ˇ¿”Ë0ÁËÁ ˛ˇ¿Ó0Á    @” ˛@ÓÁ
  3348. à¿x ÿ˛@@ Û0Á˛@Ff1≠ÄÙÁ˛"@|ˇJs¿Ù0Á @DàJ+@Ÿ˛@Dw1ÂÄÙÁ    à¿” ˛@Ó0Á ˛ˇ¿ÓÁË0Á–ËÁ–ò4@Äû@Äûbv¢Ë0ÁËÁË0Á
  3349.  ÎÿÁ
  3350. ÎUPÁÕÕÕÕÕÕÕÕÕÕÕÕÕ˛ "ÄÄá Ù˚² #¡ÅHÄÄ0˝Â˛ #¡Ç(Ä Ä(˝Â˛"ä¢Ç Ä"¯@(;ú|˜Ûútq`˲"ä¢Ç##Â$@H"Ñà¢â"å"âê˲"Rî≤ Ä"$@|Ñàæâ>Ñ>9˲"RîÇ0Ä"~@D2Ñà†â Ñ …˲"RîÅPÄ"@Ñ&åà¢â"Ñ"ô˲""àÄè"Ë@Çtàúâú|e‡Ë¯IJ˙Á¯êIJH˙Á¯p˝8˙Á!˛ @˛  ˝ÄÄ˝ÇHÄÄÓ˛  0`˝¡Ä˚¬H¡ÄÓ˛  0`˝¡Ä˚¢H¡ÄÓ#˛#‹Ô:DwO<(ß=œ ¢úxs„èqœ8 ¢H¢ÄÓ#˛"(êΔEäP¢    (®¢0í ¢¢Då$Hä(ê íH¢ÄÓ#˛"(ê¬EP¢    %/¢0ë@îéD<'»ãËê äHîÄÓ#˛"(ê¬EP¢    %("0ë@î≤DÃ$äê@äHîÄÓ#˛"(ê¬M
  3351. P¢    %(¢0ë@î¶DúdHä(ê@ÜHîÄÓ#˛",è>4ÛO" "'"/ÄàôDg£àâ»òÄÇHàÄÓ
  3352. ÔÄ˝ Â ÔIJ@ ˝¿Â˛1¯˛ @‰˛"»˛Ä베‰˛"Ñ˛Äë ˛ ‰˛Ñ ,Ò=«äˇÅ <Oq¡—«Ê˛ å 3    "àS$ ¬H¢2(ôÊ˛t@#    "èS    Ñ$¬H£¬ÔëÊ˛B@#    "ÄÖS    à~¬H†"Ê˛Bà@#    "êÇ#    ê¬H§"(ëÊ˛<pÄ<Ò"œ"¯‚<H≥¡Ò«Ê˚ ˚˛˚Ê˚ ˚˛˚Ê˚ ˜˚Ê˚ ˜˚ÊÕÕÕÕÕÕÕÕÕò4Ä¿ûÄ¿û¢v‚ÕÕ˛ÄÄ˚Ä›˛ Ä@˛Ä›˛
  3353. Ä ˛Ä›˛
  3354. ,Xúèr»π«ûfi˛2d¢Hã(í$ëbfi˛"DæHä(ì‰ë@fi˛"D†(Hä(íë@fi˛!"D¢HHä)í$ëBfi˛ ºxúáàãΔôƒ@ë<fi˝ @˝˛@‹˝ @˝˛@‹ ˝ @˝ÿ˛ @@OÄ!IJ킲!`¿˝ H@"˝íÊ˛!`¿˝ H@$˝íÊ˛Q^;…„ÁqŒà@("xíàÓÁ;«Á˛Qa")("(èÄ4"Díâàî$Á˛Ja")/ Ëà$"D íâ‰Éî$Á˛!Ja") £)""D@íàåî$Á˛!Ja")p¢i!&DÄíöâî$Á˛ D^")Ø1ö!öEíiÊÜ[ƒÁ˜ ÿ¯@ÿ¯¿ÿ ˛"ĸ‡Ÿ˛"ÄÄ(Ÿ˛"ÄÄDŸ˛"ë‹Áx‡DŸ˛"ë ëÑÄ`DŸ˛"ë<êrÑÄDŸ˛"ëëíÑÇDŸ˛"ìBë2ÑÇ(Ÿ˛"ç<–ÀxÅ‚ŸÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿û¿û‚v"ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@û@û"vbÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@Aû@AûbvcÕˇ?Ú@ˇ ˇˇˇˇ@
  3355. ˇ·ˇ‚7^
  3356. 4*\¯, Palatino&e.3+l"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@lMemory4⁄*˙¯
  3357. (‡*36    )BApplication Partitions4^*¿¯
  3358. °dONLNd\lhÑ(elOne r;‡°dONLNd\Öh‹)Lesult of heap fragmentation is that the Memory Manager might not be able to °dONLNdQilu·(rlsatisfy your application’s r@°dONLNdmi‚u‰)v=equest to allocate a block of a particular size. Even though °dONLNd™vlÇ}(lther"`°dONLNdÆv~Ç∫)e is enough fr"`°dONLNdºv∫ÇL)<#ee space available, the space is br'†°dONLNdflvLÇÔ)í%oken up into blocks smaller than the °dONLNdÉlèo(ålrE°dONLNdÉpèñ)@equested size. When this happens, the Memory Manager tries to cr™°dONLNdEÉñè›(åñeate the needed °dONLNdUêlú'(ôl)space by moving allocated blocks togetherο°dONLNd~ê&úÖ)∫, thus collecting the fr5Ä°dONLNdñêÜú‹)`ee space in a single °dONLNd´ùl©w(¶llar-`°dONLNdÆùx©) &ger block. This operation is known as {`°dONLNd‘ù©n)ßheap compaction.tÄ°dONLNd‰ùo©q)P ÙÄ°dONLNdÂùq©â)Figur«@°dONLNdÍùâ©ù)e 2-5d¿°dONLNdÔùû©”)  shows the rü°dONLNd˚ù”©Ó)5esults °dONLNd™l∂7(≥l+of compacting the fragmented heap shown in Õ†°dONLNd-™7∂O)ÀFigur†`°dONLNd2™O∂c)e 2-4=‡°dONLNd7™d∂f).
  3359. ÿ*ȯ4Ÿ*ȯ"Ÿ*]
  3360. ˇ·ˇ‚7^    °dONLNd9ŒlŸñ(÷l
  3361. Figure 2-5°dONLNdDŒÆŸ¥)BA0°dONLNdEŒ¥Ÿ˘) compacted heap
  3362. °dONLNdUIlU(Rl(Heap fragmentation is generally not a prQ¿°dONLNd}I U·)¥*oblem as long as the blocks of memory you °dONLNdßVlbô(_l allocate aráÄ°dONLNd≤Vôbß)-e frÍ°dONLNd∂Vßb_)'ee to move during heap compaction. TheràÄ°dONLNd›V`bp)πe aró °dONLNd·Vpb†)
  3363. e, howeverm`°dONLNdÎV†bÒ)0, two situations in °dONLNdˇcloÕ(llwhich a block is not fr˛¿°dONLNdcÕoL)aee to move: when it is a nonrÙ°dONLNd3cLofl)#elocatable block, and when it is a °dONLNdVpl|o(ylrE°dONLNdWpp|Z)7elocatable block that is temporarily locked in place. T,`°dONLNdépZ|Í)Ío minimize heap fragmentation, °dONLNd≠}lâ«(Ülyou should use nonrÖ‡°dONLNd¿}«â>)[elocatable blocks sparingly뇰dONLNd€}=â¢)v, and you should lock r< °dONLNdÚ}£â)felocatable blocks °dONLNdälñ¯(ìlonly when absolutely necessary„¿°dONLNd"ä˜ñ)ã. See 6¿°dONLNd(äñ])“Memory Blocks”v‡°dONLNd7ä]ñë)O starting on ;°dONLNdDäíñ©)5page ‡°dONLNdIä™ñ¥)38‡°dONLNdKä¥ñÕ)
  3364.  for a °dONLNdRól£Ø(†ldescription of rÔ¿°dONLNdbóØ£)Celocatable and nonrÕ‡°dONLNduó£S)Welocatable blocks.
  3365. Èc1˜4ËWÈXò4@ü@üÈX)˜ÕÕ
  3366. ͡ÄË
  3367. ͡¿Ë
  3368. ͡¿Ë
  3369. ͡¿Ë
  3370. ͡¿Ë
  3371. ͡¿Ë
  3372. ͡¿Ë
  3373. ͡¿Ë
  3374. ͡¿Ë
  3375. ͡¿Ë
  3376. ͡¿Ë
  3377. ͡¿Ë
  3378. ͡¿Ë
  3379. ͡¿Ë
  3380. ͡¿Ë
  3381. ͡¿Ë
  3382. ͡¿Ë
  3383. ͡¿Ë
  3384. ͡¿Ë
  3385. ͡¿Ë
  3386. ͡¿Ë
  3387. ͡¿Ë
  3388. ͡¿Ë
  3389. ͡¿Ë
  3390. ͡¿Ë
  3391. ͡¿Ë
  3392. ͡¿Ë
  3393. ͡¿Ë
  3394. ͡¿Ë
  3395. ͡¿Ë
  3396. ͡¿Ë
  3397. ͡¿Ë
  3398. ͡¿Ë
  3399. ͡¿Ë
  3400. ͡¿Ë
  3401. ͡¿Ë
  3402. ͡¿Ë
  3403. ͡¿Ë
  3404. ͡¿Ë
  3405. ͡¿Ë
  3406. ͡¿Ë
  3407. ͡¿Ë
  3408. ͡¿Ë
  3409. ͡¿Ë
  3410. ͡¿Ë
  3411. ͡¿Ë
  3412. ͡¿Ë
  3413. ͡¿Ë
  3414. ͡¿Ë
  3415. ͡¿Ë
  3416. ͡¿Ë
  3417. ͡¿Ë
  3418. ͡¿Ë
  3419. ͡¿Ë
  3420. ͡¿Ë
  3421. ͡¿Ë
  3422. ͡¿Ë
  3423. ͡¿Ë
  3424. ͡¿Ë
  3425. ͡¿Ë
  3426. ͡¿Ë
  3427. ͡¿Ëò4@Äü@Äü)Xi˜
  3428. ͡¿Ë
  3429. ͡¿Ë
  3430. ͡¿Ë
  3431. ͡¿Ë
  3432. ͡¿Ë
  3433. ͡¿Ë
  3434. ͡¿Ë
  3435. ͡¿Ë
  3436. ͡¿Ë
  3437. ͡¿Ë
  3438. ͡¿Ë
  3439. ͡¿Ë
  3440. ͡¿Ë
  3441. ͡¿Ë
  3442. ͡¿Ë
  3443. ͡¿Ë
  3444. ͡¿Ë
  3445. ͡¿Ë
  3446. ͡¿Ë
  3447. ͡¿Ë
  3448. ͡¿Ë
  3449. ͡¿Ë
  3450. ͡¿Ë
  3451. ͡¿Ë
  3452. ͡¿Ë
  3453. ͡¿Ë
  3454. ͡¿Ë
  3455. ͡¿Ë
  3456. ͡¿Ë
  3457. ͡¿Ë
  3458. ͡¿Ë
  3459. ͡¿Ë
  3460. ͡¿Ë
  3461. ͡¿Ë
  3462. ͡¿Ë
  3463. ͡¿Ë
  3464. ͡¿Ë
  3465. ͡¿Ë
  3466. ͡¿Ë
  3467. ͡¿Ë
  3468. ͡¿Ë
  3469. ͡¿Ë
  3470. ͡¿Ë
  3471. ͡¿Ë
  3472. ͡¿Ë
  3473. ͡¿Ë
  3474. ͡¿Ë
  3475. ͡¿Ë
  3476. ͡¿Ë
  3477. ͡¿Ë
  3478. ͡¿Ë
  3479. ͡¿Ë
  3480. ͡¿Ë
  3481. ͡¿Ë
  3482. ͡¿Ë
  3483. ͡¿Ë
  3484. ͡¿Ë
  3485. ͡¿Ë
  3486. ͡¿Ë
  3487. ͡¿Ë
  3488. ͡¿Ë
  3489. ͡¿Ë
  3490. ͡¿Ë
  3491. ͡¿Ëò4Ä¿üÄ¿üiX©˜
  3492. ͡¿Ë
  3493. ͡¿Ë
  3494. ͡¿Ë
  3495. ͡¿Ë
  3496. ͡¿Ë
  3497. ͡¿Ë
  3498. ͡¿Ë
  3499. ͡¿Ë
  3500. ͡¿Ë
  3501. ͡¿Ë
  3502. ͡¿Ë
  3503. ͡¿Ë
  3504. ͡¿Ë
  3505. ͡¿Ë
  3506. ͡¿Ë
  3507. ͡¿Ë
  3508. ͡¿Ë
  3509. ͡¿Ë
  3510. ͡¿Ë
  3511. ͡¿Ë
  3512. ͡¿Ë
  3513. ͡¿Ë
  3514. ͡¿Ë
  3515. ͡¿Ë
  3516. ͡¿Ë
  3517. ͡¿Ë
  3518. ͡¿Ë
  3519. ͡¿Ë
  3520. ͡¿Ë
  3521. ͡¿Ë
  3522. ͡¿Ë
  3523. ͡¿Ë
  3524. ͡¿Ë
  3525. ͡¿Ë
  3526. ͡¿Ë
  3527. ͡¿Ë
  3528. ͡¿Ë
  3529. ͡¿Ë
  3530. ͡¿Ë
  3531. ͡¿Ë
  3532. ͡¿Ë
  3533. ͡¿Ë
  3534. ͡¿Ë
  3535. ͡¿Ë
  3536. ͡¿Ë
  3537. ͡¿Ë
  3538. ͡¿Ë
  3539. ͡¿Ë
  3540. ͡¿Ë
  3541. ͡¿Ë
  3542. ͡¿Ë
  3543. ͡¿Ë
  3544. ͡¿Ë
  3545. ͡¿Ë
  3546. ͡¿Ë
  3547. ͡¿Ë
  3548. ͡¿Ë
  3549. ͡¿Ë
  3550. ͡¿Ë
  3551. ͡¿Ë
  3552. ͡¿Ë
  3553. ͡¿Ë
  3554. ͡¿Ë
  3555. ͡¿Ëò4¿ü¿ü©XȘ
  3556. ͡¿Ë
  3557. ͡¿Ë
  3558. ͡¿Ë
  3559. ͡¿Ë
  3560. ͡¿Ë
  3561. ͡¿Ë
  3562. ͡¿Ë
  3563. ͡¿Ë
  3564. ͡¿Ë
  3565. ͡¿Ë
  3566. ͡¿Ë
  3567. ͡¿Ë
  3568. ͡¿Ë
  3569. ͡¿Ë
  3570. ͡¿Ë
  3571. ͡¿Ë
  3572. ͡¿Ë
  3573. ͡¿Ë
  3574. ͡¿Ë
  3575. ͡¿Ë
  3576. ͡¿Ë
  3577. ͡¿Ë
  3578. ͡¿Ë
  3579. ͡¿Ë
  3580. ͡¿Ë
  3581. ͡¿Ë
  3582. ͡¿Ë
  3583. ͡¿Ë
  3584. ͡¿Ë
  3585. ͡¿Ë
  3586. ͡¿Ë
  3587. ͡¿Ë
  3588. ͡¿Ë
  3589. ͡¿Ë
  3590. ͡¿Ë
  3591. ͡¿Ë
  3592. ͡¿Ë
  3593. ͡¿Ë
  3594. ͡¿Ë
  3595. ͡¿Ë
  3596. ͡¿Ë
  3597. ͡¿Ë
  3598. ͡¿Ë
  3599. ͡¿Ë
  3600. ͡¿Ë
  3601. ͡¿Ë
  3602. ͡¿Ë
  3603. ͡¿Ë
  3604. ͡¿Ë
  3605. ͡¿Ë
  3606. ͡¿Ë
  3607. ͡¿Ë
  3608. ͡¿Ë
  3609. ͡¿Ë
  3610. ͡¿Ë
  3611. ͡¿Ë
  3612. ͡¿Ë
  3613. ͡¿Ë
  3614. ͡¿Ë
  3615. ͡¿Ë
  3616. ͡¿Ë
  3617. ͡¿Ë
  3618. ͡¿Ë
  3619. ͡¿Ëò4@ü@üÈX)˜
  3620. ͡¿Ë
  3621. ͡¿Ë
  3622. ͡¿Ë
  3623. ͡¿Ë
  3624. ͡¿Ë
  3625. ͡¿Ë
  3626. ͡¿Ë
  3627. ͡¿Ë
  3628. ͡¿Ë
  3629. ͡¿Ë
  3630. ͡¿Ë
  3631. ͡¿Ë
  3632. ͡¿Ë
  3633. ͡¿Ë
  3634. ͡¿Ë
  3635. ͡¿Ë
  3636. ͡¿Ë
  3637. ͡¿Ë
  3638. ͡¿Ë
  3639. ͡¿Ë
  3640. ͡¿Ë
  3641. ͡¿Ë
  3642. ͡¿Ë
  3643. ͡¿Ë
  3644. ͡¿Ë
  3645. ͡¿Ë
  3646. ͡¿Ë
  3647. ͡¿Ë
  3648. ͡¿Ë
  3649. ͡¿Ë
  3650. ͡¿Ë
  3651. ͡¿Ë
  3652. ͡¿Ë
  3653. ͡¿Ë
  3654. ͡¿Ë
  3655. ͡¿Ë
  3656. ͡¿Ë
  3657. ͡¿Ë
  3658. ͡¿Ë
  3659. ͡¿Ë
  3660. ͡¿Ë
  3661. ͡¿Ë
  3662. ͡¿Ë
  3663. ͡¿Ë
  3664. ͡¿Ë
  3665. ͡¿Ë
  3666. ͡¿Ë
  3667. ͡¿Ë
  3668. ͡¿Ë
  3669. ͡¿Ë
  3670. ͡¿Ë
  3671. ͡¿Ë
  3672. ͡¿Ë
  3673. ͡¿Ë
  3674. ͡¿Ë
  3675. ͡¿Ë
  3676. ͡¿Ë
  3677. ͡¿Ë
  3678. ͡¿Ë
  3679. ͡¿Ë
  3680. ͡¿Ë
  3681. ͡¿Ë
  3682. ͡¿Ë
  3683. ͡¿Ëò4@Äü@Äü)Xi˜
  3684. ͡¿Ë
  3685. ͡¿Ë
  3686. ͡¿Ë
  3687. ͡¿Ë
  3688. ͡¿ËÕÕÕÕÕÕÕÕÕÕÕÕÕ˛ ÄÄÅ Ù ˚Ä˲ ¡ÅA Ä`¸Ä˲ ¡Ç# ÄP¸Ä˲ä¢Ç%"¯<@PyÓXpÓ9`Á˛ä¢Ç)#Â"@ê1Ödã"EêÁ˛Rî≤)"@¯ ÖD:>Á˛RîÇ?Ä"B@à ÖD  eÁ˛RîÅA""@!ÖDö"MÁ˛"àÄÅ"Ë@yxeÊ3‡Á¯ĸ@˝Ê¯êĸ@˝Ê¯p˚@˝Ê"˛@˛  ˝@@˛˛ADÄÄÓ˛ 0`˝`¿˚aD¡ÄÓ˛ 0`˝`¿˚QD¡ÄÓ#˛ŒÔDwO(ßÁû QNxqÛèq«∏ QD¢ÄÓ#˛$ê£EäPë(®ëR QQDäHä$P ID¢ÄÓ#˛$ê°EPë%/ëQ@JGD:»ã‰P EDîÄÓ#˛$ê°EPë%(Q@JYD äP@EDîÄÓ#˛$ê°M
  3689. Pë%(ëQ@JSDö4Hä$P@CDîÄÓ#˛&è4ÛO"'êÄDLƒe”àâƒXÄADàÄÓ
  3690. ÔÄ˝ ÔIJ Â
  3691. ¸‡Â˛1¯˛ é@‰˛»˛@Q˛‰˛Ñ˛@Q ˛‰˛Ñ ,y<Áät‡A O9¡—√ñÊ˛å 2Ö"HRçÇ$ °Hí2$YÊ˛t@"Ö"ORÖD$°Hì¬Á—Ê˛!@"Ö"@ÖRÖH~°Hê"Ê˛!à@"Ö"PÇ"ÖP°Hî"$QÊ˛pÄ<y"o"|‚üHõ¡Ò√ûÊ˚ ˚˛˚Ê˚ ˚˛˚Ê˚ ˜˚Ê˚ ˜˚ÊÕÕÕÕÕÕÕÕÕò4Ä¿üÄ¿üiX©˜ÕÕ˛Ä¿˚Ä›˛Ä ˛Ä›˛Ä˛Ä›˛XéèrƒxÁûfi˛    dëHã$Qëbfi˛ëDüHä$QÙë@fi˛ëDêHä$Që@fi˛ëDë(Hä$—ëBfi˛^xé«àã√X‰@ë<fi˝@˝˛@‹˝@˝˛@‹ ˝@˝ÿ˛@@/Ä¿˛í‚˛Ä`¿˝(@˝íÊ˛Ä`¿˝(@˝íÊ˛Q^;≈„„π«H@xíDÓsπÁÁ˛Qa"%$$OÄDíEDRÁ˝ÄJa"%'ê‰HD íE‰A“Á˛ÄJa"% S$àD@íDFRÁ˛ÄJa"%hRdàìDÄíND“Á˛D^"%ßôïÕEí5ÊC9‰Á˜ ÿ¯@ÿ¯¿ÿ ˛@¸‡Ÿ˛@Ä(Ÿ˛@ÄDŸ˛Q‹Áx‡DŸ˛Q ëÑÄ`DŸ˛Q<êrÑÄDŸ˛QëíÑÇDŸ˛SBë2ÑÇ(Ÿ˛M<–ÀxÅ‚ŸÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿ü¿ü©XȘÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@ü@üÈX)˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@Aü@Aü)X*˜Õò4@ü@üÈX)˜ÕÕÍ3Á
  3692. Í@ËÕ
  3693. Í¿Ë
  3694. Í@Ë
  3695. Í¿ËÕ
  3696. Í@ËÕ
  3697. Í¿ËÔ@ËÔ¿Ë
  3698. ˝ÔÂÔ@Ë
  3699. ˝ÔÂÔ¿ËÔÄ@Ë¿Ä¿Ë ˝ÄÂ˚ǘ@Ë˝˚˜Â˚ªç —ùĸ¿Ë˚ Jû™U˚@Ë ˚ Jê™U˚¿Ë˝˚∫Jé©í˚8Â˙˛˚p@Ë˝0˙p˛˚`Â|Ô¯¿ËÔ@ËÔ¿Ë
  3700. ˝Ôˇ¸ÂÔ @Ë
  3701. ˝Ô",ÂÔ ¿ËÔ @ËÔàå¿Ë
  3702. ˝Ô ÂÔ @Ë
  3703. ˝Ô",ÂÔ ¿ËÔ @ËÔàå¿Ë
  3704. ˝Ô ÂÔ @Ë
  3705. ˝Ô",ÂÔ ¿ËÔ @ËÔàå¿Ë
  3706. ˝Ô ÂÔ @Ë
  3707. ˝Ô",ÂÔ ¿ËÔ @ËÔàå¿Ë
  3708. ˝Ô ÂÔ @Ë
  3709. ˝Ô",ÂÔ ¿ËÔ @ËÔàå¿Ë
  3710. ˝Ô ÂÔ @Ëò4@Äü@Äü)Xi˜
  3711. ˝Ô",ÂÔ ¿ËÔ @ËÔàå¿Ë
  3712. ˝Ô ÂÔ @Ë
  3713. ˝Ô",ÂÔ ¿ËÔ @ËÔàå¿Ë
  3714. ˝Ô ÂÔ @Ë
  3715. ˝Ô",ÂÔ ¿ËÔ @ËÔàå¿Ë
  3716. ˝Ô ÂÔ @Ë
  3717. ˝Ôˇ¸ÂÔ ¿ËÔ @ËÔ ¿Ë
  3718. ˝Ô ÂÔ @Ë
  3719. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3720. ˝Ô ÂÔ @Ë
  3721. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3722. ˝Ô ÂÔ @Ë
  3723. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3724. ˝Ô ÂÔ @Ë
  3725. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3726. ˝Ô ÂÔ @Ë
  3727. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3728. ˝Ô ÂÔ @Ë
  3729. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3730. ˝Ô ÂÔ @Ë
  3731. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ëò4Ä¿üÄ¿üiX©˜
  3732. ˝Ô ÂÔ @Ë
  3733. ˝Ô ÂÔ ¿ËÔˇ¸@ËÔ ¿Ë
  3734. ˝Ô ÂÔ @Ë
  3735. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3736. ˝Ô ÂÔ @Ë
  3737. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3738. ˝Ô ÂÔ @Ë
  3739. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3740. ˝Ô ÂÔ @Ë
  3741. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3742. ˝Ô ÂÔ @Ë
  3743. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3744. ˝Ô ÂÔ @Ë
  3745. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3746. ˝Ô ÂÔ @Ë
  3747. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3748. ˝Ô ÂÔ @Ë
  3749. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3750. ˝Ô ÂÔ @Ë
  3751. ˝Ôˇ¸ÂÔ ¿ËÔ @ËÔ ¿Ë
  3752. ˝Ô ÂÔ @Ë
  3753. ˝Ô ÂÔ ¿Ëò4¿ü¿ü©XÈ˜Ô @ËÔ ¿Ë
  3754. ˝Ô ÂÔˇ¸@Ë
  3755. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3756. ˝Ô ÂÔ @Ë
  3757. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3758. ˝Ô ÂÔ @Ë
  3759. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3760. ˝Ô ÂÔ @Ë
  3761. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3762. ˝Ô ÂÔ @Ë
  3763. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3764. ˝Ô ÂÔ @Ë
  3765. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3766. ˝Ô ÂÔˇ¸@Ë
  3767. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3768. ˝Ô ÂÔ @Ë
  3769. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3770. ˝Ô ÂÔ @Ë
  3771. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3772. ˝Ô ÂÔ @Ë
  3773. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3774. ˝Ô ÂÔ @Ëò4@ü@üÈX)˜
  3775. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3776. ˝Ô ÂÔ @Ë
  3777. ˝Ô ÂÔ ¿ËÔˇ¸@ËÔ ¿Ë
  3778. ˝Ô ÂÔ @Ë ˝¿ÄÊ¿¿Ëĸˆ@Ë˚ˆ¿Ë˝˚…M£;˚Â˚    +JΩT™˚ @Ë˝ ˚    %J°T™˚Â˚ƒäùS$˚¿Ëˆ˚0@Ë0ˆ˚p¿Ë
  3779. ˝ Ô`Â|Ô¯@Ë
  3780. ˝Ô ÂÔ ¿ËÔ @ËÔ ¿Ë
  3781. ˝Ô ÂÔ @Ë
  3782. ˝Ô Â
  3783. Í¿Ë
  3784. Í@Ë
  3785. Í¿ËÕˇ¿Ì@˲@” @ÄàÄ Ù¿Ë @*ÄàÄ Ù@Ë@*ôª≥éô≠Äı¿Ë˛
  3786. @:¶M|â¶s¿€@F¶5Dâ¶+@ı@˲
  3787. @Fô›ªéôÂÄ€@Ì¿Ë@Ì@ˡ¿Ì¿ËÕ
  3788. Í@˲ˇ¿”@Ì¿Ë@Ì@Ë
  3789. à¿<Ä Ú¿Ë˛@ Ä ÿ @#cô≠ÄÛ@˲"@>˜í¶s¿Ÿ @"Ѷ+@Û¿Ë @"súôÂÄÛ@Ëà¿Ì¿Ë˛@”ˇ¿Ì@ËÕ
  3790. Í¿Ë
  3791. Í@Ë
  3792. Í¿Ëò4@Äü@Äü)Xi˜Õ
  3793. Í@ËÕ
  3794. ÍÿË
  3795. ÍU@ËÕÕÕÕÕÕÕÕÕÕÕÕÕ˛ ÄÄÅ Ù ˚Ä˲ ¡ÅA Ä`¸Ä˲ ¡Ç# ÄP¸Ä˲ä¢Ç%"¯<@PyÓXpÓ9`Á˛ä¢Ç)#Â"@ê1Ödã"EêÁ˛Rî≤)"@¯ ÖD:>Á˛RîÇ?Ä"B@à ÖD  eÁ˛RîÅA""@!ÖDö"MÁ˛"àÄÅ"Ë@yxeÊ3‡Á¯ĸ@˝Ê¯êĸ@˝Ê¯p˚@˝Ê"˛@˛  ˝@@˛˛ADÄÄÓ˛ 0`˝`¿˚aD¡ÄÓ˛ 0`˝`¿˚QD¡ÄÓ#˛ŒÔDwO(ßÁû QNxqÛèq«∏ QD¢ÄÓ#˛$ê£EäPë(®ëR QQDäHä$P ID¢ÄÓ#˛$ê°EPë%/ëQ@JGD:»ã‰P EDîÄÓ#˛$ê°EPë%(Q@JYD äP@EDîÄÓ#˛$ê°M
  3796. Pë%(ëQ@JSDö4Hä$P@CDîÄÓ#˛&è4ÛO"'êÄDLƒe”àâƒXÄADàÄÓ
  3797. ÔÄ˝ ÔIJ Â
  3798. ¸‡Â˛1¯˛ é@‰˛»˛@Q˛‰˛Ñ˛@Q ˛‰˛Ñ ,y<Áät‡A O9¡—√ñÊ˛å 2Ö"HRçÇ$ °Hí2$YÊ˛t@"Ö"ORÖD$°Hì¬Á—Ê˛!@"Ö"@ÖRÖH~°Hê"Ê˛!à@"Ö"PÇ"ÖP°Hî"$QÊ˛pÄ<y"o"|‚üHõ¡Ò√ûÊ˚ ˚˛˚Ê˚ ˚˛˚Ê˚ ˜˚Ê˚ ˜˚ÊÕÕÕÕÕÕÕÕÕò4Ä¿üÄ¿üiX©˜ÕÕ˛Ä¿˚Ä›˛Ä ˛Ä›˛Ä˛Ä›˛XéèrƒxÁûfi˛    dëHã$Qëbfi˛ëDüHä$QÙë@fi˛ëDêHä$Që@fi˛ëDë(Hä$—ëBfi˛^xé«àã√X‰@ë<fi˝@˝˛@‹˝@˝˛@‹ ˝@˝ÿ˛@@/Ä¿˛í‚˛Ä`¿˝(@˝íÊ˛Ä`¿˝(@˝íÊ˛Q^;≈„„π«H@xíDÓsπÁÁ˛Qa"%$$OÄDíEDRÁ˝ÄJa"%'ê‰HD íE‰A“Á˛ÄJa"% S$àD@íDFRÁ˛ÄJa"%hRdàìDÄíND“Á˛D^"%ßôïÕEí5ÊC9‰Á˜ ÿ¯@ÿ¯¿ÿ ˛@¸‡Ÿ˛@Ä(Ÿ˛@ÄDŸ˛Q‹Áx‡DŸ˛Q ëÑÄ`DŸ˛Q<êrÑÄDŸ˛QëíÑÇDŸ˛SBë2ÑÇ(Ÿ˛M<–ÀxÅ‚ŸÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿ü¿ü©XȘÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@ü@üÈX)˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@Aü@Aü)X*˜Õˇ] @ˇ ˇˇˇˇ@
  3799. ˇ·ˇ‚7^
  3800. 4H\, Palatino&e.3+ä"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@äMemory4⁄ä˙(‡äApplication Partitions
  3801. (‡ 37
  3802. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  3803. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  3804.  
  3805.  
  3806.  
  3807.  
  3808.  
  3809. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  3810. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  3811. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  3812.  
  3813.  
  3814.  
  3815.  
  3816.  
  3817. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜ ˇˇ˛ˇˇ ˛ˇˇˇ     ˇˇˇˇ
  3818. ˇ˝ˇ ˇ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  3819. 4€4—?òÄ
  3820. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  3821. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  3822.  
  3823.  
  3824.  
  3825.  
  3826.  
  3827. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  3828. ˛ˇˇˇˇ
  3829. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˙ˇˇ˛˝ˇ˛˙ˇˇ˙ˇˇ˛˝ˇ˛˜˜˝˛ˇ˛
  3830. ˛ˇ˛ˇˇ
  3831. ˛ˇ˛ˇˇ˝˛ˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˚ˇˇˇ    ˇˇˇ˝ˇˇ˚˝ˇˇ˝˚ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  3832. kHr4lHr mäm
  3833. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd\äk•(gäThe -ò°dONLNd\•k )Application Global V_°dONLNd\km)zariables and ÍÊ°dONLNd%\lkç)MA5 WU°dONLNd)\ék§)"orldˇˇˇˇˇˇ€r)Ä2
  3834. °dONLNd.rä~ê({äY@Ä°dONLNd/rê~.)%our application’s global variables arÑ¿°dONLNdTr.~F)ûe storà@°dONLNdZrF~t) ed in an ar=¿°dONLNderu~)/"ea of memory near the top of your °dONLNdáäãY(àä/application partition known as the application ó†°dONLNd∂YãÖ)œ    A5 world.ï °dONLNdøÜãõ)- The ÚÄ°dONLNdƒõã)A5 world contains four °dONLNd€åäòΔ(ïäkinds of data:,Zapf Dingbats°dONLNdÍ¢ä©è*n
  3835. °dONLNdÏüñ´) application global variables°dONLNd    ¥äªè(∫än
  3836. °dONLNd ±ñΩF) &application QuickDraw global variables°dONLNd2ΔäÕè(Ãän
  3837. °dONLNd4√ñœ¸) application parameters°dONLNdKÿäflè(fiän
  3838. °dONLNdM’ñ·) the application’s jump table°dONLNdjÊäÚ¸(ÔäEach of these items is of fiㆰdONLNdÜʸÚ    )r@xed size, although the sizes of the global variables and of the °dONLNdΔÛäˇŸ(¸äjump table vary fr‡°dONLNdÿÛŸˇ_)Oom application to application. ‡°dONLNd˜Û`ˇx)áFigur≤¿°dONLNd¸Ûxˇå)e 2-6P@°dONLNdÛçˇfl) shows the standar˜°dONLNdÛflˇÁ)Rd °dONLNdä ì(    äor∫Ä°dONLNdì fl)    ganization of the =`°dONLNd)‡  )M    A5 world.
  3839. .H?4/H?"/H]
  3840. ˇ·ˇ‚7^    °dONLNd3$ä/¥(,ä
  3841. Figure 2-6°dONLNd>$Ã/E)BOrganization of an application’^ê°dONLNd]$E/L)ys ‡ °dONLNd_$K/n)A5 world
  3842. mH{4nH{°dONLNdhläwù(täNote
  3843. ˇ·ˇ‚7^
  3844. °dONLNdmyäÖ«*GAn application’s global variables may appear either above or below the °dONLNd¥Öäë"* !QuickDraw global variables. The rß@°dONLNd’Ö"ëæ)ò%elative locations of these two items °dONLNd˙ëäùí(öäarE°dONLNd¸ëìùt)    0e determined by your development system’s linkerˇ°dONLNd,ësù¬)‡. In addition, part °dONLNd@ùä©Æ(¶ä@of the jump table might appear below the boundary pointed to by ,
  3845. Courier.°dONLNdĩ䵿*     CurrentA5°dONLNdâ©¿µ√)6..°dONLNd쨻¥Õ)u
  3846. ?ÑT4>w?xò4@ù@ù?xÕÕ
  3847. ‚ˇÄ
  3848. ‚ˇ¿
  3849. ‚ˇ¿
  3850. ‚ˇ¿
  3851. ‚ˇ¿
  3852. ‚ˇ¿
  3853. ‚ˇ¿
  3854. ‚ˇ¿
  3855. ‚ˇ¿
  3856. ‚ˇ¿
  3857. ‚ˇ¿
  3858. ‚ˇ¿
  3859. ‚ˇ¿
  3860. ‚ˇ¿
  3861. ‚ˇ¿
  3862. ‚ˇ¿
  3863. ‚ˇ¿
  3864. ‚ˇ¿
  3865. ‚ˇ¿
  3866. ‚ˇ¿
  3867. ‚ˇ¿
  3868. ‚ˇ¿
  3869. ‚ˇ¿
  3870. ‚ˇ¿
  3871. ‚ˇ¿
  3872. ‚ˇ¿
  3873. ‚ˇ¿
  3874. ‚ˇ¿
  3875. ‚ˇ¿
  3876. ‚ˇ¿
  3877. ‚ˇ¿
  3878. ‚ˇ¿
  3879. ‚ˇ¿
  3880. ‚ˇ¿
  3881. ‚ˇ¿
  3882. ‚ˇ¿
  3883. ‚ˇ¿
  3884. ‚ˇ¿
  3885. ‚ˇ¿
  3886. ‚ˇ¿
  3887. ‚ˇ¿
  3888. ‚ˇ¿
  3889. ‚ˇ¿
  3890. ‚ˇ¿
  3891. ‚ˇ¿
  3892. ‚ˇ¿
  3893. ‚ˇ¿
  3894. ‚ˇ¿
  3895. ‚ˇ¿
  3896. ‚ˇ¿
  3897. ‚ˇ¿
  3898. ‚ˇ¿
  3899. ‚ˇ¿
  3900. ‚ˇ¿
  3901. ‚ˇ¿
  3902. ‚ˇ¿
  3903. ‚ˇ¿
  3904. ‚ˇ¿
  3905. ‚ˇ¿
  3906. ‚ˇ¿
  3907. ‚ˇ¿
  3908. ‚ˇ¿ò4@Äù@Äùxø
  3909. ‚ˇ¿
  3910. ‚ˇ¿
  3911. ‚ˇ¿
  3912. ‚ˇ¿
  3913. ‚ˇ¿
  3914. ‚ˇ¿
  3915. ‚ˇ¿
  3916. ‚ˇ¿
  3917. ‚ˇ¿
  3918. ‚ˇ¿
  3919. ‚ˇ¿
  3920. ‚ˇ¿
  3921. ‚ˇ¿
  3922. ‚ˇ¿
  3923. ‚ˇ¿
  3924. ‚ˇ¿
  3925. ‚ˇ¿
  3926. ‚ˇ¿
  3927. ‚ˇ¿
  3928. ‚ˇ¿
  3929. ‚ˇ¿
  3930. ‚ˇ¿
  3931. ‚ˇ¿
  3932. ‚ˇ¿
  3933. ‚ˇ¿
  3934. ‚ˇ¿
  3935. ‚ˇ¿
  3936. ‚ˇ¿
  3937. ‚ˇ¿
  3938. ‚ˇ¿
  3939. ‚ˇ¿
  3940. ‚ˇ¿
  3941. ‚ˇ¿
  3942. ‚ˇ¿
  3943. ‚ˇ¿
  3944. ‚ˇ¿
  3945. ‚ˇ¿
  3946. ‚ˇ¿
  3947. ‚ˇ¿
  3948. ‚ˇ¿
  3949. ‚ˇ¿
  3950. ‚ˇ¿
  3951. ‚ˇ¿
  3952. ‚ˇ¿
  3953. ‚ˇ¿
  3954. ‚ˇ¿
  3955. ‚ˇ¿
  3956. ‚ˇ¿
  3957. ‚ˇ¿
  3958. ‚ˇ¿
  3959. ‚ˇ¿
  3960. ‚ˇ¿
  3961. ‚ˇ¿
  3962. ‚ˇ¿
  3963. ‚ˇ¿
  3964. ‚ˇ¿
  3965. ‚ˇ¿
  3966. ‚ˇ¿
  3967. ‚ˇ¿
  3968. ‚ˇ¿
  3969. ‚ˇ¿
  3970. ‚ˇ¿
  3971. ‚ˇ¿
  3972. ‚ˇ¿ò4Ä¿ùÄ¿ùøxˇ
  3973. ‚ˇ¿
  3974. ‚ˇ¿
  3975. ‚ˇ¿
  3976. ‚ˇ¿
  3977. ‚ˇ¿
  3978. ‚ˇ¿
  3979. ‚ˇ¿
  3980. ‚ˇ¿
  3981. ‚ˇ¿
  3982. ‚ˇ¿
  3983. ‚ˇ¿
  3984. ‚ˇ¿
  3985. ‚ˇ¿
  3986. ‚ˇ¿
  3987. ‚ˇ¿
  3988. ‚ˇ¿
  3989. ‚ˇ¿
  3990. ‚ˇ¿
  3991. ‚ˇ¿
  3992. ‚ˇ¿
  3993. ‚ˇ¿
  3994. ‚ˇ¿
  3995. ‚ˇ¿
  3996. ‚ˇ¿
  3997. ‚ˇ¿
  3998. ‚ˇ¿
  3999. ‚ˇ¿
  4000. ‚ˇ¿
  4001. ‚ˇ¿
  4002. ‚ˇ¿
  4003. ‚ˇ¿
  4004. ‚ˇ¿
  4005. ‚ˇ¿
  4006. ‚ˇ¿
  4007. ‚ˇ¿
  4008. ‚ˇ¿
  4009. ‚ˇ¿
  4010. ‚ˇ¿
  4011. ‚ˇ¿
  4012. ‚ˇ¿
  4013. ‚ˇ¿
  4014. ‚ˇ¿
  4015. ‚ˇ¿
  4016. ‚ˇ¿
  4017. ‚ˇ¿
  4018. ‚ˇ¿
  4019. ‚ˇ¿
  4020. ‚ˇ¿
  4021. ‚ˇ¿
  4022. ‚ˇ¿
  4023. ‚ˇ¿
  4024. ‚ˇ¿
  4025. ‚ˇ¿
  4026. ‚ˇ¿
  4027. ‚ˇ¿
  4028. ‚ˇ¿
  4029. ‚ˇ¿
  4030. ‚ˇ¿
  4031. ‚ˇ¿
  4032. ‚ˇ¿
  4033. ‚ˇ¿
  4034. ‚ˇ¿
  4035. ‚ˇ¿
  4036. ‚ˇ¿ò4¿ù¿ùˇx?
  4037. ‚ˇ¿
  4038. ‚ˇ¿
  4039. ‚ˇ¿
  4040. ‚ˇ¿
  4041. ‚ˇ¿
  4042. ‚ˇ¿
  4043. ‚ˇ¿
  4044. ‚ˇ¿
  4045. ‚ˇ¿
  4046. ‚ˇ¿
  4047. ‚ˇ¿
  4048. ‚ˇ¿
  4049. ‚ˇ¿
  4050. ‚ˇ¿
  4051. ‚ˇ¿
  4052. ‚ˇ¿
  4053. ‚ˇ¿
  4054. ‚ˇ¿
  4055. ‚ˇ¿
  4056. ‚ˇ¿
  4057. ‚ˇ¿
  4058. ‚ˇ¿
  4059. ‚ˇ¿
  4060. ‚ˇ¿
  4061. ‚ˇ¿
  4062. ‚ˇ¿
  4063. ‚ˇ¿
  4064. ‚ˇ¿
  4065. ‚ˇ¿
  4066. ‚ˇ¿
  4067. ‚ˇ¿
  4068. ‚ˇ¿
  4069. ‚ˇ¿
  4070. ‚ˇ¿
  4071. ‚ˇ¿
  4072. ‚ˇ¿
  4073. ‚ˇ¿
  4074. ‚ˇ¿
  4075. ‚ˇ¿
  4076. ‚ˇ¿
  4077. ‚ˇ¿
  4078. ‚ˇ¿
  4079. ‚ˇ¿
  4080. ‚ˇ¿
  4081. ‚ˇ¿
  4082. ‚ˇ¿
  4083. ‚ˇ¿
  4084. ‚ˇ¿
  4085. ‚ˇ¿
  4086. ‚ˇ¿
  4087. ‚ˇ¿
  4088. ‚ˇ¿
  4089. ‚ˇ¿
  4090. ‚ˇ¿
  4091. ‚ˇ¿
  4092. ‚ˇ¿
  4093. ‚ˇ¿
  4094. ‚ˇ¿
  4095. ‚ˇ¿
  4096. ‚ˇ¿
  4097. ‚ˇ¿
  4098. ‚ˇ¿
  4099. ‚ˇ¿
  4100. ‚ˇ¿ò4@ù@ù?x
  4101. ‚ˇ¿
  4102. ‚ˇ¿
  4103. ‚ˇ¿
  4104. ‚ˇ¿
  4105. ‚ˇ¿
  4106. ‚ˇ¿
  4107. ‚ˇ¿
  4108. ‚ˇ¿
  4109. ‚ˇ¿
  4110. ‚ˇ¿
  4111. ‚ˇ¿
  4112. ‚ˇ¿
  4113. ‚ˇ¿
  4114. ‚ˇ¿
  4115. ‚ˇ¿
  4116. ‚ˇ¿
  4117. ‚ˇ¿
  4118. ‚ˇ¿
  4119. ‚ˇ¿ÕÕÕÕÕÕÕÕÕÕÕÕ,˛ ÄÄÉ¿ Ù Ä<˛@˛ÄÄÄÇ! ˜*˛ ¡ÅD@B¸@ÄÄ1 ˜*˛ ¡Ç$"@Ÿ@@Äà2 ˜,˛&ä¢Ç'Ä"¯  Åw«OÈÁÅÁûEãqŒûxèJxΆ˜,˛&ä¢Ç$@#Â< ÅHHëA"JBQFLïä$°D àÅJÑå`˜,˛&Rî≤ @"" ÅHCëBJB—‰HD<¿ÅJÑå ˜,˛&RîÇ(@"" ÅHLëD2JBQ$Hï$°DPÅJÑå ˜,˛&RîÅD@"" BH…ëH&JB—$Hï
  4120. d°DBHÄÑÑå ˜,˛&"àÄÉÄ"Ë <GFQ_i‰A‚1èÒñûD<'Ñx㇘¯@@˜Í¯ê@ĘͯpÄĘͲ@˛  ˝@@˚ADÄÄÓ˛ 0`˝`¿˚aD¡ÄÓ˛ 0`˝`¿˚QD¡ÄÓ#˛ŒÔDwO(ßÁû QNxqÛèq«∏ QD¢ÄÓ#˛$ê£EäPë(®ëR QQDäHä$P ID¢ÄÓ#˛$ê°EPë%/ëQ@JGD:»ã‰P EDîÄÓ#˛$ê°EPë%(Q@JYD äP@EDîÄÓ#˛$ê°M
  4121. Pë%(ëQ@JSDö4Hä$P@CDîÄÓ#˛&è4ÛO"'êÄDLƒe”àâƒXÄADàÄÓ
  4122. ÔÄ˝ ÔIJ Â
  4123. ¸‡Â˛1¯˛ ø@‰˛»˛@B ˛‰˛Ñ˛@B ˛‰˛Ñ ,y<Áät‡D< O9¡—√ñÊ˛å 2Ö"HRçÑ" °Hí2$YÊ˛t@"Ö"ORÖ°Hì¬Á—Ê˛!@"Ö"@ÖRÖB°Hê"Ê˛!à@"Ö"PÇ"Ö"°Hî"$QÊ˛pÄ<y"o"|‚–Hõ¡Ò√ûÊò4@Äù@Äùxø˚ ˚˛˚Ê˚ ˚˛˚Ê˚ ˜˚Ê˚ ˜˚ÊÕÕÕÕÕÕÕÕÕÕÕ˛Ä¿˚Ä›˛Ä ˛Ä›˛Ä˛Ä›˛XéèrƒxÁûfi˛    dëHã$Qëbfi˛ëDüHä$QÙë@fi˛ëDêHä$Që@fi˛ëDë(Hä$—ëBfi˛^xé«àã√X‰@ë<fi˝@˝˛@‹˝@˝˛@‹ ˝@˝ÿ˛D0˛&ÄŸ˛@˛$Ä‹˛IJ$Ä‹˛^<$ë;úÓy¿fi˛ ‡ÑQ$ëAÖ›˛ ÑQ$ëytÖ›˛ DQ$ëîÖ›˛ $— $ìÖ4Ö›˛ 3Q|$çyêŒy›ÕÕÕ ˛@¸‡Ÿ˛@Ä(Ÿ˛@ÄDŸ˛Q‹Áx‡DŸ˛Q ëÑÄ`DŸ˛Q<êrÑÄDŸ˛QëíÑÇDŸ˛SBë2ÑÇ(Ÿ˛M<–ÀxÅ‚ŸÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4Ä¿ùÄ¿ùøxˇÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿ù¿ùˇx?ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@ù@ù?xÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@Aù@AùxÄÕò4@ù@ù?xÕÕ‚3Ô
  4124. ‚@–fl¿
  4125. ‚@fl¿–
  4126. ‚@–fl¿˛@ÔĢ@˚@ÔĢ¿˛@ÔÄÁ˛@ÔĢ@˛@ÔÄÁ˚@ÔĢ¿˛|Ô¯˘@˚8Ô˘¿˛Ô0Á˛0¸( ˜0˘@˛ ¸  ˜`Á˚`¸+∏hÕÿ˚‡˘¿˛¿¸ϧUÍ•P˚¿˘@˚ĸ,§U
  4127. •P¸Ģ¿ĸ+§TÍô ¸ÄÁ˘Ä˛ ¸¯@˙˝@¸Ê¸¿Ģ¿˛@ÔĢ@˚ԡĢ¿˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛@Ô¿˘@˚@Ô¿˘¿˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛@Ô¿˘@˚@Ô¿˘¿˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛@Ô¿˘@˚@Ô¿˘¿˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛@Ô¿˘@˚@Ô¿˘¿˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛@Ô¿˘@˚@Ô¿˘¿˛@Ô¿Á˛@Ô¿˘@ò4@Äù@Äùxø˛@Ô¿Á˚@Ô¿˘¿˛@Ô¿˘@˚@Ô¿˘¿˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛@Ô¿˘@˚@Ô¿˘¿˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛@Ô¿˘@˚@Ô¿˘¿˛@Ô¿Á˛@˚A˙¿˘@˛@˚A˙¿Á˚@˚Zp˘”˙¿˘¿˛@˚UHM7Ä˚¿˘@˚@˚&UHu4˙¿˘¿˛@˚’p}”Ä˚¿Á˛@˘@¯¿˘@˛@˘@¯¿Á˚@˘@¯¿˘¿˛@Ô¿˘@˚@Ô¿˘¿˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛@Ô¿˘@˚@Ô¿˘¿˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛@Ô¿˘@˚@Ô¿˘¿˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛@Ô¿˘@˚@Ô¿˘¿˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛@Ô¿˘@˚@Ô¿˘¿˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛@Ô¿˘@˚@Ô¿˘¿˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛@Ô¿˘@˚@Ô¿˘¿ò4Ä¿ùÄ¿ùøxˇ˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚Ôˇ¿˘¿˛@Ô¿˘@˚@Ô¿˘¿˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛@˛¿˝ ¸¿˘@˚@˛ÄÄ˝ ¸¿˘¿˛@˛
  4128. π‘›Õ√ùªC|Ã˝¿Á ˛@˛
  4129. •5&”"Gßæû˝¿˘@˛@˛
  4130. e5”"[6§0ö˝¿Á˚@˛
  4131. y‘ÓÕ#è£æå˝¿˘¿˛@˝!˛¯¿˘@˚@˝!˛¯¿˘¿˛@˝!˛¯¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛Ôü¿˘@˚@Ô¿˘¿˛@`!B¿Á!˛@ê    B¿˘@˛@küc· ≠inît›»æ◊rΔ¿Á ˛ˇˇ¿öO¡ë ≥âC¥ï2h£ëÀÔ¿˘¿!@öLAꥱIMTï3®≠ñÀ¿˘@ ˛@jO¡‡kØ.GHt‹ËGìÚÊ¿˘¿@¯˙¿Á@¯‡˙    ¿ÄΔ@ÌˇƒïÔ3§Ó˛@Ô    ¿ÑJºÊ¿@Ô    ¿Ñzê°@˛@Ô    ¿çÔBç∂¿@Ô¿˝8Ï@Ô¿˘@@Ô¿Á˛@Ô¿˘¿@Ô¿˘@˛@Ô¿˘¿@Ô¿Á@Ô¿˘@@Ô¿Á˛@Ô¿˘¿@Ô¿˘@˛@Ô¿˘¿@Ô¿Á@Ô¿˘@@Ô¿Á˛@Ô¿˘¿@¸Ä0 ¸¿˘@˛@˝@  ¸¿˘¿@˝NÊnspyπ–¸¿Á@˝…ñì4»ödp¸¿˘@@˝)ñç4»öe∞¸¿Á˛@˝.Êw3Hy∏¸¿˘¿@¸IJ˙¿˘@˛@¸IJ‡˙¿˘¿@¸Ĉ¿Á@˘A˘¿˘@@˘˘¿Á˛@˚˚]”˙¿˘¿ò4¿ù¿ùˇx?@˚éG7º˙¿˘@˛@˚∂[44˙¿˘¿@˚O”ò˙¿Á@Ô¿˘@@Ô¿Á˛@Ô¿˘¿@Ô¿˘@˛@Ô¿˘¿@Ô¿Á@Ô¿˘@@Ô¿Á˛@Ô¿˘¿@Ô¿˘@˛@Ô¿˘¿@Ô¿Á@Ô¿˘@@Ô¿Á˛@Ô¿˘¿@Ô¿˘@˛@Ô¿˘¿@Ô¿ÁÔˇ¿˘@@Ô¿Á˛@Ô¿˘¿@Ô¿˘@˛@Ô¿˘¿@Ô¿Á@Ô¿˘@@Ô¿Á˛@¸¿A ¸¿˘¿@˝      ¸¿˘@˛@˝Õi|îyπ–¸¿˘¿@˝”âF¥ödp¸¿Á@˝d—IZTöe∞¸¿˘@@¸”œ.NHy∏¸¿Á˛@˜˙¿˘¿@˜‡˙¿˘@˛@Ô¿˘¿@˘A˘¿Á@˘˘¿˘@@˚˚]”˙¿Á˛@˚éG7º˙¿˘¿@˚∂[44˙¿˘@˛@˚O”ò˙¿˘¿@Ô¿Á@Ô¿˘@@Ô¿Á˛@Ô¿˘¿@Ô¿˘@˛`@Ô¿˘¿~@Ô¿ÁÏˇ¿˘@|@Ô¿Á¸@@Ô¿˘¿˛@Ô¿˘@˚|Ô¯˘¿˛8ÔÁ˛Ô0˘@˛0ÔpÁ˚ Ô‡˘¿˛`Ô¿˘@˚¿¿˘¿˛ÄÄÁÄ¯@ò4@ù@ù?xÔʸԯ¿¿Ģ@˚@Ô¿˘¿˛@Ô¿Á˛@Ô¿˘@˛@Ô¿Á˚@Ô¿˘¿˛@Ô¿˘@˚@Ô¿˘¿–
  4132. ‚@–fl¿
  4133. ‚@fl¿–
  4134. ‚U@‚3ÔÕÕÕÕÕÕÕÕÕÕÕÕ,˛ ÄÄÉ¿ Ù Ä<˛@˛ÄÄÄÇ! ˜*˛ ¡ÅD@B¸@ÄÄ1 ˜*˛ ¡Ç$"@Ÿ@@Äà2 ˜,˛&ä¢Ç'Ä"¯  Åw«OÈÁÅÁûEãqŒûxèJxΆ˜,˛&ä¢Ç$@#Â< ÅHHëA"JBQFLïä$°D àÅJÑå`˜,˛&Rî≤ @"" ÅHCëBJB—‰HD<¿ÅJÑå ˜,˛&RîÇ(@"" ÅHLëD2JBQ$Hï$°DPÅJÑå ˜,˛&RîÅD@"" BH…ëH&JB—$Hï
  4135. d°DBHÄÑÑå ˜,˛&"àÄÉÄ"Ë <GFQ_i‰A‚1èÒñûD<'Ñx㇘¯@@˜Í¯ê@ĘͯpÄĘͲ@˛  ˝@@˚ADÄÄÓ˛ 0`˝`¿˚aD¡ÄÓ˛ 0`˝`¿˚QD¡ÄÓ#˛ŒÔDwO(ßÁû QNxqÛèq«∏ QD¢ÄÓ#˛$ê£EäPë(®ëR QQDäHä$P ID¢ÄÓ#˛$ê°EPë%/ëQ@JGD:»ã‰P EDîÄÓ#˛$ê°EPë%(Q@JYD äP@EDîÄÓ#˛$ê°M
  4136. Pë%(ëQ@JSDö4Hä$P@CDîÄÓ#˛&è4ÛO"'êÄDLƒe”àâƒXÄADàÄÓ
  4137. ÔÄ˝ ÔIJ Â
  4138. ¸‡Â˛1¯˛ ø@‰˛»˛@B ˛‰˛Ñ˛@B ˛‰˛Ñ ,y<Áät‡D< O9¡—√ñÊ˛å 2Ö"HRçÑ" °Hí2$YÊ˛t@"Ö"ORÖ°Hì¬Á—Ê˛!@"Ö"@ÖRÖB°Hê"Ê˛!à@"Ö"PÇ"Ö"°Hî"$QÊ˛pÄ<y"o"|‚–Hõ¡Ò√ûÊò4@Äù@Äùxø˚ ˚˛˚Ê˚ ˚˛˚Ê˚ ˜˚Ê˚ ˜˚ÊÕÕÕÕÕÕÕÕÕÕÕ˛Ä¿˚Ä›˛Ä ˛Ä›˛Ä˛Ä›˛XéèrƒxÁûfi˛    dëHã$Qëbfi˛ëDüHä$QÙë@fi˛ëDêHä$Që@fi˛ëDë(Hä$—ëBfi˛^xé«àã√X‰@ë<fi˝@˝˛@‹˝@˝˛@‹ ˝@˝ÿ˛D0˛&ÄŸ˛@˛$Ä‹˛IJ$Ä‹˛^<$ë;úÓy¿fi˛ ‡ÑQ$ëAÖ›˛ ÑQ$ëytÖ›˛ DQ$ëîÖ›˛ $— $ìÖ4Ö›˛ 3Q|$çyêŒy›ÕÕÕ ˛@¸‡Ÿ˛@Ä(Ÿ˛@ÄDŸ˛Q‹Áx‡DŸ˛Q ëÑÄ`DŸ˛Q<êrÑÄDŸ˛QëíÑÇDŸ˛SBë2ÑÇ(Ÿ˛M<–ÀxÅ‚ŸÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4Ä¿ùÄ¿ùøxˇÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿ù¿ùˇx?ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@ù@ù?xÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@Aù@AùxÄÕˇn@ˇ ˇˇˇˇ@
  4139. ˇ·ˇ‚7^
  4140. 4*\¯, Palatino&e.3+l"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@lMemory4⁄*˙¯
  4141. (‡*38    )BMemory Blocks4^*¿¯
  4142. .°dONLNd\lhÍ(elThe system global variable ,
  4143. Courier°dONLNd\Íh )~    CurrentA5°dONLNd$\ h”)6( points to the boundary between the currR`°dONLNdL\”h„)≥ent .°dONLNdPilu£(rlIapplication’s global variables and its application parameters. For this r_ °dONLNdôi£u—(r£ eason, the °dONLNd§vlÇ¢(l application’\¿°dONLNd∞v¢ÇÒ)6s global variablesU@°dONLNd¬vÚÇ˝)P arö@°dONLNd≈v˝Ç^) e found as negative ofø°dONLNd€v^Ç{)afsets fr1¿°dONLNd„v|Ç√)om the value of .°dONLNdÛÉlè¢(ål    CurrentA5°dONLNd¸É¢èÙ)6L. This boundary is important because the Operating System uses it to access .°dONLNdHêlúË(ôlthe following information fra °dONLNddêËú·)|9om your application: its global variables, its QuickDraw °dONLNdùùl©‡(¶lVglobal variables, the application parameters, and the jump table. This information is °dONLNdÛ™l∂fi*known collectively as the <‡°dONLNd™fi∂∏)r/A5 world because the Operating System uses the °dONLNd<∑l√Ä(¿lmicrq†°dONLNd@∑Ä√è)oprÆ@°dONLNdC∑è√Ø)ocessor˝ °dONLNdJ∑∞√π)!’s #°dONLNdM∑∫√Õ)
  4144. A5 r/@°dONLNdQ∑Õ√\)!egister to point to that boundaryΩ°dONLNdr∑[√])é.°dONLNdt…l’r(“lY@Ä°dONLNdu…r’ø)our application’s j‡°dONLNdá…ø’@)MQuickDraw global variablesŒ°dONLNd°…@’Ì)Å' contain information about its drawing °dONLNd»÷l‚É(fllenvirn†°dONLNdÕ÷É‚¨)Conment. For example, among these variables is a pointer to the curr¯°dONLNd÷¨‚‰(fl¨ent graphics °dONLNd„lÔÅ(Ïlport.°dONLNd#ılr*Y@Ä°dONLNd$ırø)our application’s j‡°dONLNd6ıø)M
  4145. jump table`°dONLNd@ıÒ…)23 contains an entry for each of your application’s rÕ@°dONLNdsı…Î)ÿoutines °dONLNd{lÓ( lVthat is called by code in another segment. The Segment Manager uses the jump table to °dONLNd—l¡*determine the addrï@°dONLNd„¡!)Uess of any externally rȇ°dONLNd˙!1)`eferñ°dONLNd˛2R)enced rÀ†°dONLNdRË) "outines called by a code segment. °dONLNd'l(è(%lFor mor¿°dONLNd.ê(¡)$Ce information on jump tables, see the chapter “Segment Manager” in D@°dONLNdq¡(€(%¡Inside °dONLNdx)l5•(2lMacintosh: PrB@°dONLNdÖ)¶5¡):ocesses6Ä°dONLNdå)¬5ƒ).°dONLNdé;lG(DlThe ª¿°dONLNdí;GÁ)application parametersh†°dONLNd®;ËGÛ)i ar≠†°dONLNd´;ÛGı) :e 32 bytes of memory located above the application global °dONLNdÂHlT≥(Qlvariables; they’rp†°dONLNdˆH≥Tæ)Ge r@°dONLNd˘HæTè) .eserved for use by the Operating System. The fiÂÄ°dONLNd(HèTƒ)— rst long worß`°dONLNd4H≈TÚ)6 d of those °dONLNd?Ula∞(^lIparameters is a pointer to your application’s QuickDraw global variables.
  4146. h*ɯ4i*ɯ
  4147. ì*õ¯4î*õ¯ ï*ï˛
  4148. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdâÄ*ìö(é*Memory BlocksˇˇˇˇˇˇU˛(é2
  4149. °dONLNdó§l∞r(≠lY@Ä°dONLNdò§r∞U)1ou can use the Memory Manager to allocate two difπ†°dONLNd…§U∞a)„ferú °dONLNdça∞Ú) "ent types of blocks in your heap: °dONLNdÓ±lΩÅ(∫lnonr]@°dONLNdÚ±ÅΩÂ)elocatable blocks and r≈°dONLNd    ±ÂΩ4)delocatable blocks. @°dONLNd±5Ω<)PAV‡°dONLNd±<Ω>) ÷‡°dONLNd±>Ωù)nonrelocatable block¢†°dONLNd2±ûΩ◊)` is a block of °dONLNdAæl («l&memory whose location in the heap is fi≥Ä°dONLNdhæ l)∞xed. In contrast, a \‡°dONLNd|æm ª)Qrelocatable blockb°dONLNdç檠Ù)N is a block of °dONLNdúÀl◊A(‘l-memory that can be moved within the heap (per°dONLNd…ÀB◊¿)÷haps during heap compactiok`°dONLNd„À¿◊‘)~n). T±`°dONLNdËÀ‘◊·)he °dONLNdÎÿl‰(·l Memory Manager sometimes moves r-°dONLNd ÿ‰Á)®.elocatable blocks during memory operations so °dONLNd9ÂlÒ5(Ól/that it can use the space in the heap optimally`°dONLNdhÂ5Ò7)….°dONLNdj˜l€(lThe Memory Manager pr°dONLNd˜‹C)povides data types that rô°dONLNdó˜CS)geferE °dONLNdõ˜TÑ) ence both rÔ‡°dONLNd¶˜ÑΔ)0elocatable and °dONLNdµlÅ(lnonr]@°dONLNdπŘ)elocatable blocks. It also pr¿°dONLNd÷¯)wovides rÅ@°dONLNdfi«)#(outines that allow you to allocate and r¨@°dONLNd«‰)¨elease °dONLNdlΔ(lblocks of both types.ˇ\b@ˇ ˇˇˇˇ@
  4150. ˇ·ˇ‚7^
  4151. 4H\, Palatino&e.3+ä"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@äMemory4⁄ä˙(‡äMemory Blocks
  4152. (‡ 39
  4153. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  4154. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  4155.  
  4156.  
  4157.  
  4158.  
  4159.  
  4160. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  4161. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  4162. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  4163.  
  4164.  
  4165.  
  4166.  
  4167.  
  4168. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜ ˇˇ˛ˇˇ ˛ˇˇˇ     ˇˇˇˇ
  4169. ˇ˝ˇ ˇ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  4170. 4€4—?òÄ
  4171. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  4172. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  4173.  
  4174.  
  4175.  
  4176.  
  4177.  
  4178. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  4179. ˛ˇˇˇˇ
  4180. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˙ˇˇ˛˝ˇ˛˙ˇˇ˙ˇˇ˛˝ˇ˛˜˜˝˛ˇ˛
  4181. ˛ˇ˛ˇˇ
  4182. ˛ˇ˛ˇˇ˝˛ˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˚ˇˇˇ    ˇˇˇ˝ˇˇ˚˝ˇˇ˝˚ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  4183. kHr4lHr mäm
  4184. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd\äk(gäNonrelocatable Blocksˇˇˇˇˇˇ€r(g2
  4185. .°dONLNdrä~ê({äTï°dONLNdrè~ö)o rg`°dONLNdrö~¨) efer9¿°dONLNdr¨~‹) ence a nonr  °dONLNd)r‹~f)0 elocatable block, you can use a   °dONLNdIrf~á)äpointer  °dONLNdPrá~»)! variable, defi  °dONLNd_r»~˘)A ned by the ,
  4186. Courier  °dONLNdjr˘~ )1Ptr  °dONLNdmr ~) .°dONLNdnäãµ(àä
  4187. data type..°dONLNdyñ䢢*TYPE°dONLNd§ú∞fi+ SignedByte °dONLNd览∞>)Z = –128..127;°dONLNdù≤úæÆ(ªúPtr°dONLNd•≤ˆæJ)Z= ^SignedByte;.°dONLNd¥ ä÷ë(”äA∫†°dONLNdµ ë÷) pointer is simply the addr‹‡°dONLNd– ÷û)u"ess of an arbitrary byte in memory˛@°dONLNdÚ ù÷Ú)ó, and a pointer to a °dONLNd◊ä„ü(‡änonr]@°dONLNd ◊ü„k)-elocatable block of memory is simply the addrz`°dONLNd8◊k„ú)à ess of the fiÒÄ°dONLNdE◊ú„)1rst byte in the block, as °dONLNd_‰ä≈(Ìäillustrated in ì¿°dONLNdn‰≈›);FigurfÄ°dONLNds‰›Ò)e 2-7°dONLNdx‰Ú˜). •†°dONLNdz‰ˆc)After you allocate a nonrj‡°dONLNdì‰d)n&elocatable block, you can make copies °dONLNdπÒä˝p(˙ä6of the pointer variable. Because a pointer is the addr§@°dONLNdÔÒp˝)Ê%ess of a block of memory that cannot °dONLNd˛ä
  4188. 6(ä(be moved, all copies of the pointer corr¬ °dONLNd<˛6
  4189. Q)¨ectly r˙‡°dONLNdC˛Q
  4190. a)eferß°dONLNdG˛b
  4191. ˛)$ence the block as long as you don’t °dONLNdk ä¬(ädispose of it.
  4192. 9HJ4:HJ":H]
  4193. ˇ·ˇ‚7^    °dONLNdz/ä:¥*#
  4194. Figure 2-7°dONLNdÖ/Ã:“)BA0°dONLNdÜ/“:V)" pointer to a nonrelocatable block
  4195. J|p4IwJxò4@ù@ùJxäÕÕ
  4196. Èˇ¯È
  4197. Èˇ¸È
  4198. Èˇ¸È
  4199. Èˇ¸È
  4200. Èˇ¸È
  4201. Èˇ¸È
  4202. Èˇ¸È
  4203. Èˇ¸È
  4204. Èˇ¸È
  4205. Èˇ¸È
  4206. Èˇ¸È
  4207. Èˇ¸È
  4208. Èˇ¸È
  4209. Èˇ¸È
  4210. Èˇ¸È
  4211. Èˇ¸È
  4212. Èˇ¸È
  4213. Èˇ¸È
  4214. Èˇ¸È
  4215. Èˇ¸È
  4216. Èˇ¸È
  4217. Èˇ¸È
  4218. Èˇ¸È
  4219. Èˇ¸È
  4220. Èˇ¸È
  4221. Èˇ¸È
  4222. Èˇ¸È
  4223. Èˇ¸È
  4224. Èˇ¸È
  4225. Èˇ¸È
  4226. Èˇ¸È
  4227. Èˇ¸È
  4228. Èˇ¸È
  4229. Èˇ¸È
  4230. Èˇ¸È
  4231. Èˇ¸È
  4232. Èˇ¸È
  4233. Èˇ¸È
  4234. Èˇ¸È
  4235. Èˇ¸È
  4236. Èˇ¸È
  4237. Èˇ¸È
  4238. Èˇ¸È
  4239. Èˇ¸È
  4240. Èˇ¸È
  4241. Èˇ¸È
  4242. Èˇ¸È
  4243. Èˇ¸È
  4244. Èˇ¸È
  4245. Èˇ¸È
  4246. Èˇ¸È
  4247. Èˇ¸È
  4248. Èˇ¸È
  4249. Èˇ¸È
  4250. Èˇ¸È
  4251. Èˇ¸È
  4252. Èˇ¸È
  4253. Èˇ¸È
  4254. Èˇ¸È
  4255. Èˇ¸È
  4256. Èˇ¸È
  4257. Èˇ¸Èò4@Äù@Äùäx 
  4258. Èˇ¸È
  4259. Èˇ¸È
  4260. Èˇ¸È
  4261. Èˇ¸È
  4262. Èˇ¸È
  4263. Èˇ¸È
  4264. Èˇ¸È
  4265. Èˇ¸È
  4266. Èˇ¸È
  4267. Èˇ¸È
  4268. Èˇ¸È
  4269. Èˇ¸È
  4270. Èˇ¸È
  4271. Èˇ¸È
  4272. Èˇ¸È
  4273. Èˇ¸È
  4274. Èˇ¸È
  4275. Èˇ¸È
  4276. Èˇ¸È
  4277. Èˇ¸È
  4278. Èˇ¸È
  4279. Èˇ¸È
  4280. Èˇ¸È
  4281. Èˇ¸È
  4282. Èˇ¸È
  4283. Èˇ¸È
  4284. Èˇ¸È
  4285. Èˇ¸È
  4286. Èˇ¸È
  4287. Èˇ¸È
  4288. Èˇ¸È
  4289. Èˇ¸È
  4290. Èˇ¸È
  4291. Èˇ¸È
  4292. Èˇ¸È
  4293. Èˇ¸È
  4294. Èˇ¸È
  4295. Èˇ¸È
  4296. Èˇ¸È
  4297. Èˇ¸È
  4298. Èˇ¸È
  4299. Èˇ¸È
  4300. Èˇ¸È
  4301. Èˇ¸È
  4302. Èˇ¸È
  4303. Èˇ¸È
  4304. Èˇ¸È
  4305. Èˇ¸È
  4306. Èˇ¸È
  4307. Èˇ¸È
  4308. Èˇ¸È
  4309. Èˇ¸È
  4310. Èˇ¸È
  4311. Èˇ¸È
  4312. Èˇ¸È
  4313. Èˇ¸È
  4314. Èˇ¸È
  4315. Èˇ¸È
  4316. Èˇ¸È
  4317. Èˇ¸È
  4318. Èˇ¸È
  4319. Èˇ¸È
  4320. Èˇ¸È
  4321. Èˇ¸Èò4Ä¿ùÄ¿ù x
  4322. 
  4323. Èˇ¸È
  4324. Èˇ¸È
  4325. Èˇ¸È
  4326. Èˇ¸È
  4327. Èˇ¸È
  4328. Èˇ¸È
  4329. Èˇ¸È
  4330. Èˇ¸È
  4331. Èˇ¸È
  4332. Èˇ¸È
  4333. Èˇ¸È
  4334. Èˇ¸È
  4335. Èˇ¸È
  4336. Èˇ¸È
  4337. Èˇ¸È
  4338. Èˇ¸È
  4339. Èˇ¸È
  4340. Èˇ¸È
  4341. Èˇ¸È
  4342. Èˇ¸È
  4343. Èˇ¸È
  4344. Èˇ¸È
  4345. Èˇ¸È
  4346. Èˇ¸È
  4347. Èˇ¸È
  4348. Èˇ¸È
  4349. Èˇ¸È
  4350. Èˇ¸È
  4351. Èˇ¸È
  4352. Èˇ¸È
  4353. Èˇ¸È
  4354. Èˇ¸È
  4355. Èˇ¸È
  4356. Èˇ¸È
  4357. Èˇ¸È
  4358. Èˇ¸È
  4359. Èˇ¸È
  4360. Èˇ¸È
  4361. Èˇ¸È
  4362. Èˇ¸È
  4363. Èˇ¸È
  4364. Èˇ¸È
  4365. Èˇ¸È
  4366. Èˇ¸È
  4367. Èˇ¸È
  4368. Èˇ¸È
  4369. Èˇ¸È
  4370. Èˇ¸È
  4371. Èˇ¸È
  4372. Èˇ¸È
  4373. Èˇ¸È
  4374. Èˇ¸È
  4375. Èˇ¸È
  4376. Èˇ¸È
  4377. Èˇ¸È
  4378. Èˇ¸È
  4379. Èˇ¸È
  4380. Èˇ¸È
  4381. Èˇ¸È
  4382. Èˇ¸È
  4383. Èˇ¸È
  4384. Èˇ¸È
  4385. Èˇ¸È
  4386. Èˇ¸Èò4¿ù¿ù
  4387. xJ
  4388. Èˇ¸È
  4389. Èˇ¸È
  4390. Èˇ¸È
  4391. Èˇ¸È
  4392. Èˇ¸È
  4393. Èˇ¸È
  4394. Èˇ¸È
  4395. Èˇ¸È
  4396. Èˇ¸È
  4397. Èˇ¸È
  4398. Èˇ¸È
  4399. Èˇ¸È
  4400. Èˇ¸È
  4401. Èˇ¸È
  4402. Èˇ¸È
  4403. Èˇ¸È
  4404. Èˇ¸È
  4405. Èˇ¸È
  4406. Èˇ¸È
  4407. Èˇ¸È
  4408. Èˇ¸È
  4409. Èˇ¸È
  4410. Èˇ¸È
  4411. Èˇ¸È
  4412. Èˇ¸È
  4413. Èˇ¸È
  4414. Èˇ¸È
  4415. Èˇ¸È
  4416. Èˇ¸È
  4417. Èˇ¸È
  4418. Èˇ¸È
  4419. Èˇ¸È
  4420. Èˇ¸È
  4421. Èˇ¸È
  4422. Èˇ¸È
  4423. Èˇ¸È
  4424. Èˇ¸È
  4425. Èˇ¸È
  4426. Èˇ¸È
  4427. Èˇ¸È
  4428. Èˇ¸È
  4429. Èˇ¸È
  4430. Èˇ¸È
  4431. Èˇ¸È
  4432. Èˇ¸È
  4433. Èˇ¸È
  4434. Èˇ¸È
  4435. Èˇ¸È
  4436. Èˇ¸È
  4437. Èˇ¸È
  4438. Èˇ¸È
  4439. Èˇ¸È
  4440. Èˇ¸È
  4441. Èˇ¸È
  4442. Èˇ¸È
  4443. Èˇ¸È
  4444. Èˇ¸È
  4445. Èˇ¸È
  4446. Èˇ¸È
  4447. Èˇ¸È
  4448. Èˇ¸È
  4449. Èˇ¸È
  4450. Èˇ¸È
  4451. Èˇ¸Èò4@ù@ùJxä
  4452. Èˇ¸È
  4453. Èˇ¸È
  4454. Èˇ¸È
  4455. Èˇ¸È
  4456. Èˇ¸È
  4457. Èˇ¸È
  4458. Èˇ¸È
  4459. Èˇ¸È
  4460. Èˇ¸È
  4461. Èˇ¸È
  4462. Èˇ¸È
  4463. Èˇ¸È
  4464. Èˇ¸È
  4465. Èˇ¸È
  4466. Èˇ¸È
  4467. Èˇ¸È
  4468. Èˇ¸È
  4469. Èˇ¸È
  4470. Èˇ¸È
  4471. Èˇ¸È
  4472. Èˇ¸È
  4473. Èˇ¸È
  4474. Èˇ¸È
  4475. Èˇ¸È
  4476. Èˇ¸È
  4477. Èˇ¸È
  4478. Èˇ¸È
  4479. Èˇ¸È
  4480. Èˇ¸È
  4481. Èˇ¸È
  4482. Èˇ¸È
  4483. Èˇ¸È
  4484. Èˇ¸È
  4485. Èˇ¸È
  4486. Èˇ¸ÈÕÕÕÕÕÕÕÕÕÕÕ!˛ÄÄÉÄ ÙÄ ¯˛@Ú$˛¡ÅD@"@0Ä˚    @@Ú$˛¡Ç$@"@(Ä˚    @@Ú(˛"ä¢Ç$@"¯" (û'∏ÁxÁáÁG≈·…ÄÛ'˛!ä¢Ç#Ä# H!$Q"°DàòX¢HëHÇ&*Ú'˛!Rî≤$@"" |!$QÙ°DèòPCëOÇ& Ú'˛!RîÇ$@"" D!$Q2°DàP2LëH&
  4487. Ú'˛!RîÅD@"" Ñ!$Q&°DàòP¶IëHÇ&)Ú(˛""àÄÉÄ"Ë Ç$X‰ûDáèf^G≈„»ÄÛ
  4488. ¯@€
  4489. ¯ê@€
  4490. ¯pÄ€˛@˛  ˝@@˙ADÄÄÓ˛ 0`˝`¿˚aD¡ÄÓ˛ 0`˝`¿˚QD¡ÄÓ#˛ŒÔDwO(ßÁû QNxqÛèq«∏ QD¢ÄÓ#˛$ê£EäPë(®ëR QQDäHä$P ID¢ÄÓ#˛$ê°EPë%/ëQ@JGD:»ã‰P EDîÄÓò4@Äù@Äùäx #˛$ê°EPë%(Q@JYD äP@EDîÄÓ#˛$ê°M
  4491. Pë%(ëQ@JSDö4Hä$P@CDîÄÓ#˛&è4ÛO"'êÄDLƒe”àâƒXÄADàÄÓ
  4492. ÔÄ˝ ÔIJ Â
  4493. ¸‡Â˛1¯@˛ @8¡¿˛„˛»˚@G" ˝„˛Ñ˚@F ˝„˛Ñ ,N8pàßN ±8·¡—√ñ²å 2qDÄU(—
  4494. 0@…≈2$Y²t@"`U(_–ÄâÄs¬Á—²!@"`dU(P âÅê"²!à@"aM"(QB"âÖ4"$Q²pÄ<^2"'Œ }√‡ÒxÀ¡Ò√ûÂ˚ ˚ ˛Ä¸Â˚ ˚ ˛Ä¸Â˚ ˜Ä¸Â˚ ˜Ä¸ÂÕÕÕÕÕÕÕÕÕÕÕ˛Ä¿˚Ä›˛Ä ˛Ä›˛Ä˛Ä›˛XéèrƒxÁûfi˛    dëHã$Qëbfi˛ëDüHä$QÙë@fi˛ëDêHä$Që@fi˛ëDë(Hä$—ëBfi˛^xé«àã√X‰@ë<fi˝@˝˛@‹˝@˝˛@‹ ˝@˝ÿ˛C˛&ÿ˛ÄD˛$ ‹˛ÄH˛$ ‹˛ ÄPDÒ‡%›Œw雲 hDà %    (H›˛ HDà@%…(H›˛ DDàÄ%)(H›˛ BLâ%4)(H›˛ C4ã‡$”Õ ∑à›ÕÕÕ ˛@¸‡Ÿ˛@Ä(Ÿ˛@ÄDŸ˛Q‹Áx‡DŸ˛Q ëÑÄ`DŸ˛Q<êrÑÄDŸ˛QëíÑÇDŸ˛SBë2ÑÇ(Ÿ˛M<–ÀxÅ‚ŸÕò4Ä¿ùÄ¿ù x
  4495. ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿ù¿ù
  4496. xJÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@ù@ùJxäÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@ù@ùJxäÕÕ
  4497. È30È
  4498. ÈÈ–Ê È
  4499. ÈÈÊ È–
  4500. ÈÈ–Ê È˛@Ô¿È ˚@Ô¿ È˛@Ô¿Á˛@Ô¿È˛@Ô¿Á ˚@Ô¿ È˛|Ô¯È ˚<Ô È˛Ô8Á˛˙@¯0È˛0˙@¯pÁ˚`˙Y‹˘‡ È˛@˙¸r˘¿È˚¿˙a≤˙¿ ÈÄ˙\¸˙ÄÁ˜˙Ș˙ʸ¿¯˙Ä È¿Ô¿È ˚Ôˇ¿ È˛@Ô¿Á˛@Ô¿È˛bÔ"¿Á ˚@Ô¿ È˛@Ô¿È ˚HÔà¿ È˛@Ô¿Á˛@Ô¿È˛bÔ"¿Á ˚@Ô¿ È˛@Ô¿È ˚HÔà¿ È˛@Ô¿Á˛@Ô¿È˛bÔ"¿Á ˚@Ô¿ È˛@Ô¿È ˚HÔà¿ È˛@Ô¿Á˛@Ô¿È˛bÔ"¿Á ˚@Ô¿ È˛@Ô¿È ˚HÔà¿ È˛@Ô¿Á˛@Ô¿È˛bÔ"¿Á ˚@Ô¿ È˛@Ô¿È ˚HÔà¿ È˛@Ô¿Á˛@Ô¿Èò4@Äù@Äùäx ˛bÔ"¿Á ˚@Ô¿ È˛@Ô¿È ˚HÔà¿ È˛@Ô¿Á˛Ôˇ¿È˛@Ô¿Á˚@˘¯¿ È˛@˙<˘¿È˚@˚n“Ê2‡˚¿ Èˇˇ¿˚Vù/§Ä˚¿ÁÄ@˚Vë*<Ä˚¿ÈÄ@˚U8Á)°‡˚¿Á˝Ä@˚˛˙¿ ÈÄ@˚ˆ¿È˝ÄÔˇ¿ ÈÄ@Ô¿ÁÄ@Ô¿ÈÄbÔ"¿Á˝Ä@Ô¿ ÈÄ@Ô¿È˝ÄHÔà¿ ÈÄ@Ô¿ÁÄ@Ô¿ÈÄbÔ"¿Á˝Ä@Ô¿ ÈÄ@Ô¿È˝ÄHÔà¿ ÈÄ@Ô¿ÁÄ@Ô¿ÈÄbÔ"¿Á˝Ä@Ô¿ ÈÄ@Ô¿È˝ÄHÔà¿ ÈÄ@Ô¿ÁÄ@Ô¿ÈÄbÔ"¿Á˝Ä@Ô¿ ÈÄ@Ô¿È˝ÄHÔà¿ ÈÄ@Ô¿ÁÄ@Ô¿ÈÄbÔ"¿Á˝Ä@Ô¿ ÈÄ@Ô¿È˝ÄHÔà¿ ÈÄ@Ô¿ÁÄ@Ô¿ÈÄbÔ"¿Á˝Ä@Ô¿ ÈÄ@Ô¿È˝ÄHÔà¿ ÈÄ@Ô¿ÁÄ@Ô¿ÈÄbÔ"¿Á˝Ä@Ô¿ ÈÄ@Ô¿È˝ÄHÔà¿ ÈÄ@Ô¿ÁÄ@Ô¿ÈÄbÔ"¿Á˝Ä@Ô¿ ÈÄ@Ô¿È˝ÄHÔà¿ Èò4Ä¿ùÄ¿ù x
  4501. Ä@Ô¿ÁÄ@Ô¿ÈÄbÔ"¿Á˝Ä@Ô¿ ÈÄ@Ô¿È˝ÄHÔà¿ ÈÄ@Ô¿ÁÄ@Ô¿ÈÄbÔ"¿Á˝Ä@Ô¿ ÈÄ@Ô¿È˝ÄHÔà¿ ÈÄ@Ô¿ÁÄÔˇ¿ÈÄc31 2#03"3#1¿Á˝Ä@»¿Ã ¿@ÿåHà @ÃÄ¿ ÈÄDUPDA@ETPPD@PDTQ¿È˝ÄL ¿Ä¿¿Ã»ƒ @˛¿ÃHÄH¿ ÈÄP12˛ #11¿ÁÄQPPAQATTAQ¿È
  4502. ÄS31˛ 1!0  1¿Á˝Ä@»ƒ ƒ ¿àÿÑ@ @å¿ ÈÄUA@AQA@TQU¿È˝ÄL¿ƒÄà¿Ã@¿Äÿÿ ÈÄC 0#"10033!¿ÁÄPQPUDAPDDTUAPD¿ÈÄq003 121"10301"0¿Á˝ÄHåD¿¿åƒ»åàHHà ƒÃ¿ ÈÄUPA@TUPQD@QT¿È˝ÄL @@ÃÄÃL 僿ƒ å¿ ÈÄS"3033"2¿ÁÄEEEAUDAA¿ÈÄ@#03˝ #¿Á˝ÄD ¿Ã ÿ¿ ¿LDå»@¿ ÈÄ@DEUQATAEDQ¿È˝ÄLà H¿¿Ã¿у å¿¿L¿ Ä¿ ÈÄP"30 30! 0¿ÁÄDTATDDTP@T¿ÈÄ@00#00 2030¿Á˝ÄDL@@» ¿L@¿Ã ¿å ¿ ÈÄTDDAAAQA@AU¿È˝ÄLà @ƒÄÑå L HÄ¿¿»Ã ¿ ÈÄp210"3#¿ÁÄQA@EEA¿ÈÄC013 3 1¿Á˝ÄL»@ å¿DÑÃà 僿@¿¿ ÈÄEP@AAA¿È˝ÄL¿@ ƒH à¿àå¿ ÈÄp0013200233¿ÁÄPPT@TTPA@¿ÈÄp0#˛21  3¿Á˝ÄLÃу@¿ÄLÃ@¿¿H¿ ¿ ÈÄPDDEDPQDE@UPQ¿È˝ÄHƒ¿ ÃÃLå¿@ÑLLHƒ¿ ÈÄp! 030300223¿ÁÄPTADD@QTU¿ÈÄb  312#030¿Á˝ÄLLÃ˛ƒ ÑLIJ» ¿ ÈÄUQQUPE¿È˝ÄL ¿ÑHÑ¿ÄåÑH ¿ ÈÄS030#0#0#3013¿ÁÄQPEEUPUPAQQPT¿ÈÄp0"13200!2032¿Á˝Ä@ ¿ @å¿ @@ Ñ¿ÑÄ¿ Èò4¿ù¿ù
  4503. xJÄAE@TUEEPE@E¿È˝ÄD僿ÄÃÿ¿¿Ã» ¿ ÈÄs1203#"!30¿ÁÄQEAPTP@P¿ÈÄC"3323211¿Á˝ÄL @HƒÄå å ¿¿ƒÄÑ¿ ÈÄQQAUA@EE¿È˝ÄH»@å ¿ÃLÃÑHƒ¿ ÈÄQ02310031# 00¿ÁÄTPQEU@DTDPDU@U¿ÈÄS2"1 302"#¿Á˝ÄDH ƒ¿ ƒåååL@ @¿ ÈÄAPDTATE¿È˝Ä@Dă@ ÃH¿»¿Ñ ƒ @¿ ÈÄR3#0"0#13303¿ÁÄUP@E@P@PPPDP¿ÈÄS""3! 033˛0¿Á˝ÄDDLH@¿L¿ ¿åL¿¿ ÈÄ@@DP@EE@PA@AE@¿È˝ÄD@ÿĿà@у@»¿ÃÄ@Ä¿ ÈÄ@#03!!"¿ÁÄEDATA@DTDQ¿ÈÄc213#0"1¿Á˝Ä@¿ÃLƒ¿àÄ»àƒ @@»»¿ ÈÄAPQT@ATAQD@T¿È˝ÄDL¿Ã¿¿Ãÿ »ƒ@¿ƒÃ»¿ ÈÄ`0˛!302  1103¿ÁÄTP@PTEQPD@DEAQ¿ÈÄq˛03100!3¿Á˝ÄH»¿å@»»àÿÃà Lå¿ ÈÄQQEPDAEAPAA¿È˝ÄD¿Äƒ 忻ĿĿÿÿ ÈÄr "3#033¿ÁÄ8EPPDDAQETPAPDE¿ÈÄ?Ò1033002033¿Á
  4504. ˝Ïˇ¿ È<@Ô¿È ˚HÔà¿ È˛@Ô¿Á˛@Ô¿È˛bÔ"¿Á ˚@Ô¿ È˛@Ô¿È ˚HÔà¿ È˛@Ô¿Á˛@Ô¿È˛bÔ"¿Á ˚@Ô¿ È˛@Ô¿È ˚HÔà¿ È˛@Ô¿Á˛Ôˇ¿È˛Ôˇ¿ÁÊ È
  4505. ÈÈÊ È–
  4506. ÈÈ–Ê È
  4507. ÈÈÊ È–ˇ‡ÏÈò4@ù@ùJxä    í ”˝Ã "@Û È ƒ`2@ÛÈ˝å`*ŒÕ1ªÁLÛ È Ç +)üJM4fi⁄ ƒ`')ëJ5‘–ÛÈ ≥ "…è1›˜N⁄ ˝Ã‡Ï È≈ ÏÈ ˝ˇ‡Ï È–
  4508. ÈÈ– ˝ˇ‡Ï ÈÄ ÏÈ ˝à†Ì È
  4509. Ä ‘
  4510. Ä 1ÜÁ3ÒÈ ¢ {œëœÄŸ˝Ä BñƒÒ È Ä 9Δ„ªÄÚÈ˝à†˛Ä ÈÄ ˛Ä◊ˇ‡˛ÄÈ–Ê È
  4511. ÈÈÊ È–
  4512. ÈÈ–Ê È
  4513. ÈÈ ËÃÈ
  4514. È30ÈÕÕÕÕÕÕÕÕÕÕÕ!˛ÄÄÉÄ ÙÄ ¯˛@Ú$˛¡ÅD@"@0Ä˚    @@Ú$˛¡Ç$@"@(Ä˚    @@Ú(˛"ä¢Ç$@"¯" (û'∏ÁxÁáÁG≈·…ÄÛ'˛!ä¢Ç#Ä# H!$Q"°DàòX¢HëHÇ&*Ú'˛!Rî≤$@"" |!$QÙ°DèòPCëOÇ& Ú'˛!RîÇ$@"" D!$Q2°DàP2LëH&
  4515. Ú'˛!RîÅD@"" Ñ!$Q&°DàòP¶IëHÇ&)Ú(˛""àÄÉÄ"Ë Ç$X‰ûDáèf^G≈„»ÄÛ
  4516. ¯@€
  4517. ¯ê@€
  4518. ¯pÄ€˛@˛  ˝@@˙ADÄÄÓ˛ 0`˝`¿˚aD¡ÄÓ˛ 0`˝`¿˚QD¡ÄÓ#˛ŒÔDwO(ßÁû QNxqÛèq«∏ QD¢ÄÓ#˛$ê£EäPë(®ëR QQDäHä$P ID¢ÄÓ#˛$ê°EPë%/ëQ@JGD:»ã‰P EDîÄÓò4@Äù@Äùäx #˛$ê°EPë%(Q@JYD äP@EDîÄÓ#˛$ê°M
  4519. Pë%(ëQ@JSDö4Hä$P@CDîÄÓ#˛&è4ÛO"'êÄDLƒe”àâƒXÄADàÄÓ
  4520. ÔÄ˝ ÔIJ Â
  4521. ¸‡Â˛1¯@˛ @8¡¿˛„˛»˚@G" ˝„˛Ñ˚@F ˝„˛Ñ ,N8pàßN ±8·¡—√ñ²å 2qDÄU(—
  4522. 0@…≈2$Y²t@"`U(_–ÄâÄs¬Á—²!@"`dU(P âÅê"²!à@"aM"(QB"âÖ4"$Q²pÄ<^2"'Œ }√‡ÒxÀ¡Ò√ûÂ˚ ˚ ˛Ä¸Â˚ ˚ ˛Ä¸Â˚ ˜Ä¸Â˚ ˜Ä¸ÂÕÕÕÕÕÕÕÕÕÕÕ˛Ä¿˚Ä›˛Ä ˛Ä›˛Ä˛Ä›˛XéèrƒxÁûfi˛    dëHã$Qëbfi˛ëDüHä$QÙë@fi˛ëDêHä$Që@fi˛ëDë(Hä$—ëBfi˛^xé«àã√X‰@ë<fi˝@˝˛@‹˝@˝˛@‹ ˝@˝ÿ˛C˛&ÿ˛ÄD˛$ ‹˛ÄH˛$ ‹˛ ÄPDÒ‡%›Œw雲 hDà %    (H›˛ HDà@%…(H›˛ DDàÄ%)(H›˛ BLâ%4)(H›˛ C4ã‡$”Õ ∑à›ÕÕÕ ˛@¸‡Ÿ˛@Ä(Ÿ˛@ÄDŸ˛Q‹Áx‡DŸ˛Q ëÑÄ`DŸ˛Q<êrÑÄDŸ˛QëíÑÇDŸ˛SBë2ÑÇ(Ÿ˛M<–ÀxÅ‚ŸÕò4Ä¿ùÄ¿ù x
  4523. ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿ù¿ù
  4524. xJÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@ù@ùJxäÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕˇ∞@ˇ ˇˇˇˇ@
  4525. ˇ·ˇ‚7^
  4526. 4*\¯, Palatino&e.3+l"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@lMemory4⁄*˙¯
  4527. (‡*40    )BMemory Blocks4^*¿¯
  4528. °dONLNd\lhr(elY@Ä°dONLNd\rh“)ou can allocate a nonrûÄ°dONLNd\“hfi)`9elocatable block of memory by calling the Memory Manager .°dONLNdPiluí(rl    function ,
  4529. Courier°dONLNdYiíu∂)&NewPtr¬†°dONLNd_iµu÷)#. The V¶‡°dONLNdfi’uÓ) >enn Diagrammer application uses the following line of code to .°dONLNd§vlÇÿ(lallocate a new window rÚÄ°dONLNdªvÿÇÍ)lecorf‡°dONLNdøvÎÇN)d each time the user crÈ@°dONLNd÷vNÇ⁄)ceates a new document window:.°dONLNdÛçlôh(ñl*myPointer := NewPtr(sizeof(WindowRecord));°dONLNd•l±~*HerR`°dONLNd!•~±à)e, R`°dONLNd$•à±æ)
  4530.     myPointerR`°dONLNd-•æ±Ï)6  is of type R`°dONLNd9•Ï±˛).Ptrï°dONLNd<•˝± ). (T™°dONLNd@• ±∏)*o see this line of code in context, look a™°dONLNdj•∏±æ)≠t ™°dONLNdl•æ±) Listing 6-6 .°dONLNdx≤læë(ªlon page !¿°dONLNdÄ≤íæó)&1ï °dONLNdÅ≤ñæ†)17ï °dONLNdÉ≤†æ¢)
  4531. . °dONLNdÑ≤£æ¶))
  4532. „*ͯ4‰*ͯ Âl¯
  4533. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdÜ‘l„‡(fllRelocatable Blocksˇˇˇˇˇˇ€r(fl2
  4534. °dONLNdôÍlˆr(ÛlTµ¿°dONLNdöÍqˆ|)o rp@°dONLNdùÍ}ˆç) efer`°dONLNd°Í鈮)ence r6@°dONLNdßÍ®ˆ»)=elocatable blocks, the Memory Manager uses a scheme known as —`°dONLNd‰Í»ˆÍ(Û»double °dONLNdΘl°(l indirection.Ö¿°dONLNd˜˜°T)5& The Memory Manager keeps track of a r‡°dONLNd˜UÈ)¥#elocatable block internally with a °dONLNd@lÆ(lmaster pointerP¿°dONLNdNÆ∞)B,–¿°dONLNdO∞.) which itself is part of a nonr‡°dONLNdn/]) elocatable ߆°dONLNdy]ª).master pointer block¿°dONLNd纷)_     in your °dONLNdñlØ(lapplication heaQ‡°dONLNd•∞∏)Dp.
  4535. +*9¯4,*9¯    °dONLNd®*l5(2lNote
  4536. ˇ·ˇ‚7^
  4537. °dONLNd≠7lC´*EThe Memory Manager allocates one master pointer block (containing 64 °dONLNdÚClO†* Gmaster pointers) for your application at launch time, and you can call .°dONLNd9Ol[~* the °dONLNd=O~[¿) MoreMasters°dONLNdHO¿[Ã)B prR`°dONLNdKOÃ[È) ocedur$¿°dONLNdQOÈ[ˇ)e to r˜ °dONLNdWO˛[´)&equest that additional master pointer .°dONLNd}[lg¡(dlblocks be allocated.,Zapf DingbatsQ`°dONLNdö^«fÃ)[u
  4538. °dONLNdúllx(ul!When the Memory Manager moves a r!@°dONLNdΩlx)´3elocatable block, it updates the master pointer so °dONLNdylÖ˜(Çl that it always contains the addrVÄ°dONLNdy˜Ö&)ã ess of the rÖ‡°dONLNdy&Öq)/elocatable block. –‡°dONLNd.yqÖw)KYë`°dONLNd/ywÖà)ou rS°dONLNd3yâÖô)eferˇ °dONLNd7yôÖ)ence the block with .°dONLNdKÜlít(èla °dONLNdMÜtíò)handle,°dONLNdTÜòí¨)$ defi°dONLNdYܨí›) ned by the °dONLNddÜ›í)1Handle°dONLNdjÜí3)$  data type.°dONLNdvùl©Ñ(¶lTYPE°dONLNd|´~∑¢+Handle°dONLNdá´ÿ∑)Z= ^Ptr;.°dONLNdè√lœs(ÃlA∫†°dONLNdê√sœ„) handle contains the addrı@°dONLNd©√„œF)pess of a master pointerÑÄ°dONLNd¿√Fœé)c. The left side of \†°dONLNd”√èœß)IFigur/`°dONLNdÿ√ßœª)e 2-8Ç°dONLNd›√ªœ„)     shows a °dONLNdÊ–l‹£(Ÿlhandle to a rÌ`°dONLNdÛ–£‹Û)7Melocatable block of memory located in the middle of the application heap. If °dONLNd@›lÈ´(Êlnecessary (perµ@°dONLNdN›´ÈÏ)?haps to make rÔ`°dONLNd\›ÏÈÏ)A5oom for another block of memory), the Memory Manager °dONLNdëÍlˆò(ÛlDcan move that block down in the heap, as shown in the right side of v@°dONLNd’Íôˆ±(ÛôFigurI°dONLNd⁄ͱˆ≈)e 2-8ÊÄ°dONLNdflÍ≈ˆ«).ˇ{Ç@ˇ ˇˇˇˇ@
  4539. ˇ·ˇ‚7^
  4540. 4H\, Palatino&e.3+ä"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@äMemory4⁄ä˙(‡äMemory Blocks
  4541. (‡ 41
  4542. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  4543. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  4544.  
  4545.  
  4546.  
  4547.  
  4548.  
  4549. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  4550. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  4551. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜ ˇˇ˛ˇˇ ˛ˇˇˇ     ˇˇˇˇ
  4558. ˇ˝ˇ ˇ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  4559. 4€4—?òÄ
  4560. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  4561. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  4562.  
  4563.  
  4564.  
  4565.  
  4566.  
  4567. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  4568. ˛ˇˇˇˇ
  4569. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˙ˇˇ˛˝ˇ˛˙ˇˇ˙ˇˇ˛˝ˇ˛˜˜˝˛ˇ˛
  4570. ˛ˇ˛ˇˇ
  4571. ˛ˇ˛ˇˇ˝˛ˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˚ˇˇˇ    ˇˇˇ˝ˇˇ˚˝ˇˇ˝˚ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  4572. gHw4gHw"hH]
  4573. ˇ·ˇ‚7^    °dONLNd\äg¥(dä
  4574. Figure 2-8°dONLNd \Ãg“)BA0°dONLNd \“gG) handle to a relocatable block
  4575. °dONLNd+Ìä˘Â(ˆäMaster pointers for rû‡°dONLNd@Ì¢w)["elocatable objects in your heap arZ°dONLNdbÌx˘Ì)ìe always allocated in your °dONLNd}˙äâ(ä:application heap. Because the blocks of master pointers ar¡†°dONLNd∑˙â•)ˇe nonrËÄ°dONLNdΩ˙•)elocatable, it is best to °dONLNd◊äV(ä/allocate them as low in your heap as possible. ^°dONLNdV\)ÃYÄ°dONLNd\⁄)ou can do this by calling the ,
  4576. Courier.°dONLNd%ä Ã(ä MoreMasters°dONLNd0àÿ)B prR`°dONLNd3ÿ ı) ocedur$¿°dONLNd9ı è)"e when your application starts up.
  4577. wH’4v9w:ò<@€@€w:∑≈≈ ˇ˛     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇò<@Ä€@Ä€∑:˜     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇò<Ä¿€Ä¿€˜:7     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇò<¿€¿€7:w     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇò<@€@€w:∑     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇò<@Ä€@Ä€∑:˜     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ     ˇÄˇ≈≈≈≈≈≈≈≈≈≈≈$˛"ÄÄÜ Ù° ¸@˛A †È%˛#¡ÅYdÄ£ ˝
  4578. @A †È%˛#¡Ç0ÄBĢŠ˝
  4579. @A †È%˛"ä¢Ç0Ä"¯B@Åa«ù#ɺú^súyá&Ë%˛"ä¢Ç1Ä#ÂF@Åí$c$ABÇ"abâ"E"òX®Ë%˛"Rî≤.Ä":@¡‰a'¡BÇ>a@9E>òP0Ë%˛"RîÇ Ä"@A$a$B Ç a@…2E òP(Ë%˛"RîÅQ"D@Ada$AB    Ç"aBô&E"òP§Ë%˛""àÄé"Ë8@!î_#źB^<eôyè"Ë
  4580. ¯Ä”
  4581. ¯êÄ”    ¯p“˛ @˛  ˝ÄÄ˙ÇHÄÄÊ˛  0`˝¡Ä˚¬H¡ÄÊ˛  0`˝¡Ä˚¢H¡ÄÊ#˛#‹Ô:DwO<(ß=œ ¢úxs„èqœ8 ¢H¢ÄÊ#˛"(êΔEäP¢    (®¢0í ¢¢Då$Hä(ê íH¢ÄÊ#˛"(ê¬EP¢    %/¢0ë@îéD<'»ãËê äHîÄÊ#˛"(ê¬EP¢    %("0ë@î≤DÃ$äê@äHîÄÊ#˛"(ê¬M
  4582. P¢    %(¢0ë@î¶DúdHä(ê@ÜHîÄÊ#˛",è>4ÛO" "'"/ÄàôDg£àâ»òÄÇHàÄÊ
  4583. ÔÄ˝ › ÔIJ@› ˝¿›˛pIJ
  4584.  Äp!¿€˛$à˚    Äà" €ò<Ä¿€Ä¿€˜:7˛ Dà˚    Äàb €˛@,é8pàÆ醠≥ƒ˜q`fi˛$x02±DÄU1ë1 ¿Ã$ä #"âêfi˛$D"†U0ü      å$ä<!>˘fi˛~E"†dU0ê Ù å$ä! Åfi˛E"°M"0ë$ å$äB!"âfi˛8<û2"/é #¿Ûƒã<q‡fi˚ ˚ ˛Ä¸›˚ ˚ ˛Ä¸›˚ ˜Ä¸›˚ ˜Ä¸›≈≈≈≈≈≈≈≈≈≈≈˛ÄÄ˚Ä’˛ Ä@˛Ä’˛
  4585. Ä ˛Ä’˛
  4586. ,Xúèr»π«û÷˛2d¢Hã(í$ëb÷˛"DæHä(ì‰ë@÷˛"D†(Hä(íë@÷˛!"D¢HHä)í$ëB÷˛ ºxúáàãΔôƒ@ë<÷˝ @˝˛@‘˝ @˝˛@‘ ˝ @˝–˛> C˛*–˛!D˛( ‘˛!H˛( ‘˛ !PDÛ¿)›Œwé’˛ >hDà@)    (H’˛  HDàÄ)…(H’˛  DDâ))(H’˛  BLä)4)(H’˛   C4è¿(”Õ ∑à’≈≈≈ ˛"ĸ‡—˛"ÄÄ(—˛"ÄÄD—˛"ë‹Áx‡D—˛"ë ëÑÄ`D—˛"ë<êrÑÄD—˛"ëëíÑÇD—˛"ìBë2ÑÇ(—˛"ç<–ÀxÅ‚—≈≈≈≈≈≈≈≈≈ò<¿€¿€7:w≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<€€w:á≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@€@€w:∑≈≈ 3˛    À˛    À˛»Äˇ    À˛»Äˇ    À˛    À˛    À˛»Äˇ    À˛ÙÙĢÙ¸ÄˇˆÙĢÙ˝˛ˆÙĢÙ˝˛ˆÙĢÙ˝˛ÙÙĢÙ¸ÄˇˆÙĢÙ˝˛ÙÙ˘Ù‡˝ÄˇˆÛ ˘Û`˛˛ˆÛ`˘Û‡˛˛"ˆ ¸Ä˙‡˘ ¸˘¿˛˛ Ù¸Ä˙¿˘¸˙Ľġ'ˆ¸õ∏¸Ģ0¸gp¸IJ˛#Ù0¸º‰¸Ģ ¸Ò»¸¸Äˇ%ˆ ¸£d¸¯`¸Ü»¸˝˛%ˆ`¸ù¯¸¯¿¸s¸˝˛!ˆ¿˙ ¸¯Ä˙@¸ ˝˛ÙÄ˙ ¸˘Ä˙@¸¸Äˇ#˜˙ ¸˘˙@¸˝˛ÙÙĢÙ¸ÄˇˆÛˇÄ˘Ûˇ˝˛ˆÙĢÙIJ˛ˆÙ"#ĢÙ"#IJ˛ÙÙĢÙĽġˆÙĢÙIJ˛ÙÙàâĢÙàâĽġˆÙĢÙIJ˛ˆÙĢÙIJ˛ˆÙ"#ĢÙ"#IJ˛ÙÙĢÙĽġˆÙĢÙIJ˛ÙÙàâĢÙàâĽġˆÙĢÙIJ˛ˆÙĢÙIJ˛ˆÙ"#ĢÙ"#IJ˛ÙÙĢÙĽġˆÙĢÙIJ˛ÙÙàâĢÙàâĽġˆÙĢÙIJ˛ˆÙĢÙIJ˛ˆÙ"#ĢÙ"#IJ˛ÙÙĢÙĽġˆÙĢÙIJ˛ÙÙàâĢÙàâĽġˆÙĢÙIJ˛ˆÙĢÙIJ˛ˆÙ"#ĢÙ"#IJ˛ÙÙĢÙĽġˆÙĢÙIJ˛ÙÙàâĢÙàâĽġˆÙĢÙIJ˛ˆÙĢÙIJ˛ò<@Ä€@Ä€∑:˜ˆÙ"#ĢÙ"#IJ˛ÙÙĢÙĽġˆÙĢÙIJ˛ÙÙàâĢÙàâĽġˆÙĢÙIJ˛ˆÙĢÙIJ˛ˆÙ"#ĢÙ"#IJ˛ÙÛˇÄ˘ÛˇÄ˝ÄˇˆÙĢÙIJ˛ÙÙĢÙĽġ%ˆ˙`˝Ģ˙`˝IJ˛)ˆ¸ ˝Ģ¸ ˝IJ˛/ˆ˛÷…wè Ä˛Ģ˛÷…wè Ä˛IJ˛.Ù˝™èzQ#‡˛˛ˇ‡¸˝™èzQ#‡˛˛ˇ¿Äˇ.ˆ˝™âäQ"˝Ä ¸˝™âäQ"˝Ä@˛0Ù˛©o˘‡˛Ä ¸˛©o˘‡˛Ä@ġ&ˆ˝˘Ä ¸˝˘Ä@˛&ˆ˝˘Ä ¸˝˘Ä@˛ˆÙÄ ¸ÙÄ@˛ÙÛˇÄ ¸ÛˇÄ@ġˆÙÄ ¸ÙÄ@˛ÙÙàâÄ ¸ÙàâÄ@ġˆÙÄ ¸ÙÄ@˛ˆÙÄ ¸ÙÄ@˛ˆÙ"#Ä ¸Ù"#Ä@˛ÙÙÄ ¸ÙÄ@ġˆÙÄ ¸ÙÄ@˛ÙÙàâÄ ¸ÙàâÄ@ġˆÙÄ ¸ÙÄ@˛ˆÙÄ ¸ÙÄ@˛ˆÙ"#Ä ¸Ù"#Ä@˛ÙÙÄ ¸ÙÄ@ġˆÙÄ ¸ÙÄ@˛ÙÙàâÄ ¸ÙàâÄ@ġˆÙÄ ¸ÙÄ@˛ˆÙÄ ¸ÙÄ@˛ˆÙ"#Ä ¸Ù"#Ä@˛ÙÙÄ ¸ÙÄ@ġˆÙÄ ¸ÙÄ@˛ÙÙàâÄ ¸ÙàâÄ@ġˆÙÄ ¸ÙÄ@˛ˆÙÄ ¸ÙÄ@˛ˆÙ"#Ä ¸Ù"#Ä@˛ÙÙÄ ¸ÙÄ@ġˆÙÄ ¸ÙÄ@˛ÙÙàâÄ ¸ÙàâÄ@ġˆÙÄ ¸ÙÄ@˛ˆÙÄ ¸ÙÄ@˛ˆÙ"#Ä ¸Ù"#Ä@˛ÙÙÄ ¸ÙÄ@ġˆÙÄ ¸ÙÄ@˛ÙÙàâÄ ¸ÙàâÄ@ġˆÙÄ ¸ÙÄ@˛ˆÙÄ ¸ÙÄ@˛ˆÙ"#Ä ¸Ù"#Ä@˛ÙÙÄ ¸ÙÄ@ġˆÙÄ ¸ÙÄ@˛ÙÙàâÄ ¸ÙàâÄ@ġˆÙÄ ¸ÙÄ@˛ˆÙÄ ¸ÙÄ@˛ˆÙ"#Ä ¸Ù"#Ä@˛ÙÙÄ ¸ÙÄ@ġˆÙÄ ¸ÙÄ@˛ÙÙàâÄ ¸ÙàâÄ@ġò<Ä¿€Ä¿€˜:7ˆÙÄ ¸ÙÄ@˛ˆÙÄ ¸ÙÄ@˛ˆÙ"#Ä ¸Ù"#Ä@˛ÙÙÄ ¸ÙÄ@ġˆÙÄ ¸ÙÄ@˛ÙÙàâÄ ¸ÙàâÄ@ġˆÙÄ ¸ÙÄ@˛ˆÙÄ ¸ÙÄ@˛ˆÛˇÄ ¸Ù"#Ä@˛&ÙÄ  @Ä ¸ÙÄ@ġ(ˆ    H@!!    $"!Ä ¸ÙÄ@˛#Ù¸Ä˝Ä ¸ÙàâÄ@ġ(ˆ@AÄ Ä ¸ÙÄ@˛(ˆê Ä ¸ÙÄ@˛(ˆÄ DÄDêÅÄ ¸Ù"#Ä@˛&Ù$ÅÄàHÄ ¸ÙÄ@ġ(ˆÇ ÄÄ ¸ÙÄ@˛&Ù Ñ@àÄÄ    Ä ¸ÙàâÄ@ġ(ˆ   ABÑ( ÅÄ ¸ÙÄ@˛(ˆ@ÄÄ ¸ÙÄ@˛(ˆ @#Ä ¸Ù"#Ä@˛&Ù ÇÄ@BAB    Ä ¸ÙÄ@ġ'ˆ˝ÄIJÄ ¸ÙÄ@˛&ÙàÑ    A Ä ¸ÙàâÄ@ġ(ˆHÅ Ä     Ç!Ä ¸ÙÄ@˛'ˆ˝  ˛Ä ¸ÙÄ@˛(ˆ $ DÄd@ëÄ ¸Ù"#Ä@˛&ÙÄ@  Ä ¸ÙÄ@ġ(ˆ      %Ä ¸ÙÄ@˛&Ù$B†Ä@Ä ¸ÙàâÄ@ġ(ˆ@ Ä ¸ÙÄ@˛(ˆ @ÑÄÅÄ ¸ÙÄ@˛(ˆ @DÄÄÄ ¸Ù"#Ä@˛&ÙAÄ Ä ¸ÙÄ@ġ(ˆâ ""Ä ¸ÙÄ@˛&ÙÄDÄêAÄ ¸ÙàâÄ@ġ(ˆ@Ç$˛àDÄÄ ¸ÙÄ@˛(ˆÄêAÄ ¸ÙÄ@˛(ˆÅ Ä ¸Ù"#Ä@˛&ÙA"@ "$(!ÖÄ ¸ÙÄ@ġ(ˆÄ@ÄÄ ¸ÙÄ@˛%Ù˛Ä˝ê˛Ä ¸ÙàâÄ@ġ(ˆAH à ÅÄ ¸ÙÄ@˛(ˆ ˛@˛    Ä ¸ÙÄ@˛(ˆÄê@P@H
  4587. Ä ¸Ù"#Ä@˛&Ù@˛ÄH˛    Ä ¸ÙÄ@ġ(ˆÄ$êÄQÄ ¸ÙÄ@˛&Ù!@ DÄ ¸ÙàâÄ@ġ(ˆÄÄ@Ä ¸ÙÄ@˛%ˆ˝¸!Ä ¸ÙÄ@˛(ˆàÑ    A Ä ¸Ù"#Ä@˛&Ù` Ä
  4588. @Ç@    Ä ¸ÙÄ@ġ'ˆ˛
  4589. Ä  Ä ¸ÛˇÄ@˛0ÙH     d!Ä ¸Ä)H     eÄ@ġ2ˆ@ Ä Ä ¸@ ÄÄ@˛2ˆHA˛
  4590.      !Ä ¸Ñ˛HA˛     Ä@˛2ˆêë Ä ¸Ä@êëÄ@˛0ÙÄ DÄDêÅÄ ¸DÄ DÄDêÄ@ġ0ˆ˛Å˝àÄ ¸D˛Å˝âÄ@˛0ÙÇ$"ÄÄHÄ ¸ Ç$"ÄÄÄ@ġ2ˆ ÑÄÄÄ    Ä ¸   ÑÄÅÄ@˛2ˆ H@@ÄÅÄ ¸@ H@@Ä    Ä@˛2ˆ$@Ä (Ä ¸ $@ÅÄ@˛0Ù @#Ä ¸àÅ Ä@ġò<¿€¿€7:w2ˆ Ä@A@    Ä ¸D Ä@A    Ä@˛0Ùà˛ @ÄÄ ¸@à˛
  4591. @ÄÄ@ġ2ˆàÑ    ÄA Ä ¸Ñ àÑ    ÄAÄ@˛2ˆHÅ Ä     !Ä ¸HÅ Ä     Ä@˛0ˆ˝ †˛Ä ¸0˛˝ †Ä@˛0Ù $ DÄD@ëÄ ¸ ! $ DÄEÄ@ġ2ˆÄ@!  Ä ¸Ä@!!Ä@˛0Ù
  4592.      ˛%Ä ¸HÄ     Ä@ġ2ˆ%B  êDÄ ¸(%B  ê    Ä@˛2ˆDÄÄ ¸ÄDÄÄ@˛2ˆ @Ñ ÄÅÄ ¸Ä @Ñ!Ä@˛0Ù @DÄÄÄ ¸@ @DÄ    Ä@ġ/ˆ˛A˝ ˛Ä ¸˝A˝ Ä@˛0Ùàë" á ¸Ä@àë"Ä@ġ2ˆÄDÄ êˇ ¸DÄDÄ êÄ@˛%ˆÒˇÄ ¸ÄDÇâÄ@˛(ˆÙ"#èÄ ¸Ä(Ç@$êÄ@˛&ÙÙÄÄ ¸Å Ä@ġ(ˆÙÄÄ ¸   !Ä@˛&ÙÙàâÄÄ ¸D @Ä ÑÄ@ġ(ˆÙÄÄ ¸D˛Ä@˛ê    Ä@˛(ˆÙÄÄ ¸AH àÄ@˛%ˆÙ"#ÄÄ ¸¸ ˝Ä@˛&ÙÙÄÄ ¸ ÄÇ@PBAÄ@ġ(ˆÙÄÄ ¸Ç@ÄêH    Ä@˛&ÙÙàâÄÄ ¸˛Ä ˛
  4593. êÄ@ġ(ˆÙÄÄ ¸"Ä!Ñ"Ä@˛(ˆÙÄÄ ¸˛
  4594. Ä@Ä@˛(ˆÙ"#ÄÄ ¸˛IJ    @Ä@˛&ÙÙÄÄ ¸ÄÑ àÑ    AÄ@ġ(ˆÙÄÄ ¸` Ä
  4595. Ä@˛&ÙÙàâÄÄ ¸0˛    Ä`†Ä@ġ(ˆÙÄÄ ¸Ä! EÄ@˛(ˆÙÄÄ ¸    @@!à!Ä@˛(ˆÙ"#ÄÄ ¸Ñ HAD         Ä@˛&ÙÙÄÄ ¸Ä@ÅÄ@ġ(ˆÙÄÄ ¸ÄÇ ÄDÄ@˛&ÙÙàâÄÄ ¸@DDÅÄâÄ@ġ(ˆÙÄÄ ¸ Ç$"ÄÄÄ@˛(ˆÙÄÄ ¸   ÄÅÄ@˛(ˆÙ"#ÄÄ ¸@˛†H˛ÄÄ@˛&ÙÙÄÄ ¸  AB@    Ä@ġ'ˆÙÄÄ ¸! ˛˝ÉÄ@˛&ÙÙàâÄÄ ¸àDÄ êQÄ@ġ(ˆÙÄÄ ¸Ä@@    Ä@˛(ˆÙÄÄ ¸@Ñ ÄÑÄÇAÄ@˛(ˆÙ"#ÄÄ ¸HÅ Å     Ä@˛%ÙÙÄÄ ¸ ˛˝ ÄÄ@ġ(ˆÙÄÄ ¸ ! $ DÄ EÄ@˛&ÙÙàâÄÄ ¸Ä@!!Ä@ġ(ˆÙÄÄ ¸Ä˛ Ä@˛(ˆÙÄÄ ¸A(%B !ê    Ä@˛(ˆÙ"#ÄÄ ¸ÄÄÄ@˛&ÙÙÄÄ ¸Ä@@à!Ä@ġ(ˆÙÄÄ ¸@ @@Ä    Ä@˛&ÙÙàâÄÄ ¸ A Ä@ġ(ˆÙÄÄ ¸Ä@ÅÄ@˛(ˆÙÄÄ ¸ÄÅÄ  Å@˛(ˆÙ"#ÄÄ ¸Ç@DDÇÄâü@˛ı?ÛˇÄÄ ¸ÒˇÄ@ġ3˜‡PTU@AÄÄ ¸EPD@@øÄ@˛2ˆÄàÃÃ@»ÄÃD ÄÄ ¸ ăÄÑ »@ÉÄ@ġ4¯10  "ÄÄ ¸0 330 3ÄÄ@˛4¯E@EDQÄÄ ¸@˛AÄÄ@˛ò<@€@€w:∑4¯33 211ÄÄ ¸"01 2330ÄÄ@˛2ˆƒ@à @àÅÄÄ ¸LH Ä ƒLLÑ Ñ¿ÄÄ@ġ4¯APQPDD@TQÄÄ ¸UTÄÄ@˛2ˆ¿à»@¿ ¿Ñ¿¿ÃÃIÄÄ ¸˛@HL Là     ÄÄ@ġ4¯1332!13ÄÄ ¸˛02322#033ÄÄ@˛4¯QEUPTAQÄÄ ¸@TPTEQÄÄ@˛4¯"31ÄÄ ¸0#23 #3032ÄÄ@˛2ˆÑ ¿ÃƒÄ @âÄÄ ¸¿ƒååÄDLH¿Ã≈ÄÄ@ġ¯ÛˇÄÄ ¸ÛˇÄÄ@˛.˙
  4596. ‰àÄ˙å¿≈ÄÄ ¸ Ä˙ ¿ÅÄÄ@ġ8¸î1Ä!ÄÄ ¸1Ä33ÄÄ@˛8¸ïçc8EPÄPDÄÄ ¸PÄTUÄÄ@˛8¸ÊSÑìˇ3 3∏fl3çsÏ"ÄÄ ¸310∏fl3çsÏ03ÄÄ@˛6˙ñQDê¿åççÔ¢SI¯LƒMÄÄ ¸D ÃçÔ¢SI¯ L ÄÄ@ġ8¸Âè#AA
  4597. µ¨"SIàD@AEˇˇÄ ¸A
  4598. µ¨"SIàQˇˇÄ@˛2ˆ»Ã
  4599. úœ£çI¯ƒÕÄ ¸@å»
  4600. úœ£çI¯ LÅÄ@ġ2¯00˛˝23Ä ¸ ˛˝03Ä@˛3¯A˛˛DAEÄ ¸@A˛˝PQÄ@˛9˛ Å˛˛!ÉÄ ¸#˛˝! É@˛8¸ ƒ¿å¿Ã @ »ÅøÄ ¸ƒÄ¿àÃÃÄ¿»¿…ø@ġúo±Δª∂`ˇ‡¸ˇ¿˛7˛F˜·)•|ÄåÄ à 忿L¿ÅüÄ˙åLH ¿ ¿àƒÃ ü˝Äˇ8Z÷!)•D–1 010 0ÅÄ˙#030##1Å˛˛7Ng·Δ•º`T@TPATPĢDUADQAIJ˛5˝˝000 00201Ģ003003IJ˛2˚˝LLƒ @¿Ã Ñ AĢ»LLÃÑÃååà ÖĽġ5˝˝DPTDA@TPĢPTUETUIJ˛6˛@B@ƒ¿ÑH ÃHÄ¿¿» Ģ Ã@¿ÃLÃåÑÃH≈Ľġ7@B@Ä003Ģ003!#001IJ˛!'3≥L‹˚ì ‡ÛˇÄ˘ÛˇÄ˛˛!$ g”&NW†?ÛˇÄ˘ÛˇÄ˛˛˛$ dSvT ”ġ
  4601. $≤cÃÓ솑˛˛˚@”ġ˚@‘˛Ú‡Ä¿P ¯˛Úê ÄÄê¯˛ñ|ÿfôπÕ¿Ò˛Δiõú‹¯ÄˇÚÔ2ºO¶L” ÒüÑ˙dÕ2˘˛ò2†H¶4” Ò"òÑäcM2¯ÄˇÚÁ,úGô‹Õ Ò"üÑyùÓ˘˛    À˛    À˛»Äˇ Œ˛ ˛EÕġ PŒ˛ @P!÷˛ B    !÷˛˛
  4602. @    eçflπa”¿÷ġ AˆRhÂÒ4ß÷˛˛
  4603. @    ÜQ´eÅ4¢Ä÷ġb    uéÌ˘q”@◊˛ @Œ˛ Œ˛»Äˇ    À˛»Äˇ Œ˛ EŒ˛cÄÇ @ÿ˛˛ LÄÇ @◊ġTPgfò›Û¶3Xÿ˛˛ Lê&öoL‡◊ġò<@Ä€@Ä€∑:˜CÍhLPÿ˛Ad«òÓ˚ß3»ÿ˛ @Œ˛ ˛LPÕġ Œ˛»Äˇ    À˛ Œ˛ b0Œ˛ ˛@ŒÄˇ@œ˛˛Hê    ôÉsôĔġ
  4604. @?«»Á¿‘˛    @    "Àb”˛
  4605. b0    √q›¿‘˛˛@˛@—ġ@˛@“˛˛˛@—ġ    À˛    À˛    À˛»Äˇ    À˛»Äˇ    À˛ U˛ 3˛≈≈≈≈≈≈≈≈≈≈≈$˛"ÄÄÜ Ù° ¸@˛A †È%˛#¡ÅYdÄ£ ˝
  4606. @A †È%˛#¡Ç0ÄBĢŠ˝
  4607. @A †È%˛"ä¢Ç0Ä"¯B@Åa«ù#ɺú^súyá&Ë%˛"ä¢Ç1Ä#ÂF@Åí$c$ABÇ"abâ"E"òX®Ë%˛"Rî≤.Ä":@¡‰a'¡BÇ>a@9E>òP0Ë%˛"RîÇ Ä"@A$a$B Ç a@…2E òP(Ë%˛"RîÅQ"D@Ada$AB    Ç"aBô&E"òP§Ë%˛""àÄé"Ë8@!î_#źB^<eôyè"Ë
  4608. ¯Ä”
  4609. ¯êÄ”    ¯p“˛ @˛  ˝ÄÄ˙ÇHÄÄÊ˛  0`˝¡Ä˚¬H¡ÄÊ˛  0`˝¡Ä˚¢H¡ÄÊ#˛#‹Ô:DwO<(ß=œ ¢úxs„èqœ8 ¢H¢ÄÊ#˛"(êΔEäP¢    (®¢0í ¢¢Då$Hä(ê íH¢ÄÊ#˛"(ê¬EP¢    %/¢0ë@îéD<'»ãËê äHîÄÊ#˛"(ê¬EP¢    %("0ë@î≤DÃ$äê@äHîÄÊ#˛"(ê¬M
  4610. P¢    %(¢0ë@î¶DúdHä(ê@ÜHîÄÊ#˛",è>4ÛO" "'"/ÄàôDg£àâ»òÄÇHàÄÊ
  4611. ÔÄ˝ › ÔIJ@› ˝¿›˛pIJ
  4612.  Äp!¿€˛$à˚    Äà" €ò<Ä¿€Ä¿€˜:7˛ Dà˚    Äàb €˛@,é8pàÆ醠≥ƒ˜q`fi˛$x02±DÄU1ë1 ¿Ã$ä #"âêfi˛$D"†U0ü      å$ä<!>˘fi˛~E"†dU0ê Ù å$ä! Åfi˛E"°M"0ë$ å$äB!"âfi˛8<û2"/é #¿Ûƒã<q‡fi˚ ˚ ˛Ä¸›˚ ˚ ˛Ä¸›˚ ˜Ä¸›˚ ˜Ä¸›≈≈≈≈≈≈≈≈≈≈≈˛ÄÄ˚Ä’˛ Ä@˛Ä’˛
  4613. Ä ˛Ä’˛
  4614. ,Xúèr»π«û÷˛2d¢Hã(í$ëb÷˛"DæHä(ì‰ë@÷˛"D†(Hä(íë@÷˛!"D¢HHä)í$ëB÷˛ ºxúáàãΔôƒ@ë<÷˝ @˝˛@‘˝ @˝˛@‘ ˝ @˝–˛> C˛*–˛!D˛( ‘˛!H˛( ‘˛ !PDÛ¿)›Œwé’˛ >hDà@)    (H’˛  HDàÄ)…(H’˛  DDâ))(H’˛  BLä)4)(H’˛   C4è¿(”Õ ∑à’≈≈≈ ˛"ĸ‡—˛"ÄÄ(—˛"ÄÄD—˛"ë‹Áx‡D—˛"ë ëÑÄ`D—˛"ë<êrÑÄD—˛"ëëíÑÇD—˛"ìBë2ÑÇ(—˛"ç<–ÀxÅ‚—≈≈≈≈≈≈≈≈≈ò<¿€¿€7:w≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<€€w:á≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@€@€á:«≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@Ä€@Ä€«:≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<Ä¿€Ä¿€:G≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<¿€¿€G:á≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@€@€á:«≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@Ä€@Ä€«:≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<Ä¿€Ä¿€:G≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<¿€¿€G:á≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<€€á:ó≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@€@€á:«≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@Ä€@Ä€«:≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<Ä¿€Ä¿€:G≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<¿€¿€G:á≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@€@€á:«≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@Ä€@Ä€«:≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<Ä¿€Ä¿€:G≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<¿€¿€G:á≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<€€á:ó≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ˇ“@ˇ ˇˇˇˇ@
  4615. ˇ·ˇ‚7^
  4616. 4*\¯, Palatino&e.3+l"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@lMemory4⁄*˙¯
  4617. (‡*42    )BMemory Blocks4^*¿¯
  4618. °dONLNd\lhr(elY@Ä°dONLNd\rh¡)ou can allocate a rÜ@°dONLNd\¡hı)OBelocatable block of memory by calling the Memory Manager function ,
  4619. Courier.°dONLNdVilu¢(rl    NewHandle°dONLNd_i¢u√)6. The Vd@°dONLNdfi¬u€) >enn Diagrammer application uses the following line of code to .°dONLNd§vlLJ(lallocate a new document r≥Ä°dONLNdΩv‡ÇÚ)tecor'‡°dONLNd¡vÛÇV)d each time the user cr™@°dONLNdÿvVÇ‚)ceates a new document window:.°dONLNdıçlô»(ñl:myHandle := MyDocRecHnd(NewHandleClear(sizeof(MyDocRec)));°dONLNd0•l±~*HerR`°dONLNd3•~±à)e, R`°dONLNd6•à±∏)
  4620. myHandleR`°dONLNd>•∏±Ê)0  is of type R`°dONLNdJ•Ê±(). MyDocRecHndR`°dONLNdU•(±A)B. The R`°dONLNd[•A±ï)NewHandleClearR`°dONLNdi•ï±Ù)T function is a variant °dONLNdÄ≤læw(ªlof °dONLNdÉ≤wæ≠)     NewHandle°dONLNdå≤≠æw)60 that clears all bytes in the new block to 0. (Tï°dONLNdº≤væ‚)…o see this line of code in .°dONLNd◊ølÀ¨(»lcontext, look aꆰdONLNdÊø¨À±)@t S°dONLNdËø≤À)Listing 6-6 on page °dONLNd¸ø    À)W1à`°dONLNd˝øÀ)17à`°dONLNdˇøÀ)
  4621. .`°dONLNdøÀ))°dONLNd—l›U(⁄l2Whenever possible, you should allocate memory in rq °dONLNd4—U›‰)È"elocatable blocks. This gives the °dONLNdVfilÍÿ(ÁlMemory Manager the grÕ†°dONLNdkfiÿÍ˚)l    eatest frªÄ°dONLNdtfi˚Í:)# eedom when r<`°dONLNdÄfi;ÍÛ)@*earranging the blocks in your application °dONLNd™Îl˜ó(Ùl
  4622. heap to cr
  4623. @°dONLNd¥Îò˜ˆ),eate a new block of fr°dONLNd Îˆ˜')^    ee memoryy`°dONLNd”Î&˜í)0. In some cases, howeverπ‡°dONLNdÎÎ혟)l, you may be forà`°dONLNd˚Î⁄˜˜)Hced to °dONLNd¯l¨(lallocate a nonr¿°dONLNd¯≠&)Aelocatable block of memoryƇ°dONLNd+¯%Ü)x. When you call the W∏¿°dONLNd@¯Üˆ)aindow Manager function .°dONLNdWl¢(l    NewWindowï°dONLNd`°˛)5, for example, the W`°dONLNdt˛°)]#indow Manager internally calls the `°dONLNdó°≈)£NewPtr`°dONLNdù≈¯)$ function to .°dONLNd™l¬(lallocate a new nonrë¿°dONLNdΩ¬ç)V0elocatable block in your application partition. ‹‡°dONLNdÌçì)ÀYù`°dONLNdÓì÷)ou need to exerS °dONLNd˝◊È)Dcise °dONLNdl+y((lcarµ@°dONLNdy+¡)e when calling TŇ°dONLNd¡+Â)Hoolbox r¿°dONLNdÂ+Ì)$>outines that allocate such blocks, lest your application heap °dONLNd[,l8Â(5lbecome overly fragmented.°dONLNdu>lJå*Using r °dONLNd|>çJn)!.elocatable blocks makes the Memory Manager mor9Ä°dONLNd™>nJ})·e efs°dONLNdÆ>}JÉ)fi¿°dONLNd∞>ÉJ‘)cient at managing °dONLNd¬KlW+(Tl,available space, but it does carry some overÄ°dONLNdÓK,WF)¿head. t‡°dONLNdÙKFW—)As you have seen, the Memory °dONLNdXldê(al@Manager must allocate extra memory to hold master pointers for rø†°dONLNdQXêdË(aêelocatable blocks. It °dONLNdgelqu(nlgr‘ °dONLNdieuq)    $oups these master pointers into nonrø`°dONLNdçeqÑ)¢elocatable blocks. For larô†°dONLNdßeÑqî)mge r7`°dONLNd´eïq˜)elocatable blocks, this °dONLNd√rl~|({l@extra space is negligible, but if you allocate many very small rö °dONLNdr|~Ô({|elocatable blocks, the cost °dONLNdlãÔ(àlcan be considerable. For this rˆ`°dONLNd>Ôãµ)É-eason, you should avoid allocating a very larfl`°dONLNdkµãÚ)Δge number of °dONLNdxålòQ(ïl7handles to small blocks; instead, allocate a single larØ@°dONLNdØåQò‰)Â#ge block and use it as an array to °dONLNd“ôl•‘(¢lhold the data you need.°dONLNdÍ´l∑6*.As you have seen, a heap block can be either rN¿°dONLNd´7∑Ü)Àelocatable or nonr߇°dONLNd*´Ü∑ )Oelocatable. The °dONLNd:∏lƒfl(¡ldesignation of a block as rç °dONLNdU∏flƒ.)selocatable or nonrÊ@°dONLNdg∏.ƒ™)Oelocatable is a permanent pr'†°dONLNdÉ∏´ƒÈ)}operty of that °dONLNdí≈l—ñ(Œl block. If r\@°dONLNdù≈ñ—˜)*Telocatable, a block can be either locked or unlocked; if it’s unlocked, a block can °dONLNdÒ“lfi§(€lbe either pur!Ä°dONLNd˛“•fiÎ)9geable or unpur¬¿°dONLNd“Îfid)Fgeable. These attributes of r]`°dONLNd*“efiÚ)z!elocatable blocks can be set and °dONLNdKfllΠ(Ëlchanged as necessary˘`°dONLNd_fl…Έ)]D. The following sections explain how to lock and unlock blocks, and °dONLNd£Ïl¯‹(ılhow to mark them as purh °dONLNd∫Ï‹¯")pgeable or unpur    `°dONLNd…Ï#¯B)Ggeable.
  4624. *$¯4*$¯ l¯
  4625. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd—ln(l(Locking and Unlocking Relocatable Blocksˇˇˇˇˇˇ€r(2
  4626. °dONLNd˙$l0§(-l OccasionallyÏ¿°dONLNd    $£0˚)7, you might need a rù °dONLNd    $¸0ÿ)Y2elocatable block of memory to stay in one place. T≤¿°dONLNd    L$◊0fi)€o .°dONLNd    N1l=v(:lprR`°dONLNd    P1v=ª)
  4627. event a block fr$¿°dONLNd    `1ª=)Eom moving, you can $¿°dONLNd    s1=&)Xlock$¿°dONLNd    w1&=`) it, using the $¿°dONLNd    Ü1`=~):HLock$¿°dONLNd    ã1~=ä) pr˜ °dONLNd    é1â=¶) ocedur…Ä°dONLNd    î1¶=⁄) e. Once you °dONLNd    †>lJ&(Gl)have locked a block, it won’t move. Later¬†°dONLNd    …>%JM)π
  4628. , you can ¬†°dONLNd    ”>MJj)(unlock¬†°dONLNd    Ÿ>jJ§) it, using the ¬†°dONLNd    Ë>§JŒ):HUnlock¬†°dONLNd    Ô>ŒJ–)* .°dONLNd    KlWu(TlprG °dONLNd    ÚKvWî)
  4629. ocedurfi`°dONLNd    ¯KîW)e, allowing it to move again.°dONLNd
  4630. ]liÙ(fl In general, you need to lock a r‰‡°dONLNd
  4631. 6]Ùim)àelocatable block only if therzÄ°dONLNd
  4632. S]niÛ)ze is some danger that it might °dONLNd
  4633. rjlv (sl#be moved during the time that you rQ`°dONLNd
  4634. ïjvŸ)°0ead or write the data in that block. This might °dONLNd
  4635. ≈wlɈ(Äl happen, for instance, if you derc`°dONLNd
  4636. ÂwˆÉ)äeferÄ°dONLNd
  4637. ÈwÉÒ)7ence a handle to obtain a pointer to the data and (for °dONLNd  Ñlê}(çlincro°dONLNd $Ñ}êg)7eased speed) use the pointer within a loop that calls r3†°dONLNd [Ñhê÷)Îoutines that might cause °dONLNd tëlù†(ölDmemory to be moved. If, within the loop, the block whose data you arŒ‡°dONLNd ∏ë†ùË(ö†e accessing is in °dONLNd  ûl™Ã(ßlTfact moved, then the pointer no longer points to that data; this pointer is said to }†°dONLNd ûÕ™Ó(ßÕdangle.ˇ>z@ˇ ˇˇˇˇ@
  4638. ˇ·ˇ‚7^
  4639. 4H\, Palatino&e.3+ä"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@äMemory4⁄ä˙(‡äMemory Blocks
  4640. (‡ 43
  4641. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  4642. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  4643.  
  4644.  
  4645.  
  4646.  
  4647.  
  4648. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  4649. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  4650. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  4651.  
  4652.  
  4653.  
  4654.  
  4655.  
  4656. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜ ˇˇ˛ˇˇ ˛ˇˇˇ     ˇˇˇˇ
  4657. ˇ˝ˇ ˇ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  4658. 4€4—?òÄ
  4659. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  4660. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  4661.  
  4662.  
  4663.  
  4664.  
  4665.  
  4666. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  4667. ˛ˇˇˇˇ
  4668. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˙ˇˇ˛˝ˇ˛˙ˇˇ˙ˇˇ˛˝ˇ˛˜˜˝˛ˇ˛
  4669. ˛ˇ˛ˇˇ
  4670. ˛ˇ˛ˇˇ˝˛ˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˚ˇˇˇ    ˇˇˇ˝ˇˇ˚˝ˇˇ˝˚ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\äh (eäUsing locked r‘¿°dONLNd\ hR)@elocatable blocks can, howeverX†°dONLNd,\Rh )à', hinder the Memory Manager as much as °dONLNdSiäu∫(rä
  4671. using nonrj@°dONLNd]i∫uÔ)0Celocatable blocks. The Memory Manager can’t move locked blocks. In °dONLNd†väÇe(ä/addition, except when you allocate memory and r.¿°dONLNdœvfÇÇ)‹esize r,`°dONLNd÷vÇÇ)!elocatable blocks, it can’t move °dONLNd˜Éäèç(åärE°dONLNd¯Ééè‰)elocatable blocks ar?†°dONLNd ɉè!)Vound locked r±°dONLNdÉ!èÌ)=0elocatable blocks (just as it can’t move them ar˙Ä°dONLNdIÉÌè)Ãound °dONLNdNêäúü(ôänonr]@°dONLNdRêüú)Selocatable blocks). Thus, locking a block in the middle of the heap for long period€@°dONLNd•êú (ôs °dONLNdßùä©é(¶äc@°dONLNd®ù驨)an incr0†°dONLNdØù≠©)ease heap fragmentation.°dONLNd»ØäªÑ(∏ä6Locking and unlocking blocks every time you want to pr‡@°dONLNd˛ØѪ«)˙event a block fr´@°dONLNdØ»ª)Dom moving can °dONLNdºä»µ(≈ä    become tr‹°dONLNd%ºµ»)+oublesome. Fortunately\@°dONLNd;º»÷)h&, the Memory Manager moves unlocked, r¨@°dONLNdaº÷»)π elocatable °dONLNdl…ä’(“äblocks only at well-defiZ°dONLNdÑ…Ò’)gned, pr◊‡°dONLNdã…’£)#edictable times. In general, each rÊ °dONLNdÆ…£’)ìoutine description in °dONLNdƒ÷ä‚œ(fläInside Macintoshb°dONLNd‘÷–‚8)F indicates whether the r=Ä°dONLNdÏ÷8‚©)houtine could move or pur`†°dONLNd÷©‚€)q    ge memoryÜÄ°dONLNd÷⁄‚    )1 . If you do °dONLNd„äÔË(Ïänot call any of those rI°dONLNd0„ÈÔé)_'outines in a section of code, you can rëÄ°dONLNdW„éÔÊ)•ely on all blocks to r    °dONLNdm„ÁÔ)Yemain °dONLNdsä¸'(˘ä$stationary while that code executes.
  4672. !H(4"H( #ä#
  4673. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdòä!õ*$+Purging and Reallocating Relocatable Blocksˇˇˇˇˇˇ€r(2
  4674. °dONLNdƒ(ä4fi(1äOne advantage of r3¿°dONLNd÷(fl4µ)U2elocatable blocks is that you can use them to stor„ °dONLNd(µ4)÷e information that °dONLNd5äA©(>ä=you would like to keep in memory to make your application mor¥`°dONLNdX5©A∏(>©e eḟ°dONLNd\5∏Aæ)fi˙†°dONLNd^5æA)cient, but that you °dONLNdrBäNß(Kädon’t r1@°dONLNdyB®NÜ)0eally need if available memory space becomes low`°dONLNd©BÜN)fi . For example, your application °dONLNd…Oä[p(Xä6might, at the beginning of its execution, load user prJÄ°dONLNdˇOq[Å)Áeferˆ†°dONLNdOÅ[¢)ences fr°`°dONLNd O£[≈)"om a pr≤°dONLNdO≈[’)"efer^ °dONLNdO÷[ˆ)ences fi¸¿°dONLNdOˆ[) le into °dONLNd&\ähï(eäa r≈°dONLNd)\ïh‡) elocatable block. fl@°dONLNd;\‡h?)KAs long as the block rÊ °dONLNdQ\?hë)_emains in memoryÅ`°dONLNda\ëh)R, your application can access °dONLNdiäu»(räinformation fr‘@°dONLNdçi»uÛ)>    om the pr¬@°dONLNdñiÛu)+efern`°dONLNdöiu$)ences fi°dONLNd¢i%u~)!le without actually r/¿°dONLNd∑i~u¿)Yeopening the fi?°dONLNdΔi¿uı)B le. However}†°dONLNd—iıu˙)5, °dONLNd”väÇç(ärE°dONLNd‘véÇ–)eopening the fiT@°dONLNd„v–lj)Ble prM`°dONLNdËv‰Ç)Aobably wouldn’t take enough time to justify keeping the block in °dONLNd)Éäè(åämemory if memory space werφ°dONLNdCÉè&)Ñe scar®Ä°dONLNdIÉ'è2)ce.°dONLNdMïä°«(ûäBy making a r‡°dONLNdZï»°)>elocatable block Ä°dONLNdkï°A)I
  4675. purgeable,Æ`°dONLNduïA°Á)0# you allow the Memory Manager to fr!†°dONLNdòïË°)ßee the °dONLNdü¢äÆ    (´äspace it occupies if necessaryc °dONLNdΩ¢    Æo). If you later want to prr°dONLNd÷¢oÆı)fohibit the Memory Manager frÊ°dONLNdÚ¢ıÆ)Üom °dONLNdıØäªë(∏äfrò‡°dONLNd˜Øëª)eeing the space occupied by a r‘ °dONLNdت–)â)elocatable block, you can make the block      °dONLNd?Ø—ª)∑ unpurgeable.⁄Ä°dONLNdKت)< .°dONLNdLºä»ë(≈äYï°dONLNdMºê»œ)ou can use the ,
  4676. Courierï°dONLNd\ºœ»Û)?HPurgeï°dONLNdbºÛ»)$ and ï°dONLNdgº»8)HNoPurgeï°dONLNdoº8»D)0 prg`°dONLNdrºD»a) ocedur9¿°dONLNdxºa»)$es to change back and forth between .°dONLNdú…ä’“(“äthese two states.
  4677. „HÒ4‰HÒ°dONLNdƉäÏ©*IMPORTÄ°dONLNd¥‰©Ïπ)ANT
  4678. ˇ·ˇ‚7^
  4679. .°dONLNd∏Ôä˚í(¯äAÛ`°dONLNdπÔë˚«) block you cr≈¿°dONLNdΔÔ«˚ )6eate by calling ≈¿°dONLNd÷Ô ˚B)E    NewHandle≈¿°dONLNdflÔB˚∂)6 is initially unlocked and .°dONLNd˙˚ä•(äunpur&¿°dONLNdˇ˚¶«)geable. Z¿°dONLNd˚«‡)!As a r$°dONLNd˚·À)5esult, you don’t have to worry about the block being °dONLNdBäô(äpurN@°dONLNdEö4)!ged unless you make the block purê@°dONLNdf4S)ögeable.,Zapf Dingbats¢†°dONLNdv
  4680. X^)$s
  4681. °dONLNdxä$›(!äOnce you make a rd†°dONLNdâ›$5)Selocatable block pur+Ä°dONLNdù6$)Y1geable, you should subsequently check handles to °dONLNdŒ%ä1œ(.äthat block beforö†°dONLNdfi%œ1k)E%e using them if you call any of the rw‡°dONLNd    %k1Ù)úoutines that could move or purÆ °dONLNd    !%Ù1)âge .°dONLNd    $2ä>Æ(;ämemoryd@°dONLNd    *2≠>V)#). If a handle’s master pointer is set to d@°dONLNd    S2V>h)©NILd@°dONLNd    V2h>˝) , then the Operating System has .°dONLNd    v?äKô(HäpurN@°dONLNd    y?öK‹)ged its block. TE °dONLNd    â?‹Kœ)B7o use the information formerly in the block, you must rL °dONLNd    ¿?œK)Ûeallocate space .°dONLNd    –LäX∂(Uä for it (perR`°dONLNd    €L∂X),haps by calling the R`°dONLNd    ÔLXp)ZReallocateHandleR`°dONLNd    ˇLpX|)` pr$¿°dONLNd
  4682. L|Xô) ocedur˜ °dONLNd
  4683. LòX—)e) and then r…Ä°dONLNd
  4684. L—X)9econstrµÄ°dONLNd
  4685. LX)uct its .°dONLNd
  4686. $Yäe(bäcontents (for example, by ry‡°dONLNd
  4687. ?Ye)verÄ°dONLNd
  4688. AY    eD)    eading the pr€@°dONLNd
  4689. NYCeS):eferá`°dONLNd
  4690. RYTet)ences fi&°dONLNd
  4691. ZYueÖ)!le). +‡°dONLNd
  4692. _YÖeù)Figur˛†°dONLNd
  4693. dYúe∞)e 2-9ú °dONLNd
  4694. iY±eÒ) illustrates the °dONLNd
  4695. zfärô(oäpurN@°dONLNd
  4696. }för«)
  4697. ging and rÿ`°dONLNd
  4698. áf«r)-eallocating of a rÚ °dONLNd
  4699. ôfrº)I'elocatable block. When the block is purç°dONLNd
  4700. ¿fΩrˇ)≠ged, its master ˇˇªh.°dONLNd
  4701. –säœ(|äpointer is set to ˇˇ28m†°dONLNd
  4702. ‚s–‚)FNILˇˇªhm†°dONLNd
  4703. Âs‚). When it is r-†°dONLNd
  4704. Ûsó):eallocated, the handle corr28°dONLNd só≥){ectly r¿°dONLNd s≥≈)eferí`°dONLNd s≈)ences a new block, .°dONLNd ,Ääå(âäbut that block’s contents ari@°dONLNd HÄåI)we initially undefi*@°dONLNd ZÄJå])Ined.ˇTN@ˇ ˇˇˇˇ@
  4705. ˇ·ˇ‚7^
  4706. 4*\¯, Palatino&e.3+l"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@lMemory4⁄*˙¯
  4707. (‡*44    )BData ÿ )Tÿ)ypes4^*¿¯
  4708. g*w¯4g*w¯"h*]
  4709. ˇ·ˇ‚7^°dONLNd\lgñ(dl
  4710. Figure 2-9°dONLNd \Æg\)B,Purging and reallocating a relocatable block
  4711. ®*¬¯4®*¬¯
  4712. “*⁄¯4”*⁄¯ ‘*‘˛
  4713. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd8ø*“Z(Õ*Data TRi°dONLNd>øY“z)/ypesˇˇˇˇˇˇU˛(Õ2
  4714. °dONLNdC„lÔ!(Ïl)This section describes some of the generaY °dONLNdl„"Ô.)∂l-póÄ°dONLNdo„.Ôx) urpose data type
  4715. ‡°dONLNd„yÔñ)Ks that t‡`°dONLNdá„ñÔı)he Memory Manager °dONLNdôl¸|(˘ldefir °dONLNdù}¸Ê)nes. These data types ar⇰dONLNdµʸ)i
  4716. e used thrU¿°dONLNdø¸Å),oughout the Macintosh TÍÄ°dONLNd÷ĸ„)noolbox and Operating °dONLNdνl    é(lSystem.
  4717. .*5¯4/*5¯ 0l0¯
  4718. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdÛl.Ô*$Pointers and Handlesˇˇˇˇˇˇ€r(*2
  4719. °dONLNd5lAõ(>lAAs you’ve seen, the Memory Manager uses pointers and handles to r±Ä°dONLNdI5õA´(>õefer]†°dONLNdM5¨A¬)ence .°dONLNdRBlN(KlnonrR`°dONLNdVBN»)elocatable and r$¿°dONLNdfB»N)Ielocatable blocks, r˜ °dONLNdzBNS)V espectively€`°dONLNdÖBRNû)4. The data types ,
  4720. Courier€`°dONLNdñBûN∞)LPtr€`°dONLNdôB∞N≈) and €`°dONLNdûB≈NÈ)Handle€`°dONLNd§BÈNÎ)$ .°dONLNd•Ol[|(Xldefir °dONLNd©O}[)#ne pointers and handles as follows:.°dONLNdÕflrÑ(olTYPE°dONLNd”t~Ä¿+ SignedByte °dONLNd‚tΔÄ)H = –128..127;°dONLNdÙt2Ä™)l{any byte in memory}°dONLNd
  4721. Ç~éñ(ã~Byte°dONLNdÇΔé¸)H    = 0..255;°dONLNd!Ç2éû)l{an unsigned byte}°dONLNd5ê~úê(ô~Ptr°dONLNd<êΔú)H= ^SignedByte;°dONLNdPê2úŒ)l{address of a signed byte}°dONLNdlû~™¢(ß~Handle°dONLNdvûΔ™)H= ^Ptr;°dONLNdÉû2™‡)l{address of a master pointer}
  4722. x*é¯4w)x*ò:"Õ"Õx*õ«Àˇ¸Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛˙ˇ
  4723. 0AàATC›ˇ˛˙ˇ
  4724. ÄÑ ›ˇ˛˙ˇ˛ Ä˛›ˇ˛˙ˇ
  4725. B@H›ˇ˛˙ˇ
  4726. Ñ "à à! ›ˇ˛˙ˇ    ˝Ä›ˇ˛˙ˇ
  4727. ÄB ›ˇ˛˙ˇ
  4728. @A" `›ˇ˛˙ˇ$˝›ˇ˛˙ˇ
  4729. Ä @H     ›ˇ˛˙ˇ@IJÑ#›ˇ˛˙ˇ
  4730. @ @¢@ ›ˇ˛˙ˇê˝'›ˇ˛˙ˇ
  4731. P ›ˇ˛˙ˇ
  4732. Ä@P@›ˇ˛˙ˇ
  4733. îÄ›ˇ˛˙ˇ˝C›ˇ˛˙ˇ
  4734. @B@`@›ˇ˛˙ˇA@˛ G›ˇ˛˙ˇ
  4735. ›ˇ˛˙ˇ
  4736. ÄP Ä@›ˇ˛˙ˇ˝ @›ˇ˛˙ˇ
  4737. B@Ä@Äêê#›ˇ˛˙ˇ
  4738. Ä É›ˇ˛˙ˇ˚Ç ›ˇ˛˙ˇ
  4739. (@êT›ˇ˛˙ˇIJ›ˇ˛˙ˇ
  4740. Ä@Ćà ›ˇ˛˙ˇ
  4741.   @É›ˇ˛˙ˇ
  4742.  AD›ˇ˛˙ˇ
  4743. Ñ@    HÄC›ˇ˛˙ˇ
  4744. ÄÄ ›ˇ˛˙ˇ˝Ä˛Ä›ˇ˛˙ˇ
  4745.  "›ˇ˛%˙ˇ
  4746. @@A #Ïˇ ¯ÅP@ _˛ˇ˛%˙ˇ
  4747. ÅÏˇ ¯ ˛ˇ˛%˙ˇ
  4748. Ä@ Ïˇ ˘!@˛ˇ˛%˙ˇ
  4749. ÑD DCÏˇ ¯ à@ê˛ˇ˛%˙ˇ$@ ˛ Ïˇ¯â@˛$@˛ˇ˛%˙ˇí@à˛'Ïˇ¯(! ˛ü˛ˇ˛%˙ˇ
  4750.          Ïˇ ¯ Ä$˛ˇ˛⁄ˇ ˙Ä@Å_˛ˇ˛⁄ˇ ¯ä†"IJˇ˛⁄ˇ ¯$ ˛ˇ˛⁄ˇ¯Ä@˝_˛ˇ˛⁄ˇ ¯ÄÄ
  4751.  ˛ˇ˛⁄ˇ ˙    @DÄÑE˛ˇ˛⁄ˇ¯ Ä Å˛ ˛ˇ˛⁄ˇ˘˙IJˇ˛⁄ˇ ¯ÑÄ !˛ˇ˛⁄ˇ˙  Ä @˛à_˛ˇ˛⁄ˇ ¯@Äê˛ˇ˛⁄ˇ¯Hà˚""˛ˇ˛⁄ˇ¯ê!˛?˛ˇ˛⁄ˇ ¸ ëí˛ˇ˛⁄ˇ ˘@@Ä@˛ˇ˛⁄ˇ ¯(ü˛ˇ˛⁄ˇ¯ ˛ ˛ˇ˛⁄ˇ ¯Ä@@_˛ˇ˛⁄ˇ ¯
  4752. ÄIJˇ˛⁄ˇ ˘$ H@˛ˇ˛⁄ˇ ¯ÄDêÄ_˛ˇ˛⁄ˇ ¯ÄÄÇ  ˛ˇ˛⁄ˇ ¯@D$˛ˇ˛⁄ˇ ¯ ÄÅ ˛ˇ˛⁄ˇ ˙  Å˛ˇ˛⁄ˇ¯©B˛†2A˛ˇ˛⁄ˇ ¯ "˛ˇ˛⁄ˇ¯¸Ç˝˛ˇ˛⁄ˇ ˙    HÄê
  4753.  Ñb˛ˇ˛⁄ˇ ¯@IJˇ˛⁄ˇ ¯ Ñ _˛ˇ˛⁄ˇ ˘@HIJˇ˛⁄ˇ ¯Ä @Ä ˛ˇ˛⁄ˇ ¯Ä!  ˛ˇ˛⁄ˇ ˘ Äà˛ˇ˛Àˇ˛3˙ˇ
  4754. E@PTTC¸ˇ
  4755. ¿TQPPE¸ˇ ¯PTT@˛ˇ˛3˙ˇ
  4756. û¿ ÄÃÃÃG¸ˇ
  4757. ¿DLÄ ¿ @¸ˇ ¸Ä åÃå@¿åfl˛ˇ˛3˙ˇ
  4758. 0## #3¸ˇ
  4759. ¿ 332¸ˇ ˚3! "?˛ˇ˛3˙ˇ
  4760. TPPDTTW¸ˇ
  4761. ƒTA¸ˇ ¯UAD@DE_˛ˇ˛3˙ˇ
  4762. 000# 013¸ˇ
  4763. Ú023#¸ˇ ˘! "2˛ˇ˛3˙ˇ
  4764. @»LLÃåÄC¸ˇ
  4765. ÃL@H ¿L¸ˇ ¸» Ä¿ ăƒ˛ˇ˛3˙ˇ
  4766. DQTTPQDAS¸ˇ
  4767. ƒAPUQ¸ˇ ˘TDA@D˛ˇ˛3˙ˇ
  4768. ÿà »ƒ√¸ˇ
  4769. »DH»¿ÑÄàå¸ˇ ¯åà à ¿Ñƒ_˛ˇ˛3˙ˇ
  4770. " 003#¸ˇ
  4771. "10!#3¸ˇ ˘2230?˛ˇ˛3˙ˇ
  4772. @QEQEP¸ˇ
  4773. ‘UPT@@QTQ¸ˇ ¯TT_˛ˇ˛3˙ˇ
  4774. 03"1!0¸ˇ
  4775. –0 210¸ˇ ˘030?˛ˇ˛Àˇ˛3˙ˇ
  4776. TPDUUW¸ˇ
  4777. —UTQA¸ˇ ˝AEETA_˛ˇ˛3˙ˇ
  4778. ÃL à ¿¿ ƒá¸ˇ
  4779. »å@»ˇ¸Ä廸ˇ ¯@åD僃åÄÃfl˛ˇ˛3˙ˇ
  4780. 0#0!2##¸ˇ
  4781. 31 ˇ˛1¸ˇ ¯"#3˛ˇ˛3˙ˇ
  4782. EAPU@C¸ˇ
  4783. ≈U@QGˇ˝TE¸ˇ ¯EUPAD˛ˇ˛3˙ˇ
  4784.  1223#¸ˇ
  4785. —# 0ˇˇ#¸ˇ ¯12# ˛ˇ˛3˙ˇ
  4786. ¿Ä ¿Hƒ»√¸ˇ
  4787. ÿÃ@ˇ¸ÄLƒ¿¸ˇ ¯»HÃå@fl˛ˇ˛3˙ˇ
  4788. DEPAC¸ˇ
  4789. –QDQˇ¸AP¸ˇ ¯QTA@P_˛ˇ˛3˙ˇ
  4790. Ã@ƒÑå»@Ä«¸ˇ
  4791. ÿ¿œˇ¸¿@øˇ ¯å ƒ H@fl˛ˇ˛3˙ˇ
  4792.  3"01¸ˇ
  4793. Ú#ˇ¸2¸ˇ ¯0200 ˛ˇ˛3˙ˇ
  4794. EDP@U@Q¸ˇ
  4795. ƒ@Eˇ¸P@¸ˇ ˝PQQT˛ˇ˛3˙ˇ
  4796. 3 0301¸ˇ
  4797. ¡ 7ˇ¸0¸ˇ ˚00132˛ˇ˛Àˇ˛3˙ˇ
  4798. DPE¸ˇ
  4799. ƒDUQ@ED¸ˇ ¯AE@P˛ˇ˛3˙ˇ
  4800. ¿L Äå ¸ˇ
  4801. ƒ åH ƒƒ¿ ¸ˇ ¯D¿Ñ¿ Ä»fl˛ˇ˛3˙ˇ
  4802. 0021¸ˇ
  4803. ¬02#¸ˇ ˚3!# #3?˛ˇ˛3˙ˇ
  4804. TT@APE¸ˇ
  4805. ≈UUTE¸ˇ ˝AEA˛ˇ˛2˙ˇ
  4806. 231 #¸ˇ„#˝03¸ˇ ¯03##10?˛ˇ˛1˙ˇ
  4807. Ä¿ƒƒ¿Ã ¸ˇƒÑÄå¿H˛¿¸ˇ¯»H˝¿ »L˛ˇ˛3˙ˇ
  4808. @@@EEAD@¸ˇ
  4809. ¡APDQPEQ¸ˇ ˘DQTT˛ˇ˛3˙ˇ
  4810. Ãà ÿ¿ƒ¸ˇ
  4811. ÿ»L¿Ã H¸ˇ ¯Ã L¿Ä¿ÃÃ˛ˇ˛3˙ˇ
  4812. 201!3¸ˇ
  4813. –03#00¸ˇ ¯03# #˛ˇ˛3˙ˇT˛@@E¸ˇ
  4814. ƒ@UP¸ˇ ¯EU˛ˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛
  4815. ¯Õˇ˛
  4816. ˘+Õˇ˛
  4817. ¯Õˇ˛
  4818. ¸Õˇ˛
  4819. ¯ÉÕˇ˛
  4820. ¯Õˇ˛
  4821. ¯ Õˇ˛
  4822. ˙CÕˇ˛
  4823. ¯£Õˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛
  4824. ˝Õˇ˛
  4825. ¸èÕˇ˛
  4826. ˚Õˇ˛
  4827. ˘GÕˇ˛
  4828. ˘#Õˇ˛
  4829. ¸√Õˇ˛
  4830. ¯CÕˇ˛
  4831. ¯√Õˇ˛
  4832. ¯3Õˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛Àˇ˛?Àˇ˛ˇ«««««««««««««+@ê ~Ä@>˝Ä ˝˛ Ò(aò`p@ !˙Ä Ä˝    @ Ò(Rî†à@ !˙Ä Ä˝    @ Ò.*Rî†pà@èê!"Áì«É«éÉúÒ&y”«É¿Áé<Ô'ƒcâÄÚ-)Rî†|ëê>"àí(Ä$QÇ"    )"í(Ä àíQ@ë(Ç$îJÒ-)RîÆ0@ëê "àí(ʼnPÇ>y0†<í(Ňèî0Gë/Ç% Ò-)J톿@ëê "àí(Ü$PÇ!â0†ƒí(Ü à0bXë(%
  4833. Ò-)Lì @ë &àí(ÑdQÇ#)"åí(Ñ`àíQFQë(Ç$îIÒ.*Hí ¯@è  áí'ÉîNÇÂ&rR'Éêáé9.^'ƒcàÄÚ˙ ˛ÄĘÄÂ˙
  4834. @˜‰«˛ ˛˝˙(ê Ê Ä @Ä˝ 0˚ (ò`Ê Ä @Ä(˝
  4835. P˚
  4836. (î†Ê"y‹√®úË√¡Ã(‚‹c¬
  4837. Sœqn8˜
  4838. (î†Ê"Dë$h¢I" í)"í$
  4839. P(Å"âëDä    (î†Ê"Dí(†J °)Ú#
  4840. $
  4841. QËè"˘|ä®î†Ê"Dí(†J °©#
  4842.     V(±"Å@ä®í†Ê"Dë$i¢I" í…"í    îh£"âDähì Ê"DP√¶ú(¬ Là‚"b    òúûq8â(í Ê
  4843. Ò˝›
  4844. Ò ˝<›«¸˛¸ €G?˚~˝€»Ç˚Ñ$˝€HÇãè $È¿Ñ@.<0:8s¿fiHÑL@í% àX1HFDä fiGàLà E ‡d0 B|˙ fi‡àLÜ E
  4845. D0bB@Ç fiILQ° ≈ D1FÑFDä fiFãé^Ñȃ†8.9x:8s¿fi˝˚˛¸›˝˚˛¸›«««««««««««««@<˚’¿B˛’†Dz’#œ¿Äanx臫÷"(í ÄëëDä"Ä(Ä◊‚(ì‡Å    Dä>Ä(÷(íÉ    Dä Ä(÷(í DëDö"Ä(Ä◊ œ¿8axià'÷¸@‘¸@‘«‡`˛$Ä—IJ$Ä‘    ˝$Ä‘
  4846. û|$¢3ªŒa¿÷‡ë$¢I $ë’    ë$¢!!    ’àë$¢&%    ’Ië $¶Ö$dë’fë|$öx£ía’«««H     H@—    H@"—
  4847. J#;ºÊÄ“
  4848. J$íI Ä“
  4849. J"PêÄ“
  4850. J!íbPêBÄ“    JhRFIB—    Ißä9&<B—«««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««ò:"Õ"Õx*õ«L Ãˇ @Àˇ @À@À@Àˇ @Àˇ˙Ò@ÚÛ @˚˜¸@˜Ä˝˜˛ @˚˜¸@˜Ä˝˜˛ @˚˜¸@˜Ä˝˜˛ˇ˙˜¸@˜Ä˝˜˛ @˚˜¸@˜Ä˝˜˛ˇ˙˜¸@˜Ä˝˜˛#@˚¯‡˝|˜˝į˛ @˙ ˜@˝˜0˝˜˛ @˙`˜‡˝˜0˝˜˛ˇ,˘¿˛    ¸¿˝0˛ĸ`˝˝H¸ ˛.@˙IJ    ¸Ä˝`˛ĸ‡˝ ˝H¸˛ˇ2˙IJ38˛Ä˝@˛ò‹˝¿˝˝yô¿˛˛3@˚˝    §˛¸¿˛ΩڲĽ˝K˝ ˛0˛4@˚˝    D§˛˝IJ°2˛Ä˝0˝J% ˛p˛2@˚˝    ;∏˛ ˝˝ú¸˛¸`˝I›¿˛‡˛ˇ*˙ ˚ ˛˝˚˛¸@¸˝¿˛.@˚˚ ˛˝¿¸˛¸¯¸˛¿˛ˇ!˙˜˝¿¯Ä˝x¯˛ @˚˜¸@˜Ä˝˜˛@˚ˆˇ¸˜ˇÄ˝˜ˇ˛ @˚˜àã¸H˜à¿˝˜àò˛ˇ˙˜¸@˜¿˝˜˛ @˚˜¸@˜¿˝˜˛ˇ˙˜"#¸b˜"¿˝
  4851. ˜"8˛ @˚˜¸@˜¿˝˜˛ @˚˜¸@˜¿˝˜˛ @˚˜àã¸H˜à¿˝˜àò˛ˇ˙˜¸@˜¿˝˜˛ @˚˜¸@˜¿˝˜˛ˇ˙˜"#¸b˜"¿˝
  4852. ˜"8˛ @˚˜¸@˜¿˝˜˛ @˚˜¸@˜¿˝˜˛ @˚˜àã¸H˜à¿˝˜àò˛ˇ˙˜¸@˜¿˝˜˛ @˚˜¸@˜¿˝˜˛ˇ˙˜"#¸b˜"¿˝
  4853. ˜"8˛ @˚˜¸@˜¿˝˜˛ @˚˜¸@˜¿˝˜˛ @˚˜àã¸H˜à¿˝˜àò˛ˇ˙˜¸@˜¿˝˜˛ @˚˜¸@˜¿˝˜˛ˇ˙˜"#¸b˜"¿˝
  4854. ˜"8˛ @˚˜¸@˜¿˝˜˛ @˚˜¸@˜¿˝˜˛ @˚˜àã¸H˜à¿˝˜àò˛ˇ˙˜¸@˜¿˝˜˛ @˚˜¸@˜¿˝˜˛ˇ˙˜"#¸b˜"¿˝
  4855. ˜"8˛ @˚˜¸@˜¿˝˜˛ @˚˜¸@˜¿˝˜˛ @˚˜àã¸H˜à¿˝˜àò˛ˇ˙˜¸@˜¿˝˜˛ @˚˜¸@˜¿˝˜˛ˇ˙˜"#¸b˜"¿˝
  4856. ˜"8˛ @˚˜¸@˜¿˝˜˛ @˚˜¸@˜¿˝˜˛ @˚˜àã¸H˜à¿˝˜àò˛ˇ˙˜¸@˜¿˝˜˛@˚ˆˇ¸˜ˇ¿˝˜ˇ¯˛ˇ˙˜¸@˜¿˝˜˛ @˚˜¸@˜¿˝˜˛ @˚˜¸@˜¿˝˜˛.@˚˚    Ä¸@¸¿˛¿˝¸0˛˛ˇ3˙˛d
  4857. ĸ@@˛¿˝ Å@˛˛8@˚˛7jgÑˇˇ@ úéC˛ˇ˛˛ÌL„ġˇ¿ˇ6˙˛-Jt†é@BG˛¿˛©Nî¿@8@˚˛$ä†à@    d)BD˛¿˛ëBî˛@8@˚˛t
  4858. |ùΔ@$mÛ˛¿˛ÅOì∏¿@/@˚˝Ä¸@˛@˚¿˛˛˚@ˇ!˙˜@˜¿˛˜@"@˚ˆˇ˜ˇ¿˛˜ˇ¯@ˇ!˙˜"#b˜"¿˛
  4859. ˜"8@#@˚˜@˜¿˛˜@#@˚˜@˜¿˛˜@#@˚˜àãH˜à¿˛˜àò@ˇ!˙˜@˜¿˛˜@#@˚˜@˜¿˛˜@ˇ!˙˜"#b˜"¿˛
  4860. ˜"8@#@˚˜@˜¿˛˜@#@˚˜@˜¿˛˜@#@˚˜àãH˜à¿˛˜àò@ˇ!˙˜@˜¿˛˜@#@˚˜@˜¿˛˜@ˇ!˙˜"#b˜"¿˛
  4861. ˜"8@#@˚˜@˜¿˛˜@"@˚ˆˇ@˜¿˛˜@*@˚0AàATCH˜à¿˛˜àò@ˇ(˙ÄÑ @˜¿˛˜@*@˚˛ Ä˛@˜¿˛˜@ˇ(˙B@Hb˜"¿˛
  4862. ˜"8@*@˚Ñ "à à! @˜¿˛˜@)@˚    ˝ Ä@˜¿˛˜@*@˚ÄB H˜à¿˛˜àò@ˇ(˙@A" `@˜¿˛˜@)@˚$˝    @˜¿˛˜@ˇ(˙Ä @H     b˜"¿˛
  4863. ˜"8@*@˚@IJÑ#@˜¿˛˜@*@˚@ @¢@ @˜¿˛˜@)@˚ê˝'H˜à¿˛˜àò@ˇ(˙P @˜¿˛˜@*@˚Ä@P@@˜¿˛˜@ˇ(˙îÄb˜"¿˛
  4864. ˜"8@)@˚˝    C@˜¿˛˜@*@˚@B@`@@˜¿˛˜@*@˚A@˛ GH˜à¿˛˜àò@ˇ(˙@˜¿˛˜@*@˚ÄP Ä@@˜¿˛˜@ˇ'˙˝  @b˜"¿˛
  4865. ˜"8@*@˚B@Ä@Äêê#@˜¿˛˜@*@˚Ä É@˜¿˛˜@'@˚˚Ç H˜à¿˛˜àò@ˇ(˙(@êT@˜¿˛˜@*@˚IJ    @˜¿˛˜@ˇ(˙Ä@Ćà b˜"¿˛
  4866. ˜"8@*@˚  @É@˜¿˛˜@*@˚ AD@˜¿˛˜@*@˚Ñ@    HÄCH˜à¿˛˜àò@ˇ(˙ÄÄ @˜¿˛˜@)@˚˝Ä˛Ä@˜¿˛˜@ˇ(˙ "b˜"¿˛˜ˇ¯@1@˚@@A #@˜¿˛ÅP@ X@1@˚Å@˜¿˛ @1@˚Ä@ H˜à¿˛    !@@ˇ/˙ÑD DC@˜¿˛ à@ê@1@˚$@ ˛     @˜¿˛â@˛$@@ˇ/˙í@à˛'b˜"¿˛(! ˛ò@1@˚         @˜¿˛ Ä$@(@˚ıˇ¸@˜¿˛
  4867. Ä@ÅX@*@˚˜àãˇH˜à¿˛ä†"Ä@ˇ(˙˜@˜¿˛$ @)@˚˜@˜¿˛Ä@˝X@ˇ(˙˜"#b˜"¿˛ÄÄ
  4868.  @*@˚˜@˜¿˛
  4869.     @DÄÑE@*@˚˜@˜¿˛ Ä Å˛ @&@˚˜àãH˜à¿˛    ˙Ä@ˇ(˙˜@˜¿˛ÑÄ !@*@˚˜@˜¿˛
  4870.   Ä @˛àX@ˇ(˙˜"#b˜"¿˛@Äê@'@˚˜@˜¿˛Hà˚""@*@˚˜@˜¿˛ê!˛8@*@˚˜àãH˜à¿˛  ëí@ˇ(˙˜@˜¿˛    @@Ä@@*@˚˜@˜¿˛(ò@ˇ(˙˜"#b˜"¿˛ ˛  @*@˚˜@˜¿˛Ä@@X@*@˚˜@˜¿˛
  4871. ÄÄ@*@˚˜àãH˜à¿˛    $ H@@ˇ(˙˜@˜¿˛ÄDêÄX@*@˚˜@˜¿˛ÄÄÇ  @ˇ(˙˜"#b˜"¿˛@D$@*@˚˜@˜¿˛ ÄÅ @*@˚˜@˜¿˛
  4872.   Å@*@˚˜àãH˜à¿˛©B˛†2A@ˇ(˙˜@˜¿˛ "@'@˚˜@˜¿˛¸Ç˝@ˇ(˙˜"#b˜"¿˛
  4873.     HÄê
  4874.  Ñb@*@˚˜@˜¿˛@Ä@*@˚˜@˜¿˛ Ñ X@*@˚˜àãH˜à¿˛    @HÄ@ˇ(˙˜@˜¿˛Ä @Ä @*@˚˜@˜¿˛Ä!  @ˇ(˙˜"#b˜"¿˛     Äà@!@¸˘ˆˇ˜ˇ¿˛ıˇ‡@9@¸E@PTTC@TQPPE¿˛PTT@ @9@¸ û¿ ÄÃÃÃG@DLÄ ¿ @¿˛ Ä åÃå@¿åÿ0 @ˇ7˚0## #3@ 332¿˛ 3! "8 @9@¸TPPDTTWDTA¿˛UAD@DEX @ˇ7˚000# 013r023#¿˛    ! "2 @9@¸@»LLÃåÄCLL@H ¿L¿˛ » Ä¿ ăƒ @9@¸DQTTPQDASDAPUQ¿˛    TDA@D @9@¸ÿà »ƒ√HDH»¿ÑÄàå¿˛åà à ¿ÑƒX @ˇ7˚" 003#p"10!#3¿˛    22308 @9@¸@QEQEPTUPT@@QTQ¿˛TTX @ˇ7˚03"1!0P0 210¿˛    0308 @#@¸ˆˇ˜ˇ¿˛˜ˇ¯ @9@¸TPDUUWQUTQA¿˛AEETAX @;@Ñ˛ÃL à ¿¿ ƒáHå@»˛Ä廿˛@åD僃åÄÃÿ @ˇ;$ÃÄ0#0!2##p31 1¿˛"#3 @;$@Ãœ€EAPU@CEU@QC'1TE¿˛EUPAD @ˇ;$µ¯æ 1223#Q# 0Ç#¿˛12#  @;$@µ&¢¯¿Ä ¿Hƒ»√ˇ¸L¿Ã@ÇÄLƒ¿¿˛»HÃå@flˇ‡@;$@§¸^DEPACPQDQBAP¿˛QTA@PX@9@¸Ã@ƒÑå»@Ä«L¿¿…B¿@ÿ˛å ƒ H@ÿ@ˇ7˚ 3"01r#á<2¿˛0200 @9@¸EDP@U@QD@EP@¿˛PQQT@ˇ;˛3 0301A 00«Ç˛ 00132@@Ùˇˆˇ˛˛Ùˇ¿:@5›≥ÄDPEˇ˝ DDUQ@EDˇÄ˛AE@P:@    M+Ê ¿L Äå ˝ D åH ƒƒ¿ √IJD¿Ñ¿ Ä»ÿ0ˇ8    M*!Ä0021¸ B02#¿˝ 3!# #38˛8@5%ÁTT@APE¸ EUUTE¿˝ AEA˛ˇ6˝ 231 #¸c#˝03¿˝ 03##108˛4@˝  Ä¿ƒƒ¿Ã ¸DÑÄå¿H˝¿˝»H˝¿ »L˛6@¸ @@@EEAD@¸ AAPDQPEQ¿˝     DQTT˛6@¸ Ãà ÿ¿ƒ¸ L¿»L¿Ã H¿˝ à L¿Ä¿ÃÃ˛ˇ4˚ 201!3¸ P03#00¿˝ 03# #˛6@¸ÅT˛@@E¸ D@UP¿˝ EU˛ˇ˙˘ˆˇ¸˜ˇ¿˝˜ˇ¯˛@˙ˆˇ¸?˜ˇ¿˝˜ˇ¯˛@À@Àˇ!˜<˛ˆB˛ ˜(˚@¯"Ú§ÄÙ((˚ˇ$˜"oõN{ú˜؈99Óp¯1±©ôùŒ¸&@¯<ˆWâLöd˜‰¸%2iê¯/°{ÍgÕ2¸'@¯"ÜT    Löd¯ƒ%2iꯨ!BjbM2¸'@¯<uìé<z\¯|8ÒÈp¯ß°9Èù≈.¸ˇÙı @Ò¸@ı‡8ı ćÒ¸ˇ @À@À@Àˇ @Àˇ
  4875. ˛Õ
  4876. @Õ @    *Å@"Ä÷ @A@"Ä÷ˇ M1õÁL:f∞÷ @ÇüJ}Ùfi&ô¿÷ˇ QJ%î–&ò†÷ @
  4877. O1‹˜N:g∞÷
  4878. @
  4879. BÕ
  4880. @¢Õˇ
  4881. ˛Õ@Àˇ 
  4882. @˛Õ
  4883. @Õ
  4884. @ éÕˇ @Ñ ◊ @    F@Ñ ◊ˇ     "MÔ3>‰«&k◊ @ ¬S)Ùœüú◊ @B”)ƒôï©ä◊ @¬M(Û;è‰Á&{◊ˇ
  4885. 2Õ
  4886. @˛Õˇ @À@À
  4887. @˛Õˇ
  4888. Õ @¿œˇ 
  4889. "Œ@30~c0”@Á¯…Ù¯”@ä$@9î@”ˇ#∏Ós∏”@˛—ˇ˛˛—@À@À@Àˇ @Àˇ @À@À@Àˇ  UT 32ˇ«««««««««««««+@ê ~Ä@>˝Ä ˝˛ Ò(aò`p@ !˙Ä Ä˝    @ Ò(Rî†à@ !˙Ä Ä˝    @ Ò.*Rî†pà@èê!"Áì«É«éÉúÒ&y”«É¿Áé<Ô'ƒcâÄÚ-)Rî†|ëê>"àí(Ä$QÇ"    )"í(Ä àíQ@ë(Ç$îJÒ-)RîÆ0@ëê "àí(ʼnPÇ>y0†<í(Ňèî0Gë/Ç% Ò-)J톿@ëê "àí(Ü$PÇ!â0†ƒí(Ü à0bXë(%
  4890. Ò-)Lì @ë &àí(ÑdQÇ#)"åí(Ñ`àíQFQë(Ç$îIÒ.*Hí ¯@è  áí'ÉîNÇÂ&rR'Éêáé9.^'ƒcàÄÚ˙ ˛ÄĘÄÂ˙
  4891. @˜‰«˛ ˛˝˙(ê Ê Ä @Ä˝ 0˚ (ò`Ê Ä @Ä(˝
  4892. P˚
  4893. (î†Ê"y‹√®úË√¡Ã(‚‹c¬
  4894. Sœqn8˜
  4895. (î†Ê"Dë$h¢I" í)"í$
  4896. P(Å"âëDä    (î†Ê"Dí(†J °)Ú#
  4897. $
  4898. QËè"˘|ä®î†Ê"Dí(†J °©#
  4899.     V(±"Å@ä®í†Ê"Dë$i¢I" í…"í    îh£"âDähì Ê"DP√¶ú(¬ Là‚"b    òúûq8â(í Ê
  4900. Ò˝›
  4901. Ò ˝<›«¸˛¸ €G?˚~˝€»Ç˚Ñ$˝€HÇãè $È¿Ñ@.<0:8s¿fiHÑL@í% àX1HFDä fiGàLà E ‡d0 B|˙ fi‡àLÜ E
  4902. D0bB@Ç fiILQ° ≈ D1FÑFDä fiFãé^Ñȃ†8.9x:8s¿fi˝˚˛¸›˝˚˛¸›«««««««««««««@<˚’¿B˛’†Dz’#œ¿Äanx臫÷"(í ÄëëDä"Ä(Ä◊‚(ì‡Å    Dä>Ä(÷(íÉ    Dä Ä(÷(í DëDö"Ä(Ä◊ œ¿8axià'÷¸@‘¸@‘«‡`˛$Ä—IJ$Ä‘    ˝$Ä‘
  4903. û|$¢3ªŒa¿÷‡ë$¢I $ë’    ë$¢!!    ’àë$¢&%    ’Ië $¶Ö$dë’fë|$öx£ía’«««H     H@—    H@"—
  4904. J#;ºÊÄ“
  4905. J$íI Ä“
  4906. J"PêÄ“
  4907. J!íbPêBÄ“    JhRFIB—    Ißä9&<B—«««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««ò:ÕÕõ*π««««««««««««««««««««««««««««««ò:ÕÕõ*π««««««««««««««««««««««««««««««ˇ4l@ˇ ˇˇˇˇ@
  4908. ˇ·ˇ‚7^
  4909. 4H\, Palatino&e.3+ä"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@äMemory4⁄ä˙(‡äData ÿ )Tÿ)ypes
  4910. (‡ 45
  4911. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  4912. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  4913.  
  4914.  
  4915.  
  4916.  
  4917.  
  4918. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  4919. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  4920. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  4921.  
  4922.  
  4923.  
  4924.  
  4925.  
  4926. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜ ˇˇ˛ˇˇ ˛ˇˇˇ     ˇˇˇˇ
  4927. ˇ˝ˇ ˇ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  4928. 4€4—?òÄ
  4929. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  4930. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  4931.  
  4932.  
  4933.  
  4934.  
  4935.  
  4936. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  4937. ˛ˇˇˇˇ
  4938. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˙ˇˇ˛˝ˇ˛˙ˇˇ˙ˇˇ˛˝ˇ˛˜˜˝˛ˇ˛
  4939. ˛ˇ˛ˇˇ
  4940. ˛ˇ˛ˇˇ˝˛ˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˚ˇˇˇ    ˇˇˇ˝ˇˇ˚˝ˇˇ˝˚ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿.°dONLNd\ähû(eäThe ,
  4941. Courier°dONLNd\ûh⁄)
  4942. SignedByte°dONLNd\⁄h∏)<1 data type stands for an arbitrary byte in memoryd@°dONLNd?\∑hÓ)›, just to give d@°dONLNdN\Óh)7Ptrd@°dONLNdQ\h) and ˇ˝y°dONLNdViäuÆ(räHandleˇˇ(V°dONLNd\iÆu")$ something to point to. The ˇ˝yr°dONLNdxi#u;)uByteˇˇ(Vr°dONLNd|i;u√)  data type is an alternative def4à°dONLNdúiƒu)âinition that trWî°dONLNd´iu)>eats .°dONLNd∞väÇö(ä=byte-length data as an unsigned rather than a signed quantity≤@°dONLNdÌvôÇõ(ô..°dONLNdÔàäî˚(ëäThe Pascal language defi°dONLNdà˚îb)qnes the special symbol °dONLNdàbîn)gNI°dONLNd ànît) L°dONLNd!àtîù)    , which c°dONLNd*àùî))an be the value of any °dONLNdAïä°«(ûäpointer type. R`°dONLNdOï«°Œ)=Yg`°dONLNdPïÕ°)ou can assign g`°dONLNd^ï°);NIL    °dONLNdaï°)6 to any pointer (and hence to any handle) to indicate .°dONLNdó¢äÆ˙(´äthat the pointer has a defid°dONLNd≤¢˚Æ£)q$ned value but does not point anywher˜†°dONLNd÷¢£Æ)®e useful. Some system .°dONLNdÏØäª≠(∏äsoftwarR`°dONLNdÛØ≠ª∏)#e r$¿°dONLNdˆØ∏ªfi)     outines r˜ °dONLNdˇØ›ªˆ)%eturn ˜ °dONLNd؈ª)NILò¿°dONLNdت»)- as the value of a pointer or handle if the rk °dONLNd5Ø»ª    )¿outine fails to °dONLNdEºä»Δ(≈äperform the rR`°dONLNdRºΔ»_)<"equested action. For example, the R`°dONLNdtº_»ï)ô    NewHandleR`°dONLNd}ºï»õ)6 r$¿°dONLNdºõ»Ω)outine r˜ °dONLNdẺ»Ÿ)!eturns ˜ °dONLNd麟»Î)NILò¿°dONLNdëºλ    ) if the .°dONLNdô…ä’ç(“ärE°dONLNdö…é’º)Cequested amount of memory is not available in the application heap.°dONLNdfi€äÁA(‰ä,For C, the type declarations look like this:.°dONLNd Úä˛*typedef char SignedByte;°dONLNd.ÚP˛‘)Δ/*any byte in memory*/°dONLNdEä ,(    ätypedef unsigned char Byte;°dONLNdkP »)Δ/*an unsigned byte*/°dONLNdÄäˆ(ätypedef char *Ptr;°dONLNdùP¯)Δ/*address of a signed byte*/°dONLNd∫ä((%ätypedef Ptr *Handle;°dONLNdŸP(
  4943. )Δ/*address of a master pointer*/.°dONLNd˘4ä@f(=ä2Unlike Pascal, the C language does not contain a r‡°dONLNd+4g@Û)› eserved symbol for a nil pointer<¿°dONLNdK4Û@)å. Most .°dONLNdRAäM(Jädevelopment systems, however¬†°dONLNdnAMP)å, include defi¬†°dONLNd|APMì):nitions of both ¬†°dONLNdåAìM•)Cnil¬†°dONLNdèA•M∫) and ¬†°dONLNdîA∫M“)NULL¬†°dONLNdòA“M’):°dONLNdöXädfi(aä#define NULL 0°dONLNd©färÿ*#define nil 0°dONLNd∑~ääß*ABecause of C’s loose type conventions, you can assign the values °dONLNd¯~ßäπ(áßnil°dONLNd˚~πäŒ) and °dONLNd~ŒäÊ)NULL!†°dONLNd~Êä )     to data .°dONLNdãäó„(îäOtypes other than pointers and handles. In Pascal, the compiler generates an err‡°dONLNd\ã‰ó (î‰
  4944. or if you .°dONLNdfòä§Ò(°ätry to assign the value °dONLNd~òÒ§)gNIL!†°dONLNdÅò§≤)( to an object whose data type is not defi!†°dONLNd™ò≤§)Øned as a pointer to .°dONLNdæ•ä±œ(Æäsome data type.
  4945. ÷H›4◊H› ÿäÿ
  4946. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdŒ«ä÷¥*$Stringsˇˇˇˇˇˇ€r(“2
  4947. °dONLNd÷›äÈ(ÊäThe Macintosh system softwaro °dONLNdÚ›È)á;e uses strings in arrays of up to 255 characters, with the °dONLNd-Íäˆê(Ûäfiå¿°dONLNd/Íêˆï)>rst byte of the array storing the length of the string. Some T⁄‡°dONLNdmÍîˆ∏(Ûîoolbox r°dONLNduÍπˆ)%outines allow you to °dONLNdä˜äÁ(äpass such a string dir‡°dONLNd†˜Ë#)^ectly; others r¡ °dONLNdؘ#:);equirÿ`°dONLNd¥˜:)3e that you pass a pointer or a handle to a string. °dONLNdÁä˘(äThe Memory Manager pr°dONLNd¸˙~)povides the following type defia¿°dONLNd~√)Ñnitions that defi`°dONLNd+ƒ¸)Fne character .°dONLNd8ä(ästrings in terms of the Pascal °dONLNdW1)ÉString°dONLNd]1c)$  data type:°dONLNdi(ä4¢(1äTYPE°dONLNdo6úB∫+Str15°dONLNdy6ˆBD)Z= String[15];°dONLNdàDúP∫(MúStr27°dONLNdíDˆPD)Z= String[27];°dONLNd°Rú^∫([úStr31°dONLNd´Rˆ^D)Z= String[31];°dONLNd∫`úl∫(iúStr63°dONLNdƒ`ˆlD)Z= String[63];°dONLNd”núz¿(wúStr255°dONLNdfinˆzJ)Z= String[255];°dONLNdÓ|úà“(Öú    StringPtr°dONLNd¸|ˆà2)Z
  4948. = ^Str255;°dONLNdäúñ‰(ìú StringHandle°dONLNdäˆñD)Z= ^StringPtr;ˇŒ@ˇ ˇˇˇˇ@
  4949. ˇ·ˇ‚7^
  4950. 4*\¯, Palatino&e.3+l"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@lMemory4⁄*˙¯
  4951. (‡*46    )BData ÿ )Tÿ)ypes4^*¿¯
  4952. °dONLNd\lhª(elThe C language trLJ°dONLNd\ªh˚)Oeats strings difÓ °dONLNd!\˚h)@fer–†°dONLNd$\h() ently thπ@°dONLNd,\)h<)"an P@°dONLNd0\=hR)ascal©‡°dONLNd5\Rhi) does¡¿°dONLNd:\ihØ). In C, strings ar≈Ä°dONLNdL\ØhÁ)Fe of variable °dONLNdZiluÇ(rl@length, with the end of the string marked by a special delimiter>Ä°dONLNdöiÇuŒ(rÇ, usually the null °dONLNd≠vlÇÍ(lcharacter (ASCII 0). If you ar)°dONLNdÀvÎÇÿ)6e using C, you must make certain to pass Pascal-style °dONLNdÉlèù(ål strings to TeÄ°dONLNdÉùè¡)1oolbox r£†°dONLNdÉ¡èv)$+outines or to use special versions of the TÇ¿°dONLNd@Évèö)µoolbox r¿‡°dONLNdHÉöèÔ)$outines that accept °dONLNd\êlúá(ôl=C strings. Check the documentation for your development envirÿ‡°dONLNdôêáúÂ(ôáonment for complete °dONLNd≠ùl©ã(¶ldetails.
  4953. Œ*’¯4œ*’¯ –l–¯
  4954. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd∂ølŒ·*$Procedure Pointersˇˇˇˇˇˇ€r( 2
  4955. °dONLNd…’l·Ñ(filFor tr˛†°dONLNdœ’Ñ·´)    eating prö†°dONLNdÿ’¨· )(ocedur1‡°dONLNdfi’À·Œ)8es and functions as data objects, the Memory Manager defiÑ¿°dONLNd’Œ·Ô(fiŒnes the ,
  4956. Courier.°dONLNd‚lÓñ(ÎlProcPtr°dONLNd&‚ñÓ»)*  data type:°dONLNd2˘lÑ(lTYPE°dONLNd8~®+ProcPtr°dONLNdA®Æ)* °dONLNdEÿ¸)0= Ptr;°dONLNdP2¬)Z{pointer to a procedure}.°dONLNdil+((l#For example, after the declarations.°dONLNdç6lB~*VAR°dONLNdíD~P∫+
  4957. myProcPtr:°dONLNd°DÿP)ZProcPtr;°dONLNd´`ll“(ilPROCEDURE MyProc;°dONLNdΩnlzä*BEGIN°dONLNdƒ|~àê+...°dONLNd»älñÑ(ìlEND;°dONLNdÕ¢lÆ™*you can make °dONLNd⁄¢™Ƈ)>    myProcPtr°dONLNd„¢‡ÆÊ)6 rR`°dONLNd¢ÊƯ)efer$¿°dONLNdÈ¢¯Æ)    ence the $¿°dONLNdÚ¢ÆC)'MyProc$¿°dONLNd¯¢CÆO)$ pr˜ °dONLNd˚¢NÆk) ocedur…Ä°dONLNd¢kÆø)e by using Pascal’s …Ä°dONLNd¢øÆ≈)T@…Ä°dONLNd¢≈ÆÓ)     operator  °dONLNd¢ÓÆÛ)), .°dONLNd!Ølªö(∏l as follows:.°dONLNd-Δl“Í*myProcPtr := @MyProc;°dONLNdCfilÍw*WÛ`°dONLNdDfivÍô)
  4958. ith the Û`°dONLNdLfiôÍü)#@Û`°dONLNdMfiüÍ»)     operator6°dONLNdVfi»Í)), you can assign pr`°dONLNdifiÍ5)Pocedur⁄¿°dONLNdofi4Í◊)&es and functions to variables of type °dONLNdïÎl˜ñ(ÙlProcPtr¬†°dONLNdúÎï˜)), embed them in data strƆ°dONLNd¥Î˜)mucturÅ°dONLNdπΘ)es, and pass them as arS`°dONLNd–Θœ)gguments to other r%¿°dONLNd‚Îœ˜Ù)P    outines. ˇˇ2°dONLNdίl∑(lNotice, howeverÙ∏°dONLNd˙¯∂)J, that the data type ˇ˝ñHÔ0°dONLNd¯9)YProcPtrˇˇ2Ô0°dONLNd¯9˜)*. technically points to an arbitrary byte, not .°dONLNdDlö(l an actual r∏Ä°dONLNdOöª).outine. úÄ°dONLNdWª‘)!As a re¿°dONLNd]’) esult, ther@†°dONLNdhÃ),/e’s no way in Pascal to access the underlying r¿°dONLNdóÕÎ)Ãoutine °dONLNdûlΔ(lvia this pointer in orl°dONLNd¥Δ)Zder to call it. Only rQ`°dONLNd ’)V)outines written in assembly language can .°dONLNdÛl+≠((lactually call rR`°dONLNd≠+Y)A'outines designated by pointers of type R`°dONLNd)Y+É)¨ProcPtrï°dONLNd0Ç+Ö)).
  4959. 9*G¯4:*G¯    .°dONLNd28lC(@lNote
  4960. ˇ·ˇ‚7^
  4961. .°dONLNd7ElQs*Yï°dONLNd8ErQ∏)ou can’t use the ï°dONLNdIE∏Qæ)F@ï°dONLNdJEæQ¯) operator to rg`°dONLNdXE¯Q
  4962. ):efer9¿°dONLNd\E
  4963. Q))ence pr  °dONLNdcE)QF)ocedurfiÄ°dONLNdiEEQ§)es or functions whose .°dONLNdQl]≠(Zldeclarations ar§@°dONLNdéQ≠])Ae nested within other rÖ°dONLNd•Q]3)doutines.,Zapf DingbatsÑ`°dONLNd∂T9\>)(uˇ4@ˇ ˇˇˇˇ@
  4964. ˇ·ˇ‚7^
  4965. 4H\, Palatino&e.3+ä"CHAPTER ”)>2,     Helvetica    ˇˇ—ÚˇÆ(@äMemory4⁄ä˙(‡äData ÿ )Tÿ)ypes
  4966. (‡ 47
  4967. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  4968. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  4969.  
  4970.  
  4971.  
  4972.  
  4973.  
  4974. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  4975. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  4976. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  4977.  
  4978.  
  4979.  
  4980.  
  4981.  
  4982. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜ ˇˇ˛ˇˇ ˛ˇˇˇ     ˇˇˇˇ
  4983. ˇ˝ˇ ˇ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  4984. 4€4—?òÄ
  4985. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  4986. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  4987.  
  4988.  
  4989.  
  4990.  
  4991.  
  4992. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  4993. ˛ˇˇˇˇ
  4994. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˙ˇˇ˛˝ˇ˛˙ˇˇ˙ˇˇ˛˝ˇ˛˜˜˝˛ˇ˛
  4995. ˛ˇ˛ˇˇ
  4996. ˛ˇ˛ˇˇ˝˛ˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˚ˇˇˇ    ˇˇˇ˝ˇˇ˚˝ˇˇ˝˚ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  4997. kHr4lHr mäm
  4998. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd\äkí(gäT$é°dONLNd\ík‚) ype Coercionˇˇˇˇˇˇ€r(g2
  4999. °dONLNdrä~Î({äBecause of Pascal’s str†°dONLNd%rÏ~")b ong typing r¿°dONLNd1r"~q)6ules, you can’t dir¸°dONLNdDrq~˛)O"ectly assign a pointer value to a °dONLNdfäã≥(àäFvariable of some other pointer type, or pass a pointer variable to a r≥ °dONLNd¨≥ã’(à≥outine r:Ä°dONLNd¥÷ã)#
  5000. equesting °dONLNdæåäòg(ïä2some other pointer type. Instead, you have to coer¿°dONLNdågò≠)›ce the pointer fr–‡°dONLNdå≠ò)Fom one type to anotherŸÄ°dONLNdåò)f..°dONLNdûä™(ßäFor example, you can call the ,
  5001. Courier°dONLNd7û™.)ÜHLock°dONLNd<û.™:) prR`°dONLNd?û:™W) ocedur$¿°dONLNdEûW™ä)e to lock a r˜ °dONLNdRûâ™)2elocatable block of memory€`°dONLNdlû™)z. °dONLNdn´ä∑û(¥äThe °dONLNdr´û∑º)HLock°dONLNdw´º∑») prR`°dONLNdz´»∑Â) ocedur$¿°dONLNdÄ´Â∑)e r˜ °dONLNdÉ´Ô∑)
  5002. equir…Ä°dONLNdà´∑m)es a parameter of type …Ä°dONLNdü´m∑ë)gHandle…Ä°dONLNd•´ë∑)$. If the block you want to °dONLNd¿∏äƒπ(¡ä lock isn’t rR`°dONLNdÃ∏πƒÀ)/efer$¿°dONLNd–∏ÀƒG)enced by a variable of type $¿°dONLNdÏ∏Gƒk)|Handle$¿°dONLNdÚ∏kƒ´)$, you must coer˜ °dONLNd∏™ƒ)?ce the variable to the .°dONLNd≈ä—ç(ŒärE°dONLNd≈é—•)equir\@°dONLNd≈•—‹) ed type. Her>‡°dONLNd*≈‹—)7e’s an example:.°dONLNd:‹äË(ÂäHLock(Handle(myData));°dONLNdQÙä∏*    Similarlyd@°dONLNdZÙ∑Œ)-, the d@°dONLNd`ÙŒÊ)GetDd@°dONLNddÙÊ)ialogd@°dONLNdiÙ)Itemd@°dONLNdmÙ() pr6†°dONLNdpÙ(E) ocedur    °dONLNdvÙEJ)e    °dONLNdwÙJP) r€`°dONLNdyÙO) eturns in a €`°dONLNdÖÙë)0VAR€`°dONLNdàÙë) parameter a handle to an .°dONLNd¢ä(
  5003. ä item in a dialog box. If you werº¿°dONLNd¬R)äe to use the prÄ°dONLNd—Rp)>ocedurá¿°dONLNd◊q)&e to obtain the handle to a button in .°dONLNd˝äΔ(äthe variable °dONLNd
  5004. Δˆ)<itemHand°dONLNdˆ)0     of type °dONLNd>)$Handle°dONLNd!>ˆ)$+, you might need to access the button as a .°dONLNdLä'†($äcontr>Ä°dONLNdQ°'û):ol. For example, you could access the button’s enclosing rû‡°dONLNdãû')˝ectangle with the code:.°dONLNd£2ä>ÿ(;äControlHandle°dONLNd∞2ÿ>)N
  5005. (itemHand)°dONLNd∫2>b)<^^.contrlRect°dONLNd«2b>h)N;.°dONLNd…JäVê(SäY@Ä°dONLNd JêV})5ou can use this same syntax to equate any two variabl∑ °dONLNdˇJ}Vç)Ìes o≥@°dONLNdJéV)f the same length. For °dONLNdWäc±(`äexample:.°dONLNd#näzú*VAR°dONLNd(|úàΔ+myChar:°dONLNd3|‰à)HChar;°dONLNd:äúñΔ(ìúmyByte:°dONLNdEä‰ñ)HByte;°dONLNdL¶ä≤(ØämyByte := Byte(myChar);°dONLNddæä ë*Yï°dONLNdeæê )ou can also use the functions ï°dONLNdÉæ  )~ORDï°dONLNdÜæ  %), ï°dONLNdàæ% =)ORD4ï°dONLNdåæ= U), and ï°dONLNdíæU )POINTERï°dONLNdôæ û)* to coerg`°dONLNd°æû )ce variables of dif9¿°dONLNd¥æ ˝)Rfer  °dONLNd∑æ˝ )ent .°dONLNdªÀä◊Ø(‘ä    length fr? °dONLNdƒÀ∞◊)&om one type to anotherG¿°dONLNd⁄À◊T)f. For example:.°dONLNdÈ‚äÓú(ÎäVAR°dONLNdÓú¸ÿ+
  5006. myInteger:°dONLNd¸‰¸)HInteger;°dONLNd˛ú
  5007. ÿ(ú
  5008. myLongInt:°dONLNd˛‰
  5009. )HLongInt;°dONLNd úÿ(ú
  5010. myPointer:°dONLNd, ‰¸)HPtr;°dONLNd2(ä42(1ämyInteger := ORD(myLongInt);°dONLNdY(P4Ï)Δ{two low-order bytes only}°dONLNdt6äB2(?ämyInteger := ORD(myPointer);°dONLNdõ6PBÏ)Δ{two low-order bytes only}°dONLNd∂DäP2(MämyLongInt := ORD(myInteger);°dONLNd›DPP)Δ{packed into high-order bytes}°dONLNd¸Rä^8([ämyLongInt := ORD4(myInteger);°dONLNd$RP^˛)Δ{packed into low-order bytes}°dONLNdB`äl2(iämyLongInt := ORD(myPointer);°dONLNd_näzJ* myPointer := POINTER(myInteger);°dONLNdÄ|äàJ* myPointer := POINTER(myLongInt);
  5011. óH•4òH•    .°dONLNd°ñä°ù*Note
  5012. ˇ·ˇ‚7^
  5013. °dONLNd¶£äØ6*#Assembly-language and C language prŒ†°dONLNd…£6Ø«)¨ogrammers don’t need to bother °dONLNdËØ䪅(∏äwith type coer‰¿°dONLNdˆØ…ªfi)?cion.,Zapf Dingbats@°dONLNd≤‰∫È)uˇJ@ˇ ˇˇˇˇ@
  5014. ˇ·ˇ‚7^
  5015. 4^*¿¯ˇ™@ˇ ˇˇˇˇ@
  5016. ˇ·ˇ‚7^
  5017. 4⁄∫˙,     Helvetica    .(‡∫Contents, Palatino
  5018. (‡ 49    3, Ã(#∫CHAPTER ßí)h3
  5019. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5020. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5021.  
  5022.  
  5023.  
  5024.  
  5025.  
  5026. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  5027. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5028. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5029.  
  5030.  
  5031.  
  5032.  
  5033.  
  5034. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜
  5035. ˛ˇ˛ˇˇ ˇˇ˛ˇˇ     ˇˇˇ˙ˇ
  5036. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜ˇˇˇˇˇˇ(JH
  5037. Figure 3-0*     Listing 3-0*    T)able 3-0
  5038. zH,
  5039. 4zH, H°dONLNd
  5040. ∫*˘+m Contentsˇˇˇˇˇˇ
  5041. ˇ·ˇ‚7^ˇˇ∫Ρ◊(qH3°dONLNd]∫y )rResourzb°dONLNd] y.)Rces
  5042. °dONLNd;∫G˜(D∫ About Resour °dONLNd;¯G)>ces{°dONLNd$;G#)!51°dONLNd'HƒT„(QƒResourv@°dONLNd-H„T)ce PathsäÄ°dONLNd7HT%)852°dONLNd:Uƒa„(^ƒResourv@°dONLNd@U„aÙ)ce Tj‡°dONLNdDUÙa)ypes¿°dONLNdJUa'))55°dONLNdMbƒn (kƒR.°dONLNdNbÀn„)esourv@°dONLNdSb„n˚)ce StrꇰdONLNdYb˚n)uctur¿°dONLNd^bn)e‡`°dONLNdab+n5)56°dONLNddo∫{˘(x∫Using StandarÅ`°dONLNdqo˘{ )?d Resour`°dONLNdyo!{.)(cesä@°dONLNd~oB{L)!59°dONLNdÅ|∫à(Ö∫Using Custom Resour™`°dONLNdî|à()aces!@°dONLNdô|=àG)"60ˇJ@ˇ ˇˇˇˇ@
  5043. ˇ·ˇ‚7^
  5044. 4^*¿¯ˇ:@ˇ ˇˇˇˇ@
  5045. ˇ·ˇ‚7^, Palatino&e.3+ä"CHAPTER ”)>3
  5046. 4⁄ä˙,     Helvetica    (‡äAbout Resources
  5047. (‡ 51
  5048. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5049. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5050.  
  5051.  
  5052.  
  5053.  
  5054.  
  5055. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  5056. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5057. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5058.  
  5059.  
  5060.  
  5061.  
  5062.  
  5063. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜
  5064. ˛ˇ˛ˇˇ ˇˇ˛ˇˇ     ˇˇˇ˙ˇ
  5065. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  5066. 454+?òÄ
  5067. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5068. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5069.  
  5070.  
  5071.  
  5072.  
  5073.  
  5074. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˛˙ˇ˚ˇˇ˚ˇˇ˚ˇˇ    ˛˛ˇˇˇ˜˝˛ˇ˛
  5075. ˛ˇˇˇˇ
  5076. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜    ˛ˇˇ˛
  5077. ˛ˇˇˇˇ
  5078. ˛ˇˇˇˇ    ˝ˇˇˇ˝˛ˇ˛
  5079. ˛ˇ˛ˇˇ
  5080. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  5081. ˛ˇ˛ˇˇ
  5082. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  5083. ˛ˇˇˇˇ
  5084. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  5085. ˛ˇˇˇˇ
  5086. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜    ˇˇ—ÚˇÆ°dONLNd8äC≥(@ä    Resourcesˇˇˇˇˇˇ≠>(@3
  5087. °dONLNd
  5088. \äh£(eä>This chapter describes how your application can use the ResourÀ‡°dONLNdH\£hÏ(e£ce Manager to cr‡°dONLNdX\Ìh)J    eate and °dONLNdaiäu≥(rämanage r√ °dONLNdii≥uÀ))esour `°dONLNdniÃuA)ces, collections of data stordž°dONLNdãiAug)u    ed in a fiÆÄ°dONLNdïigu|)&le’s r©¿°dONLNdõi|uî)esourÚ°dONLNd†iîu¯)ce fork that have a defiÄÄ°dONLNd∏i˘u )ened °dONLNdºväÇï(ästrfi°dONLNdøvïǨ) ucturc‡°dONLNdƒv≠Ç…)=e or type. The Macintosh Operating System and the Macintosh TK@°dONLNdv…Ç˙(…
  5089. oolbox defi∂Ä°dONLNd v˙Ç)1ne a °dONLNdÉäèï(åälar-`°dONLNdÉñè◊) ge number of rч°dONLNd"É◊èÔ)AesourÕ °dONLNd'ÉÔè)
  5090. ce types. 3†°dONLNd1Éè))YÙ °dONLNd2Éè~)ou’ll need to include r‡°dONLNdIÉèó)besourM °dONLNdNÉóè )ces of some of these types °dONLNdiêäúÎ(ôäin your application’s r8@°dONLNdÄêÏú)besourÄÄ°dONLNdÖêú)ce fiG °dONLNdäêúk)le to meet various rZÄ°dONLNdûêkúÇ)Uequirq¿°dONLNd£êÇú)ements of the system softwar`°dONLNdøêú )Åe. °dONLNd¬ùä©(¶äIn addition, the system softwarφ°dONLNd·ù©$)âe pr˝`°dONLNdÂù$©)ovides a number of r¢†°dONLNd˘ùÄ©ò)\esour͇°dONLNd˛ùò©)ces (such as fonts, patterns, °dONLNd™ä∂.(≥ä&and icons) that you can use to help cr¡`°dONLNdB™.∂t)§eate the standar•‡°dONLNdR™t∂)F$d Macintosh user interface for your °dONLNdv∑ä√æ(¿ä application.°dONLNdÉ…ä’g*3This chapter begins with a general description of rB†°dONLNd∂…h’Ä)fiesour䇰dONLNdª…Ä’Ò)ces. Then it shows how to,Zapf Dingbats°dONLNd’fläÊè(Âän
  5091. °dONLNd◊‹ñ˱) use pr‘‡°dONLNd›‹±ËΔ)edefiꆰdONLNd‚‹«Ëˇ) ned system rıÄ°dONLNdÓ‹ˇË)8esour=¿°dONLNdÛ‹Ë%)ces°dONLNd˜Òä¯è(˜än
  5092. °dONLNd˘Óñ˙û) crµ@°dONLNd˚Óû˙∂)eate rœ‡°dONLNdÓ∂˙Œ)esour °dONLNdÓœ˙)ces of a standar    ‡°dONLNdÓ˙/)Dd type°dONLNdä
  5093. è(    än
  5094. °dONLNdñ ¶) defir °dONLNd#ß )ne your own custom rƆ°dONLNd7  )aesourˆ‡°dONLNd<  G)    ces and r‡°dONLNdEH `)(esourh °dONLNdJ` É)ce types°dONLNdSäç(ä<For a complete description of the capabilities of the Resourz¿°dONLNdèç¸(çce Manager and for code °dONLNdßä*ı('äsamples illustrating morN °dONLNdøˆ*.)l e advanced r≈¿°dONLNdÀ.*F)8esour°dONLNd–G*K)c~@°dONLNd—K*X)e-hm °dONLNd‘Y*ˆ)$andling techniques, see the chapter °dONLNd¯+ä7Æ(4ä“Resourv@°dONLNdˇ+Æ7Ù)$ce Manager” in {‡°dONLNd+Ù7P)FInside Macintosh: MorÙ`°dONLNd#+P7â)\e Macintosh T»Ä°dONLNd0+â7¢)9oolboxÅÄ°dONLNd6+£7•).
  5095. >HY4?HY
  5096. iHq4jHq kHk
  5097. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd8VHi¨(dH About Resour @°dONLNdDV≠i¬)ecesˇˇˇˇˇˇU˛(d3
  5098. °dONLNdHzäÜ (ÉäAn experienced Macintosh prN‡°dONLNdczÜø)É'ogrammer might cringe at several featur懰dONLNdäzøÜÒ)≤ es of the GrR`°dONLNdñzÚÜ)3eetMe °dONLNdúáäìù(êäsour˛†°dONLNd†áùì„)ce code shown i@°dONLNdØá‰ìÏ)Gn i†°dONLNd±áÏìB)Listing 1-1 on page +†°dONLNd≈áCìH)W3+†°dONLNdΔáHìJ).´†°dONLNd«áJì
  5099. ). One of the main sins it commits is this line:,
  5100. Courier.°dONLNdˆûä™,(ßägString := 'Hello, world!';.°dONLNd∂ä¬ß*The prLJ°dONLNd∂߬Õ)oblem w›°dONLNd∂Õ¬Ó)&    ith this @°dONLNd(∂Ô¬)"line ˛°dONLNd-∂¬°)(is that it includes, as part of the sour˘†°dONLNdU∂°¬fl)†ce code of the °dONLNdd√äœC(Ãä,application, the message string that is to b˙Ä°dONLNdê√Cœ{)πe displayed iL†°dONLNdù√|œ⁄)9n the output windowî°dONLNd∞√Ÿœ)]. While such °dONLNdΩ–ä‹d(Ÿä0an intermixing of code and data might be standar˘`°dONLNdÌ–d‹õ)⁄ d in some prf °dONLNd˘–ú‹È)8ogramming envirº‡°dONLNd–È‹)M    onments, °dONLNd›äÈ™(Êäit’s defi! °dONLNd›´È˘)!nitely nonstandar( °dONLNd+›˘Èe)Nd in the Macintosh envir/ °dONLNdC›eÈí)l    onment. T] °dONLNdL›ëÈ ),o change the message, or to °dONLNdhÍäˆì(ÛäprG °dONLNdjÍîˆ>)
  5101. 'oduce a version of the message in a dif„`°dONLNdëÍ>ˆJ)™fer≈‡°dONLNdîÍJˆ˘) 'ent language, you’d need to change the °dONLNdª˜äù(äsour˛†°dONLNdø˜ù◊)ce code and r5¿°dONLNdØÿ);Eecompile the application. It would be better to isolate the changing °dONLNdä(ädata (the message string) frß`°dONLNd-u)xom the application’s code.°dONLNdHä"æ(ä
  5102. When you’r`°dONLNdRø"–)5e pr °dONLNdV–"¥)1ogramming on the Macintosh, you can do this by crÍ¿°dONLNdá≥"‹)„
  5103. eating a r†°dONLNdë›"ı)*esourL‡°dONLNdñı")ce that °dONLNdû#ä/(,äcontains the message string. öÄ°dONLNdª#/)~A’ °dONLNdº#/) U °dONLNdΩ#/8)resourceß¿°dONLNd≈#8/fi)&' is any collection of data having a defii¿°dONLNdÌ#fl/Ú)ßned °dONLNdÒ0ä<ï(9ästrfi°dONLNdÙ0ï<¨) ucturc‡°dONLNd˘0≠<‚)e that is stor‚‡°dONLNd0‚<)5    ed in a fi¿°dONLNd0    <c)'le designed to hold rŸ@°dONLNd&0c<{)Zesour!Ä°dONLNd+0|<√)ces, known as a S¿°dONLNd;0√<Ò)G
  5104. resource fiB °dONLNdF0Ú<¸)/le.°dONLNdI0˝<ˇ)  °dONLNdJ=äIÃ(FäThen you can rüÄ°dONLNdX=ÃI:)Bead the message string fr¶`°dONLNdq=:I_)nom the rí@°dONLNdy=_Iw)%esour⁄Ä°dONLNd~=wIà)ce fi° °dONLNdÉ=âIÏ)le using a call like this:.°dONLNdûTä`∂(]ä2GetIndString(gString, kMessages, kGreetingString);ˇ ä@ˇ ˇˇˇˇ@
  5105. ˇ·ˇ‚7^
  5106. 4*\¯, Palatino&e.3+l"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@l    Resources4⁄*˙¯
  5107. (‡*52    )BAbout Resources4^*¿¯
  5108. .°dONLNd\lhÄ(elThe ,
  5109. Courier°dONLNd\Äh») GetIndString°dONLNd\»h‘)H prR`°dONLNd\‘hÒ) ocedur$¿°dONLNd\Òhˆ)e$¿°dONLNd\ˆh¸) r˜ °dONLNd\˚h()
  5110. eads the r…Ä°dONLNd&\(h?)-esourõ‡°dONLNd+\?hl) ce of type õ‡°dONLNd6\lhê)-'STR#'õ‡°dONLNd<\êh“)$ that has the rn@°dONLNdK\“hÈ)Besour@†°dONLNdP\ÈhÙ)ce °dONLNdSiluz(rlID °dONLNdVizu∞)    kMessages°dONLNd_i∞uÂ)6 in an open rR`°dONLNdliÂu¸)5esour$¿°dONLNdqi¸u\)ce fork. This type of r˜ °dONLNdài[ur)_esour…Ä°dONLNdçiru›)ce contains a string list, ˇˇ6⁄°dONLNd®vlÇ@(l3which is a sequential list of Pascal strings. Then ˇ˝§ém™°dONLNd€vAÇâ)’ GetIndStringˇˇ6⁄m™°dONLNdÁvâǯ)H selects the string having ˇˇµ¥°dONLNdÉlèò(ål
  5111. the index ˇˇ!Îh°dONLNd ÉòèÚ),kGreetingStringˇˇµ¥Îh°dONLNdÉÚè)Z    . If ther)0°dONLNd$Éè%)#e ar±D°dONLNd(É%è˜)4e at least that many strings in the string list, it °dONLNd\êlú©(ôlputs the apprR`°dONLNdiê©ú)=opriate string into the fiR`°dONLNdÉêúí)mrst parameter (in this case, R`°dONLNd†êíúº)|gStringR`°dONLNdßêºú√)*).
  5112. ™*∏¯4´*∏¯    .°dONLNd™©l¥(±lNote
  5113. ˇ·ˇ‚7^
  5114. .°dONLNdØ∂l¬Ä*The °dONLNd≥∂Ĭ») GetIndString°dONLNdø∂»¬‘)H prR`°dONLNd¬∂‘¬Ò) ocedur$¿°dONLNd»∂Ò¬c)e is not part of the Resour˜ °dONLNd„∂b¬ï)q
  5115. ce Manager9¿°dONLNdÌ∂﬙)3, but .°dONLNdÛ¬lŒÕ(Àlit does call the ResourW@°dONLNd
  5116. ¬ÕŒ)a
  5117. ce Manager¿°dONLNd¬ˇŒ&)2. Many Tq@°dONLNd¬&Œ´)'oolbox and Operating System °dONLNd8Œl⁄o(◊lrE°dONLNd9Œp⁄)"outines internally call the Resour¬†°dONLNd[Œ⁄E)ëce Manager to rã`°dONLNdjŒF⁄ù)Eetrieve information °dONLNd~⁄lÊs(„lfrò‡°dONLNdÄ⁄sÊá)om r'`°dONLNdÑ⁄àʆ)esouro†°dONLNdâ⁄†ÊØ)ces.,Zapf DingbatsfÄ°dONLNdñ›µÂ∫)u
  5118. °dONLNdòÎl˜É(ÙlThe rÄ¿°dONLNdùÎɘõ)esour…°dONLNd¢Îõ˜8)$ces used by an application can be crPÄ°dONLNdΔÎ9˜Δ)ûeated and changed separately frN@°dONLNdÂÎΔ˜Á)çom the °dONLNdϯlõ(lEapplication’s code. This separation is the main advantage to having r °dONLNd1¯ú¥(úesourO`°dONLNd6¯¥≈)ce fi°dONLNd;¯Δ÷)les. ¶†°dONLNd@¯÷›)A·@°dONLNdA¯›fl) °dONLNdBl (lchange in a simple grß °dONLNdW ≠)^6eeting or in the title of a menu, for example, won’t rF`°dONLNdçÆ≈)‰equir]†°dONLNdí≈fl)e any °dONLNdòlo(lrE°dONLNdôpÉ)?ecompilation of code, nor will translation to another language.
  5119. ,*:¯4-*:¯°dONLNdŸ-l5ã(3lIMPORTÄ°dONLNdfl-ã5õ)ANT
  5120. ˇ·ˇ‚7^
  5121. °dONLNd„8lDu(AlPrN†°dONLNdÂ8vDS)
  5122. 1operly written Macintosh applications should storn °dONLNd8SDZ)›e ∑¿°dONLNd8ZDa)alÔ@°dONLNd8aDc)l∂Ä°dONLNd8dDi) l‡°dONLNd8jD°) anguage- or °dONLNd)DlPª(Mllocation-sensitive +†°dONLNd<DºP—)Pdata     ¿°dONLNdAD“P·)as rã¿°dONLNdED·P˘)esour‘°dONLNdJD˘Pv) ces, so that localization is lar6¿°dONLNdjDwPì)~gely a °dONLNdqPl\(Yl%matter of editing the application’s rdONLNdñP\ )úesour› °dONLNdõP \/)ces.‘°dONLNd®S5[;)s
  5123. Ä*á¯4Å*ᯠÇlǯ
  5124. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd™qlÄÕ(|lResource Pathsˇˇˇˇˇˇ€r(|3
  5125. °dONLNdπálìr(êl;At any given time during your application’s execution, therJ`°dONLNdÙásìÉ(êse arY°dONLNd¯áÉìfl)e usually two or morS@°dONLNd áflìÊ)\e °dONLNdîl†à(ùlopen r◊†°dONLNdîà††)esour‡°dONLNdî°†≤)ce fiÊÄ°dONLNdî≤†«)les frn`°dONLNd$)om which you can r†°dONLNd6î †§)Xead information. The system rß@°dONLNdSº)ÑesourÔÄ°dONLNdXÕ)ce fi∂ °dONLNd]·)le is °dONLNdc°l≠¶(™l opened by th¢Ä°dONLNdo°¶≠ª):e Op  °dONLNds°ª≠‘)eratinÇÄ°dONLNdy°’≠Á)g Sy`Ä°dONLNd}°Ë≠ó))stem at startup time. It contains standaràÄ°dONLNd¶°ó≠£)Ød rÈ@°dONLNd©°£≠ª) esour1Ä°dONLNdÆ°º≠≈)cek`°dONLNd∞°≈≠Í)    
  5126. s, called °dONLNd∫Æl∫ª(∑lsystem resources,Í°dONLNdÀƪ∫¡)O sß°dONLNdÕƬ∫–)har=`°dONLNd–Æ—∫+)ed by all applicationA °dONLNdÂÆ+∫4)Zs. ¿°dONLNdËÆ4∫z)    Among these ar:°dONLNdˆÆz∫Ñ)Fe il°dONLNd˘ÆÑ∫)
  5127. cons, fonts, sounds, and °dONLNdªl«(ƒl'other collections of data. The system ru‡°dONLNd9ª«+)ßesouræ °dONLNd>ª+«<)ce fiÑ¿°dONLNdCª=«“)"le also contains a number of code °dONLNde»l‘o(—lrE°dONLNdf»p‘à)esourç@°dONLNdk»à‘Ê)ces that you call indir)‡°dONLNdÇ»Á‘()_ectly to help cr@°dONLNdí»(‘n)Aeate the standarÙ¿°dONLNd¢»m‘Á)Ed Macintosh user interface. °dONLNdæ’l·Ÿ(filFor example, the standarÄ°dONLNd÷’⁄·Û)n;d appearance and behavior of pull-down menus is governed by,Ä°dONLNd’Û·ı(fiÛ .°dONLNd‚lÓ°(Îl
  5128. a menu-defi°dONLNd‚°Ó∑)5nitio°dONLNd"‚∑Ó»)n prR`°dONLNd&‚»ÓÂ)ocedur$¿°dONLNd,‚ÂÓÌ)e,$¿°dONLNd.‚ÌÓ) stor˜ °dONLNd3‚ˇÓ$)    ed as a r…Ä°dONLNd<‚$Ó;)%esourõ‡°dONLNdA‚;Óh) ce of type õ‡°dONLNdL‚hÓå)-'MDEF'õ‡°dONLNdR‚åÓ–)$ in the system rn@°dONLNdb‚–ÓÁ)Desour@†°dONLNdg‚ÁÓÚ)ce .°dONLNdjÔl˚r(¯lfiå¿°dONLNdlÔr˚∑)le. The system r®†°dONLNd|Ô∑˚œ)Eesour‡°dONLNdÅÔœ˚‡)ce fi∑Ä°dONLNdÜÔ·˚A)le also contains code rÑ¿°dONLNdùÔB˚Z)aesourÕ°dONLNd¢ÔZ˚Ø)ces that help you cr`Ä°dONLNd∂Ô∞˚Â)V eate standarÁ†°dONLNd¬ÔÂ˚Ì)5d °dONLNdƒ¸l¬(lwindows and contra†°dONLNd’¸¬—)Vols.°dONLNd⁄lr(lY@Ä°dONLNd€r√)our application’s r/‡°dONLNdÓ√€)Qesourx °dONLNdÛ€Ï)ce fi>¿°dONLNd¯Ì¬)0le is opened when your application is launched. Ê`°dONLNd(¬»)’Y¶‡°dONLNd)»Á)ou can .°dONLNd0l'í($l    call the °dONLNd9í'Œ)&
  5129. CurResFile°dONLNdCŒ'Œ)<< function early in your application’s execution to get the rR`°dONLNdŒ'‡($Œefer$¿°dONLNdɇ'ı)ence .°dONLNdà(l4Û(1lnumber of your application’s r∏@°dONLNd¶(Û4 )áesourÄ°dONLNd´( 4)ce fi« °dONLNd∞(4)lØÄ°dONLNd±( 4')e..°dONLNd¥?lK&(HlgAppsResourceFile := CurResFile°dONLNd”?&K,)∫;ˇ;û@ˇ ˇˇˇˇ@
  5130. ˇ·ˇ‚7^
  5131. 4H\, Palatino&e.3+ä"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@ä    Resources4⁄ä˙(‡äAbout Resources
  5132. (‡ 53
  5133. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5134. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5135.  
  5136.  
  5137.  
  5138.  
  5139.  
  5140. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  5141. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5142. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5143.  
  5144.  
  5145.  
  5146.  
  5147.  
  5148. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜
  5149. ˛ˇ˛ˇˇ ˇˇ˛ˇˇ     ˇˇˇ˙ˇ
  5150. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  5151. 454+?òÄ
  5152. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5153. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5154.  
  5155.  
  5156.  
  5157.  
  5158.  
  5159. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˛˙ˇ˚ˇˇ˚ˇˇ˚ˇˇ    ˛˛ˇˇˇ˜˝˛ˇ˛
  5160. ˛ˇˇˇˇ
  5161. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜    ˛ˇˇ˛
  5162. ˛ˇˇˇˇ
  5163. ˛ˇˇˇˇ    ˝ˇˇˇ˝˛ˇ˛
  5164. ˛ˇ˛ˇˇ
  5165. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  5166. ˛ˇ˛ˇˇ
  5167. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  5168. ˛ˇˇˇˇ
  5169. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  5170. ˛ˇˇˇˇ
  5171. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\ähê(eäY@Ä°dONLNd\êhS)-ou need to keep track of your application’s rñ °dONLNd.\Shk)√esourfi`°dONLNd3\kh|)ce fi•°dONLNd8\}h‹)le because the Resoury‡°dONLNdM\‹h)_ ce Manager °dONLNdXiäuÿ(räalways looks for r,°dONLNdjiŸuÒ)Oesourt@°dONLNdoiÒu.)ces in the curr1@°dONLNd~i/uC)>ent rS†°dONLNdÉiCu[)esourõ‡°dONLNdài[ul)ce fibÄ°dONLNdçimu)$le, which can change. Each time you °dONLNd±väÇÆ(äopen a rW†°dONLNdπvÆÇΔ)$esourü‡°dONLNdævΔÇ◊)ce fifÄ°dONLNd√vÿÇ8)le, it becomes the curr·@°dONLNd⁄v8ÇL)`ent r†°dONLNdflvMÇe)esourK‡°dONLNd‰veÇv)ce fiÄ°dONLNdÈvwÇÉ)le. ñ‡°dONLNdÌvÉÇâ) YW`°dONLNdÓvâÇõ)ou’r`@°dONLNdÚvõÇ)e likely to open a number °dONLNd Éäè°(åäof difÛ¿°dONLNdÉ°è≠)fer÷@°dONLNdÉ≠è¡) ent r¯†°dONLNdÉ¡èŸ)esour@‡°dONLNdÉ⁄èÎ)ce fiÄ°dONLNd$ÉÏè)Eles at various points in your application’s execution. For instance, °dONLNdiêäúÔ(ôämany applications storb@°dONLNdêÔú)e
  5172. e the user«°dONLNdâêúP)+’s general pra °dONLNdñêQúa)7efer@°dONLNdöêbúì) ences in a r‡°dONLNd¶êìú´)1esourf °dONLNd´ê´úº)ce fi,¿°dONLNd∞êΩú‚)
  5173. le in the °dONLNd∫ùä©›(¶äPreferences folderà‡°dONLNdÃù›©:)S in the System FolderÄ°dONLNd·ù:©Û)],. In addition, if your application supports °dONLNd™ä∂ø(≥ä
  5174. document fiΔ¿°dONLNd™ø∂ˆ)5les, you’ll pr††°dONLNd&™ˆ∂')7 obably stor÷¿°dONLNd1™'∂)14e some of the document’s settings in the document’s °dONLNde∑ä√ç(¿ärE°dONLNdf∑é√¶)esourç@°dONLNdk∑¶√∑)ce fiS‡°dONLNdp∑∏√ƒ)le. ‡°dONLNdt∑≈√À)T;†°dONLNdu∑ √Ï)able 3-1I °dONLNd}∑Ï√ê)"& summarizes the typical locations of r°dONLNd£∑ë√©)•esour\@°dONLNd®∑©√Î)ces used by an °dONLNd∑ƒä–æ(Õä application.°dONLNdç¬äŒ∏*˛    When sear8°dONLNdñ¬πŒ◊)/ching rÄ°dONLNdù¬ÿŒ)esourO¿°dONLNd¢¬Œ)ce fi`°dONLNd߬Œ)les, th °dONLNdƬŒB)e ResourY°dONLNd∂¬BŒq)&    ce Manage≤@°dONLNdø¬qŒ )/r generally begins wô@°dONLNd”¬ÀŒ)Zith the most °dONLNd‡œä€ç(ÿärE°dONLNd·œé€ )ecently opene0°dONLNdÓœÀ€Ê)=d one.\@°dONLNdٜʀb) When you ask it to open a rZ¿°dONLNdœb€z)|esour£°dONLNdœz€)#ce of a particular type and ID, it °dONLNd8‹äËê(Âäfiå¿°dONLNd:‹êËÊ)rst looks in the currd`°dONLNdO‹ÊË˙)Vent rÜ¿°dONLNdT‹˙Ë)esourœ°dONLNdY‹Ë#)ce fidONLNd^‹$Ëi)le. If the ResourÕ†°dONLNdo‹iË«)Ece Manager doesn’t fiô °dONLNdÑ‹»Ë)_nd the specifi—¿°dONLNdí‹Ë);ed °dONLNdïÈäıç(ÚärE°dONLNdñÈéı¶)esourç@°dONLNdõȶı√)ce therÈÄ°dONLNd¢È√ı%)e, it then looks in the r@°dONLNdªÈ&ı>)cesourPÄ°dONLNd¿È>ıO)ce fi °dONLNd≈ÈPıß)le opened just befor˛°dONLNdŸÈ¶ı–)V
  5175. e the curr‘°dONLNd„È–ı‰)*ent rˆ`°dONLNdËȉı¸)esour>†°dONLNdÌÈ˝ı)ce °dONLNdˆäê(ˇäfiå¿°dONLNdÚˆêú)le. ‡`°dONLNdˆˆú‡) As long as the rÇ`°dONLNdˆ·˘)Eesour †°dONLNd ˆ˘)ce rIÄ°dONLNdˆ    Ü)emains unfound, the ResourG†°dONLNd)ˆÜ    )}ce Manager continues until it °dONLNdGäç( ärE°dONLNdHé”)eaches the last r·°dONLNdY”Î)Eesour)@°dONLNd^Ï˝)ce fiÔ‡°dONLNdc˝q)le in the chain, which is prÛ@°dONLNdq«)tobably the system r˚°dONLNdí«fl)VesourC@°dONLNdó‡Ò)ce fi    ‡°dONLNdúÚ)le. If °dONLNd£ä∂(ä
  5176. the specifiKÄ°dONLNdÆ∑»)-ed ru‡°dONLNd≤»‡)esouræ °dONLNd∑‡)ce isn’t therö¿°dONLNdƒ3)3e either©°dONLNdÃ3g)  , the Resour¸†°dONLNdÿgÔ)4ce Manager gives up and notifi·†°dONLNdˆ)âes your °dONLNd˛ä)Ê(&äapplication that the rØ`°dONLNdÊ)˛)\esour˜†°dONLNd˛)N)ce can’t be found. 
  5177. ÛH˚4ÙH˚ ˜ä˜
  5178. ˇ·ˇ‚7^    °dONLNdƒÈäÙ±(Òä    Table 3-1°dONLNdŒÈ»ÙÕ)>TÄ–°dONLNdœÈÕÙ>)ypical locations of resources°dONLNdÌä ª(    ä
  5179. Resource fić°dONLNd¯ª ¬)1lesK°dONLNd˚ ä)bResources contained in fiÛ{°dONLNdä ë)mle
  5180. °dONLNdä∞(äSystem r∞‡°dONLNd ∞»)&esour˘ °dONLNd%»Ÿ)ce fiø¿°dONLNd*⁄·)lesK°dONLNd-?)CStandarßã°dONLNd4?ı)")d elements of the Macintosh user interfac∂k°dONLNd]ı¸)∂e sK°dONLNd_& (#(«+°dONLNd` &∞)!such as fonts, sounds, and icons)%K°dONLNdű&Δ)ë sharx´°dONLNdÜΔ&Ó)
  5181. ed by all sK°dONLNdê%1R(. applicationsg+°dONLNdú%S1Ü)6 , and code r‰k°dONLNd®%Ü1û)3esour,´°dONLNd≠%ü1˝)ces that manage user sK°dONLNd¬0<œ(9(interface elements (such as menus, contr´´°dONLNdÍ0œ<Ù)≤    ols, and sK°dONLNdÛ;GI(Dwindows)°dONLNd˝MäYƒ(VäApplication rC °dONLNd
  5182. M≈Y›);esourã`°dONLNdM›YÓ)ce fiR°dONLNdMÔYˆ)lesK°dONLNdMY<).Resouriã°dONLNdM<Y•)ces containing static dat’ °dONLNd6M•Y)ia (such as menu titles, sK°dONLNdNXd†(amenu items, and text strings) û´°dONLNdlX†d)Éused by the applicatio!À°dONLNdÇXd)bn°dONLNdÖjäv (säApplication prE@°dONLNdìjÀv€)AeferÒ`°dONLNdój€v˚)ences fiê°dONLNdüj¸v)!lesK°dONLNd¢jv<)!Resouriã°dONLNd®j<vö)ces encoding the user‡Î°dONLNdΩjõvÃ)_ ’s global pr    K°dONLNd…jÕv›)2eferµk°dONLNdÕj›v)
  5183. ences for sK°dONLNd◊uÅ_(~the application°dONLNdËáäìæ(êä
  5184. Document r Ä°dONLNdÚáøì◊)5esourh¿°dONLNd˜á◊ìË)ce fi/`°dONLNd¸áÈì)lesK°dONLNdˇáì<)4Resouriã°dONLNdá<ìŸ)$ces used only in this document, or r¢K°dONLNd)áŸìÒ)ùesourÍã°dONLNd.áÒì)    ces that sK°dONLNd7íû˝(õ/govern the appearance of the document’s window sK°dONLNdfù©†*  (such as its location on the scr«Î°dONLNdÜù†©≤)Éeen)ˇAŒ@ˇ ˇˇˇˇ@
  5185. ˇ·ˇ‚7^
  5186. 4*\¯, Palatino&e.3+l"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@l    Resources4⁄*˙¯
  5187. (‡*54    )BAbout Resources4^*¿¯
  5188. °dONLNd\lhÑ(elFigurR¿°dONLNd\Ñhò)e 3-1@°dONLNd
  5189. \òh) illustrates a typical searK¿°dONLNd%\hç)kch path followed by the ResourY†°dONLNdC\çhÒ)äce Manager as it looks °dONLNdZilu≈(rlfor a particular font.
  5190. ó*®¯4ò*®¯"ò*]
  5191. ˇ·ˇ‚7^    °dONLNdqçlòñ*#
  5192. Figure 3-1°dONLNd|çÆò)BSearching for a resource
  5193. Ú*ˇ¯4Ú*ˇ¯°dONLNdïÒl¸(˘lNote
  5194. ˇ·ˇ‚7^
  5195. °dONLNdö˝l    s*UG@°dONLNdõ˝t    ¬)nlike the system rM†°dONLNd≠˝¬    ⁄)NesourdONLNd≤˝⁄    Î)ce fi\Ä°dONLNd∑˝Ï    `)le and your application’s rz °dONLNd“˝`    x)tesour¬`°dONLNd◊˝x    â)ce fiâ°dONLNd‹˝ä    û)le, a °dONLNd‚    l¶(l document’s rÉ@°dONLNdÓ    ¶æ):esourÀÄ°dONLNdÛ    æœ)ce fií °dONLNd¯    –Ø)1le is not automatically opened when you open the °dONLNd)l! (ldocument’s data forkÁÄ°dONLNd= !u)^'. If you want to include a document’s r `°dONLNddu!ç)´esour†°dONLNdié!Æ)ce fork °dONLNdq!l-…(*lin the chain of open r3Ä°dONLNdá! -‚)^esour{¿°dONLNdå!‚-Û)ce fiB`°dONLNdë!Ù-)les,±`°dONLNdï!-) yo6°dONLNdò!-)u néÄ°dONLNdõ!-3)eed tˇ‡°dONLNd†!3-@)o oj‡°dONLNd£!A-K)pe6†°dONLNd•!L-ã) n it explicitly (fi@°dONLNd∂!ã-ö)?for .°dONLNd∫-l9à(6linstan°dONLNd¿-à9ë)ce°dONLNd¬-ë9¡)     , using the ,
  5196. Courier°dONLNdŒ-¡9    )0 HOpenResFile°dONLNd⁄-    9)H rR`°dONLNd‹-9+)outineR`°dONLNd‚-+92)).,Zapf Dingbats.R`°dONLNdÌ078<) u
  5197. °dONLNdÔ>lJfl(GlIn general it’s best not to rÑ`°dONLNd >flJX)sely too much on the Resour™ °dONLNd&>XJã)y
  5198. ce Manager≥`°dONLNd0>åJ—)4’s ability to searÕ`°dONLNdB>—J›)Ech °dONLNdEKlWy(TlthrX¿°dONLNdHKyWÆ) ough open rÄ°dONLNdSKØW«)6esourU¿°dONLNdXK«Wÿ)ce fi`°dONLNd]KŸW£)0les; instead, you should explicitly set the appr °dONLNdçK£W»)     opriate r؆°dONLNdñK»W‡)%esour˜‡°dONLNdõK‡WÎ)ce .°dONLNdûXlds(alfi°dONLNd†Xsd≠)le as the currR`°dONLNdÆX≠d¡):ent r$¿°dONLNd≥X¡dÿ)esour˜ °dONLNd∏X◊dÈ)ce fi˜ °dONLNdΩXÈd')le (by calling ˜ °dONLNdÃX'dc)>
  5199. SetResFile˜ °dONLNd÷XcdÄ)<) befor…Ä°dONLNd›XÄdù)e you rõ‡°dONLNd‰XùdÈ)ead or write any .°dONLNdıelqo(nlrE°dONLNdˆepqà)esourç@°dONLNd˚eàq )ce data. In addition, you can r˘°dONLNde qW)Éestrict the Resour£@°dONLNd,eXqã)M
  5200. ce Manager¨Ä°dONLNd6eåqß)4’s sear¸`°dONLNd=eßqŒ)
  5201. ch for a r?°dONLNdGeœqÁ)(esourá@°dONLNdLeÁqÚ)ce °dONLNdOrl~ô({l to the currD@°dONLNdZrö~Æ).ent rf†°dONLNd_rÆ~Δ)esourƇ°dONLNddrΔ~◊)ce fiuÄ°dONLNdirÿ~J)le by using special Resour @°dONLNdÉrK~Ñ)s ce Manager rú °dONLNdèrÑ~§)9outinesÄ°dONLNdñr•~Â)!. For example, .°dONLNd•lãu(àlin°dONLNdßuãΩ)    stead of calling °dONLNd∏Ωãˇ)H GetResource°dONLNd√ˇã;)B, you can call °dONLNd“;ãÉ)< Get1Resource°dONLNdfiÉã¥)H . This instrl°dONLNdÍ¥ãŸ)1    ucts the .°dONLNdÛålòã(ïlResourv@°dONLNd˘åãò) ce Manager to look only in the fi>¿°dONLNdåò+)èrst rı¿°dONLNdå+òC)esour>°dONLNd$åDòU)ce fi†°dONLNd)åVòæ)le in the chain of open rÍ °dONLNdBåΩò’)gesour2`°dONLNdGå÷òÁ)ce fi˘°dONLNdLåÁòı)les.
  5202. ®kÿ¯4ßj®kò2@ç@ç®k˯œœ?‰ˇÄÓ?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Óò2@Äç@ÄçËk(¯?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Óò2Ä¿çÄ¿ç(kh¯?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Óò2¿ç¿çhk®¯?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Óò2@ç@ç®k˯?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó?‰ˇ¿Ó‰ˇ¿Óœœœœœœœœœœœœœœœœœœœò2@Äç@ÄçËk(¯œœœœœœœœœœœœœœ;Ç0` fiEÑ fiÖå"¶,v{¥Œ+LÊêî$…4⁄l$X *QIí(ʆ§ä$ê$öH$PQQ Pʆ —~LM(íH(`&`°í `Ê¿!QYM0I†,å¶∫$àʇÄ~ é' I‰pF w“pÊÙà@fiÙâÄfiÙq›œœœ‡É ‡@Δ"›ñ;@ 4Δ∑8ÎBê¥ì"H‚öNl°JI,“E-ÉëYñVH‚ö$IARJ“DâÇíê‚ôÅdöîÑJÑ£ §¬–‚òÆ"D≤P∂öSàƒ`…`‚§ÓI√\Mù$cí pɆé‚@‚ı ‹œœœœœ¯˛Äa鲠    0@ Áà˚íQ $IÄÁÜçìºÄ$Y sÑì(É ãÅnp(Ñ∞È„≠('I@ƒV§åñŸA@ä@îêŸJHÈ"IPÄ#¢¢§íÄÄt@î@íîHÈ&R`
  5203. #!"¡•3Ä$A!3àÈ,ìàLL@"$ i…\A†$DÅm!\b∞ÈÑípwsÉÃNéìÜ@yÉâ¿ìù@Ȉ˘˛Ëˆ˘˛Ëˆ8˘˛ÄÈœœœœœœœœœœœò2Ä¿çÄ¿ç(kh¯œœœœœœ˛w˛@<0›H˛$˛¿ flàÑ HRœF!=‹Ì‡ë[m pìRC !f))‡‚íH†P£DB !DR    ‡ÉH†Q"H‰@BHb‡L0¿âr“$`DàäZh‡ÉúpÅ›§úåÙ@¯Ëqëà‡ ˛"àÄ˛ÄŸ˛"⑲v‘œœœ t¸‹`0à˛Ä‹¢À!    “k¬–±Äfi°$¢Ç5§§Ö`“@fi!$•)$®ä@‘›Ú(Δ*H… Äî›ÀhÇ4“k]ëÄ¥Äfi}G√TiÇ#fi˝€ ˝ÿ 8˝8ÿœœœ 0t@˝Ä¿fi` ,¿A fi†ß Hä?—ºÌÇ fi£höPHíJbI fi"H¢†Hî"BIÑ fiÙ–¢¿ë$Ñ“Ñ@fis-ôÆñÖöhÑÄfizL·—4‰Çqà›œœœœœœœœœœœœœœœœœœœœœœò2¿ç¿çhk®¯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@ç@ç®k˯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@Aç@AçËkȯœò2@ç@ç®k˯œœ„3Ì„@Ó –„¿Ó„@Ó„¿Ó –„@Ó –„¿Ó„@Ó„¿Ó –˝Î@Ó  ˛◊˝ñ>hÏ¿Ó˝&X@Ï@Ó˝&T@Ï¿Ó  ˛ŸíHÿ„@Ó –„¿Ó ¸?Í@Ó ¸xòÍ¿Ó     ˝–÷ ˝Í@Ó
  5204.  ˛"8÷ ˝Í¿Ó ˝ÿÍ@Ó ˝âÿÍ¿Ó
  5205.  ˛ÿ÷ ˝ÿÍ@Ó
  5206.  ˛/¯÷ ˝ÿÍ¿Ó ˝8ÿÍ@Ó ˝¯¯Í¿Ó
  5207.  ˛p¯÷ ˝Í@Ó
  5208.  ˛ˇ¯÷„¿Ó„@Ó ¸ÄÍ¿Ó     ˝Ä÷ ¸ÄÍ@Ó     ˝Ä÷ ¸ÄÍ¿Ó ¸ÄÍ@Ó„¿Ó –
  5209. ÿ ¿Ó@Ó
  5210.  ÿ ¿⁄
  5211. €ˇÃ˜Û˜Û‡Ó¿Ó
  5212. flΩÌÔ˚flç˚Ó@Ó
  5213. €ˇÏ¸˚«ç˚Ó¿Ó
  5214.  wùÌÁ˚è{⁄
  5215. ˘ Ï@Ó ˙ ÿ„¿Ó„@Ó?ˇˇ¯ˇˇ¿Ï¿Ó   ćÿ Ä∞Ï@Óò2@Äç@ÄçËk(¯   Äòÿ ÄåÏ¿Ó ÄÜÏ@Ó ÄÉÏ¿Ó      ÄÅÄŸ     ÄÄ¿Ì@Ó      ÄÄ`Ÿ     ÄÄ0Ì¿Ó     ÄÄÌ@Ó     ÄÄ Ì¿Ó      ÄÄŸ     ÄÄÌ@Ó
  5216.   ÄÄÄ⁄
  5217.  ÄÄ¿Ó¿Ó
  5218.  ÄÄ`Ó@Ó
  5219.  ġˇÓ¿Ó  IJ8⁄ IJ8Ó@Ó  IJ8⁄ IJ8Ó¿Ó IJ8Ó@Ó IJ8Ó¿Ó  IJ8⁄ IJ8Ó@Ó  IJ8⁄ IJ8Ó¿Ó IJ8Ó@Ó IJ8Ó¿Ó  IJ8⁄ IJ8Ó@Ó  IJ8⁄ IJ8Ó¿Ó IJ8Ó@Ó IJ8Ó¿Ó  IJ8⁄ IJ8Ó@Ó  IJ8⁄ IJ8Ó¿Ó IJ8Ó@Ó IJ8Ó¿Ó  IJ8⁄ IJ8Ó@Ó  IJ9Ä€ IJ9¿Ô¿Ó IJ9`!@Ù@ӠIJˇ∞"@Ù¿Ó  Ä˛Δwiq¿‡ IJ)"ôJ@Ù@Ó  Ä
  5220. ˛"-)"ôJ@‡ IJ&2gI¿Ù¿Ó  Ä _ˇˇpÔ@Ó  Ä9‡Ô¿Ó   Ä@9¿€  Ä    @9É@Ó   Ä
  5221. @90‹  Ä@8¿Ó  Ä @8P@Ó  Ä¿8ê¿Ó   Ä@8‹  Ä@8@Ó   ¿@80‹  @8¿Ó  DD@8P@Ó àà¿?˛üˇÄÚ¿Óò2Ä¿çÄ¿ç(kh¯  ¿8¿fi Ä8‡Ú@Ó  ˇˇ80∞fi ˙8òÚ¿Ó 8˛8PåÚ@Ó $˛8êÜÚ¿Ó  $Õ-‹8Éfi %3*Ω(8ÅÄÛ@Ó  %1*°(80Ä¿fl 8ŒÍù,8Ä`Û¿Ó ˙8PÄ0Û@Ó ˙8êÄÛ¿Ó  ˙8Ä fl ˝8ÄÛ@Ó  ˝80Äfl ffNf>`8ÄÄÙ¿Ó O˘Lü8PÄ¿Ù@Ó HŸLàÄ8êˇˇ‡Ù¿Ó   Gf<wp8˛0‡ ˙8˛0Ù@Ó  ˙80˛0‡ ˙8˛0Ù¿Ó ˙8P˛0Ù@Ó?˙ˇ¯ê˛0Ù¿Ó ˙ˇ¯˛0‡˘@˛0˙˛ˇ¯@Ó ˙@0˛0˙˛Ï˘@˛0˙˛¿Ó˘@P˛0˙ˇ˛@Ó˘@ê˛0˙ àã¿Ó ˙@˛0˙Ï˘@˛0˙4@Ó ˙@0˛0˙f"#Ï˘@˛0˙ƒ¿Ó˘@P˛0˙Ñ@Ó˘@ê˛0˙¸àã¿Ó ˙@˛0˙Ï˘@˛0˙@Ó ˙@0˛0˙""#Ï˘@˛0˙¿Ó˘@P˛0˙@Ó˘@ê˛0˙àà˚¿Ó ˙@>˛0˙ÛÏ˘@˛0˙Û@Ó ˙@,˛0˙"#ÛÏ˘@˛0˙s¿Ó˘@p˛0˙s@Ó˘@‡˛0˙àú˚¿Ó ˙@˛¿˛0˙8sÏ˘@˙0˙Û@Ó ˙@˛˛0˙"ˇÛÏ˘@˛0˚0¿s¿Ó˘@˛0˚8Äs@Ó˘@:ä˛0˚,èà˚¿Ó ˙@>¯ˇÊsÏ˘@ ¯>˚@Ó ˙@""¯"#í>"˚Ï˘@ ¯í¿Ó˘@ :¯DG@Ó˘@(˙¯ˇÓ˛ˇ¿Ó ˙@ ⁄ ˘,˛ˇÏ˘@!˙@˚8˛@Ó ˙@#:˚0˛Ï˘@&˜ ˛¿Óò2¿ç¿çhk®¯˘@.˘˛ˇ¯@Ó˘@(ä¿Ó ˙@?˛˛  ·˘@˙0ˇˇ¸0@Ó ˙@˙0Ä˝`΢@˙0¿˝˛€fi¿Ó˘@˙0`˝s€v@Ó˘@˙00˝s€v¿Ó ˙@¿˛0˝~{~΢@(IJ0 ¯@Ó ˙ @)‹ÕŒn0‰˘ @92“fô0¯¿Ó˘@E2—¶ô0Ģ@Ó˘@E‹ŒÊi0¿˘¿Ó ˙@¸0`¢@¸0@0˘@Ó ˙@¸0¢@˝0 ˘¿Ó˘@˝    0˘@Ó˘@f3Nf00˘¿Ó ˙@O|Ãüx0ÄÊ˘@HlÃà@0ˇˇ¿˙@Ó ˙    @G3<w80˝`Ê˘@˙0¸`˙¿Ó˘@˙0˛`˙@Ó˘˙ˇ˛`˙¿Ó ˙?˙ˇ¸`Ê˘?˙ˇ¸`˙@Ó  ÙÄ˙`ÊÛIJIJ`˙¿ÓÛÄ˙`˙@ÓÛIJIJ`˙¿Ó ÙIJ˛`ÊÛÄ˙`˙@Ó ÙIJ˛`ÊÛÄ˙`˙¿ÓÛÄ˙`˙@ÓÛÄ˙`˙¿Ó  ÙÄ˙`ÊÛIJ@˛`˙@Ó  ÙÄ˙`ÊÛÄ˙`˙¿ÓÛIJ˛`˙@ÓÛÄ˙`˙¿Ó  ÙÄ˙`ÊÛÄA@`˙@Ó ÙÄ `ÊÛIJÄÄ`˙¿ÓÛIJA˛`˙@ÓÛÄ˙`˙¿Ó ÙIJ˛`ÊÛIJ˛`˙@Ó  ÙÄ˙`ÊÛÄ˙`˙¿ÓÛÄ˙`˙@ÓÛÄ˙`(˛¿Ó ÙÄ"˛`(ÍÛÄ˝`Á~Œ˛@Ó ÙÄ˝`ë©$ÍÛ ÄÄ`ñ©$˛¿ÓÛÄ˙`„πΔ˛@ÓÛ    ÄÄ`Ä˚¿Ó ÙIJ˛`ÄÁÛIJ˛`Ä˚@Óò2@ç@ç®k˯ ÙIJ˛`AÁÛ    ÄÄ`A˚¿ÓÛIJT˛`˘l‡˝@ÓÛ ÄÃÄ`Mûê˝¿Ó ÙIJ˛`uPêÈÛIJ`}.ê˝@Ó ÙIJ`ÊÛÄàÄ`˙¿ÓÛÄ˙`˙@ÓÛÄ˙`˙¿Ó  ÙÄ˙`ÊÛÄ<¸`˙@Ó ÙÄ@¸`ÊÛÄ:€ÊIJ`˙¿ÓÛÄΩı@˛`˙@ÓÛÄFµÖ@˛`˙¿Ó ÙÄ9ı@˛`ÊÛÄ˚`˙@Ó ÙÄ˚`ÊÛÄ˙`˙¿ÓÛÄ˝
  5222. `˙@ÓÛÄ˝`˙¿Ó ÙÄlfñÃ:``ÊÛÄ^˘ï>`˙@Ó ÙÄPŸïÄ`ÊÛÄNftÓp`˙¿ÓÛÄ˙`˙@ÓÛÄ˙`˙¿Ó  ÙÄ˙`Ê Û˘ˇ‡˙@Ó  Ù˙ˇ‡ÊÛ˙ˇ‡˙¿Ó„@Ó„¿Ó –„@Ó –„¿Ó„@Ó„¿Ó –„@Ó – ‰Ã¿Ó‰U@Óœœœœœœœœœœœœœœœœœœœò2@Äç@ÄçËk(¯œœœœœœœœœœœœœœ;Ç0` fiEÑ fiÖå"¶,v{¥Œ+LÊêî$…4⁄l$X *QIí(ʆ§ä$ê$öH$PQQ Pʆ —~LM(íH(`&`°í `Ê¿!QYM0I†,å¶∫$àʇÄ~ é' I‰pF w“pÊÙà@fiÙâÄfiÙq›œœœ‡É ‡@Δ"›ñ;@ 4Δ∑8ÎBê¥ì"H‚öNl°JI,“E-ÉëYñVH‚ö$IARJ“DâÇíê‚ôÅdöîÑJÑ£ §¬–‚òÆ"D≤P∂öSàƒ`…`‚§ÓI√\Mù$cí pɆé‚@‚ı ‹œœœœœ¯˛Äa鲠    0@ Áà˚íQ $IÄÁÜçìºÄ$Y sÑì(É ãÅnp(Ñ∞È„≠('I@ƒV§åñŸA@ä@îêŸJHÈ"IPÄ#¢¢§íÄÄt@î@íîHÈ&R`
  5223. #!"¡•3Ä$A!3àÈ,ìàLL@"$ i…\A†$DÅm!\b∞ÈÑípwsÉÃNéìÜ@yÉâ¿ìù@Ȉ˘˛Ëˆ˘˛Ëˆ8˘˛ÄÈœœœœœœœœœœœò2Ä¿çÄ¿ç(kh¯œœœœœœ˛w˛@<0›H˛$˛¿ flàÑ HRœF!=‹Ì‡ë[m pìRC !f))‡‚íH†P£DB !DR    ‡ÉH†Q"H‰@BHb‡L0¿âr“$`DàäZh‡ÉúpÅ›§úåÙ@¯Ëqëà‡ ˛"àÄ˛ÄŸ˛"⑲v‘œœœ t¸‹`0à˛Ä‹¢À!    “k¬–±Äfi°$¢Ç5§§Ö`“@fi!$•)$®ä@‘›Ú(Δ*H… Äî›ÀhÇ4“k]ëÄ¥Äfi}G√TiÇ#fi˝€ ˝ÿ 8˝8ÿœœœ 0t@˝Ä¿fi` ,¿A fi†ß Hä?—ºÌÇ fi£höPHíJbI fi"H¢†Hî"BIÑ fiÙ–¢¿ë$Ñ“Ñ@fis-ôÆñÖöhÑÄfizL·—4‰Çqà›œœœœœœœœœœœœœœœœœœœœœœò2¿ç¿çhk®¯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@ç@ç®k˯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@Aç@AçËkȯœˇ:@ˇ ˇˇˇˇ@
  5224. ˇ·ˇ‚7^
  5225. 4H\, Palatino&e.3+ä"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@ä    Resources4⁄ä˙(‡äAbout Resources
  5226. (‡ 55
  5227. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5228. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5229.  
  5230.  
  5231.  
  5232.  
  5233.  
  5234. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  5235. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5236. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5237.  
  5238.  
  5239.  
  5240.  
  5241.  
  5242. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜
  5243. ˛ˇ˛ˇˇ ˇˇ˛ˇˇ     ˇˇˇ˙ˇ
  5244. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  5245. 454+?òÄ
  5246. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5247. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5248.  
  5249.  
  5250.  
  5251.  
  5252.  
  5253. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˛˙ˇ˚ˇˇ˚ˇˇ˚ˇˇ    ˛˛ˇˇˇ˜˝˛ˇ˛
  5254. ˛ˇˇˇˇ
  5255. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜    ˛ˇˇ˛
  5256. ˛ˇˇˇˇ
  5257. ˛ˇˇˇˇ    ˝ˇˇˇ˝˛ˇ˛
  5258. ˛ˇ˛ˇˇ
  5259. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  5260. ˛ˇ˛ˇˇ
  5261. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  5262. ˛ˇˇˇˇ
  5263. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  5264. ˛ˇˇˇˇ
  5265. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  5266. kHr4lHr mäm
  5267. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd\äk»(gä    Resource Δ˛°dONLNd    \»k–)>Tkå°dONLNd
  5268. \–kÌ)ypesˇˇˇˇˇˇ€r(g3
  5269. °dONLNdrä~Á({äAs indicated above, r  °dONLNd$rË~)^esourT`°dONLNd)r~)ces ar@°dONLNd/r~))e grÆ°dONLNd3r)~π)!ouped logically by function into Œ@°dONLNdTrπ~¸)êresource types.臰dONLNdcr˝~ˇ)D ‚@°dONLNddrˇ~)Y¢¿°dONLNder~)ou °dONLNdhäãç(àärE°dONLNdiéã∏) efer to a r†°dONLNdt∏ã–)*esourc‡°dONLNdy–ã=)ce by passing the ResourM °dONLNdë=ãz)mce Manager a ô°dONLNdûzã¿)=resource specifi◊Ä°dONLNdÆ¿ãfi)Fcation,`°dONLNdµflãˇ) which °dONLNdºåäòŒ(ïäconsists of the r†°dONLNdÕåœòÁ)EesourL‡°dONLNd“åÁòç)$ce type and an ID number or a name. g`°dONLNdˆåçò¶)¶Any r‘ °dONLNd˚å¶òæ)esour`°dONLNdåøò)ce type is valid, °dONLNdôä•Ì(¢äwhether one of those rp¿°dONLNd(ôÌ•@)cecognized by the T¯@°dONLNd:ô?•o)R oolbox as rÛ`°dONLNdEôo•»)0eferring to a standarr°dONLNdZô…•)Z d Macintosh °dONLNdf¶ä≤ç(ØärE°dONLNdg¶é≤¶)esourç@°dONLNdl¶¶≤\)+ce (such as a pattern), or a custom type cr¡°dONLNdó¶\≤Ó)∂!eated for use by your application» °dONLNd∏¶Ó≤)í.
  5270. ¿HŒ4¡HŒ    °dONLNd∫øä ù(«äNote
  5271. ˇ·ˇ‚7^
  5272. °dONLNdøÃäÿº*
  5273. The Resour≤°dONLNd…úÿ£)22ce Manager knows nothing about the formats of the °dONLNd˚ÿ䉉(·äindividual types of r¿`°dONLNdÿ‰‰¸)Zesour†°dONLNdÿ˝‰<)ces. Only the rF†°dONLNd$ÿ<‰»)?"outines in the other parts of the °dONLNdF‰äê(ÌäTµ¿°dONLNdG‰èj)0oolbox and Operating System that call the Resourò °dONLNdw‰j )€ce Manager have this °dONLNdåä¸Ω(˘ä
  5274. knowledge.,Zapf DingbatsSÄ°dONLNdüÛ√˚»)9u
  5275. °dONLNd°äë(
  5276. äA∫†°dONLNd¢ëó) rˇ†°dONLNd§óØ)esourG‡°dONLNd©∞˛)Kce type can be any sequence of four alphanumeric characters, including the °dONLNdÙäÕ(äspace character^¿°dONLNdÕ“)C. 1 °dONLNd“ÿ)YÒ†°dONLNd◊ˇ)    ou can cr °dONLNdˇ)(eate rˇ¿°dONLNd/)esourH°dONLNd0Ω)!ce types for your application, prîÄ°dONLNd;Ω)çovided that theÕ@°dONLNdJ)Cy °dONLNdLä'é($äc@°dONLNdMé'›)onsist of all upperê°dONLNd`fi'X)Pcase letters and do not conflÇ`°dONLNd}Y'Æ){ict with the standarˇ`°dONLNdëÆ'∫)Ud r` °dONLNdîª'”)esour®`°dONLNdô”'˘)    ce types .°dONLNd¢(ä4ò(1äalrR`°dONLNd•(ò4π)eady cr$¿°dONLNd¨(π4ÿ)!eated. Δ`°dONLNd≥(◊4fl)A9¿°dONLNd¥(fl4Â) r  °dONLNd∂(Â4¸)esourfiÄ°dONLNdª(˚49)ce type is defifiÄ°dONLNd (94j)> ned by the ,
  5277. CourierfiÄ°dONLNd’(j4î)1ResTypefiÄ°dONLNd‹(î4Δ)*  data type:°dONLNdË?äKÜ(Hä*TYPE ResType = PACKED ARRAY[1..4] OF CHAR;
  5278. ZHh4[Hh.°dONLNd[äc©*IMPORTÄ°dONLNd[©cπ)ANT
  5279. ˇ·ˇ‚7^
  5280. °dONLNdfär¶(oäUpper⁄ °dONLNd"f¶r≥)casá`°dONLNd%f¥ræ)e lπ`°dONLNd(fær·)
  5281.     etters arF°dONLNd1f‚r()$e distinguished ø@°dONLNdAf(r/)Ffrÿ °dONLNdCf/rp)om their lowerÄ°dONLNdQfqr¿)Bcase counterparts ≈`°dONLNdcf¿rÀ)Oin °dONLNdfrä~ç({ärE°dONLNdgré~¶)esourç@°dONLNdlr¶~)ce types. In addition, `°dONLNdÉr~&)_Apple rΔ‡°dONLNdär&~û)!eserves for its own use all rõ¿°dONLNdßrû~∂)xesour‰°dONLNd¨r∂~¡)ce °dONLNdØ~ää(áätypes that include any lowerS@°dONLNdÀ~äb)~case letters. If you crmÄ°dONLNd‚~bäù)Zeate custom rH`°dONLNdÔ~ùäµ);esourꆰdONLNdÙ~µä¿)ce °dONLNd˜ääñI(ìä+types for use by your application, make sur%‡°dONLNd"äJñ¿)¿e that the type includes all °dONLNd?ñ䢧(üäupper°dONLNdDñ•¢◊)case letters.¿‡°dONLNdZô‹°‚)7s
  5282. °dONLNd\ßä≥ê(∞äTµ¿°dONLNd]ßè≥±)able 3-2√@°dONLNdeß±≥Ç)"0 lists the names and uses of some of the standar`°dONLNdïßÉ≥è)“d rd °dONLNdòßè≥ß) esour¨`°dONLNdùßß≥)ce types used by the °dONLNd≤¥ä¿˝(ΩäMacintosh system softwar3`°dONLNd ¥˛¿$)te. UpperW °dONLNd“¥$¿<)&case r°dONLNdÿ¥=¿U)esour[@°dONLNd›¥U¿m)ces ar °dONLNd„¥n¿ñ)
  5283. e listed fi#°dONLNdÓ¥ñ¿£)(rst.
  5284. „HÎ4‰HΠÁäÁ
  5285. ˇ·ˇ‚7^    °dONLNd۟䉱(·ä    Table 3-2°dONLNd˝Ÿ»‰B)>Some standard resource types∞°dONLNdˇˇ){ °dONLNd%Ò主(˘äResource type≥3°dONLNd3Ò›¸)SMeaning
  5286. .°dONLNd<ˇä Æ(ä'ALRT'.≥3°dONLNdCˇ› /)SAlert box template.°dONLNdWäÆ(ä'CODE'.≥3°dONLNd^›P)SApplication code segment.°dONLNdx#ä/Æ(,ä'CURS'.≥3°dONLNd#›/˚)SCursor.°dONLNdá5äAÆ(>ä'DITL'.≥3°dONLNdé5›Ag)S"Item list in a dialog or alert box.°dONLNd≤GäSÆ(Pä'DLOG'.≥3°dONLNdπG›S6)SDialog box template.°dONLNdŒYäeÆ(bä'FONT'.≥3°dONLNd’Y›e")SBitmapped font.°dONLNdÂkäwÆ(tä'ICON'.≥3°dONLNdÏk›w)SIcon.°dONLNdÚ}äâÆ(Üä'MBAR'.≥3°dONLNd˘}›â)SMenu bar.°dONLNdèäõÆ(òä'MENU'.≥3°dONLNd
  5287. è›õ˜)SMenu.°dONLNd°ä≠Æ(™ä'PAT '.≥3°dONLNd°›≠P)SPattern (The space in the r3Û°dONLNd2°Q≠i)tesour|3°dONLNd7°i≠ò) ce type is rΩ≥°dONLNdC°ò≠Ø)/equir‘Û°dONLNdH°Ø≠ø)ed.)#…°dONLNdOµˆæ+G    continuedˇÍ@ˇ ˇˇˇˇ@
  5288. ˇ·ˇ‚7^
  5289. 4*\¯, Palatino&e.3+l"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@l    Resources4⁄*˙¯
  5290. (‡*56    )BAbout Resources4^*¿¯
  5291. °dONLNdE"l.r(+lY@Ä°dONLNdF"r.‡)ou pick out a particular r‡°dONLNd`"‡.¯)nesoure °dONLNde"¯.™)*ce by specifying its type together with a {¿°dONLNdè"™.Î)≤resource nameM¿°dONLNdú"Ï.Ó)B °dONLNdù/l;(8lor a Ë °dONLNd¢/;¥) resource IDÚ@°dONLNd≠/¥;Ÿ)5 number•@°dONLNd¥/Ÿ;T)% . In general, it’s best to use rÆ °dONLNd‘/T;l){esourˆ`°dONLNdŸ/l;…)ce IDs because they’r—°dONLNdÓ/…;–)]e °dONLNd<lH,(El*guaranteed to be unique within any given rj†°dONLNd<,HD)¿esour≤‡°dONLNd<DHU)ce fiyÄ°dONLNd$<VHÚ)'le. By contrast, it’s possible to have °dONLNdKIlUã(Rltwo dif9@°dONLNdRIåUò) fer¿°dONLNdUIòU¨) ent r> °dONLNdZI¨Uƒ)esourÜ`°dONLNd_IƒUz)(ces of the same type with the same name.
  5292. z*ů4{*ů |l|¯
  5293. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdàklzu(vlRwé°dONLNdâkvz‚)
  5294. esource Structureˇˇˇˇˇˇ€r(v3
  5295. °dONLNdõÅlçs(älA∫†°dONLNdúÅsçy) rˇ†°dONLNdûÅyçë)esourG‡°dONLNd£Åíç£)ce fiÄ°dONLNd®ŧçK)'le consists of a number of individual ry@°dONLNdœÅKçc)ßesour¡Ä°dONLNd‘Åcç∏)ces together with a l °dONLNdËÅπç·)V    resource °dONLNdÒélöÇ(ólmap,ˇ`°dONLNdıéÇö„) an indication of wher‡°dONLNd é„ö    )a
  5296. e in the rñ†°dONLNdé
  5297. ö")'esourfi‡°dONLNdé"ö3)ce fi•Ä°dONLNdé4öö)le the data for a given rÿ°dONLNd8éöö≤)fesour°dONLNd=é≥ö‡) ce is to be °dONLNdIõlßã(§lfound. °dONLNdPõåßí) Y–Ä°dONLNdQõëßR)+ou usually don’t need to know about the strK¿°dONLNd|õSßj)¬uctur—†°dONLNdÅõjßÍ)e—or even the existence—of °dONLNdú®l¥Ä(±lthe r¢`°dONLNd°®Ä¥ò)esour͆°dONLNd¶®ò¥Ó)ce map. The Resour¨†°dONLNd∏®Ô¥ï)W'ce Manager uses it to keep track of a r °dONLNdfl®ñ¥Æ)ßesourU`°dONLNd‰®Æ¥ø)ce fi°dONLNdÈ®¿¥—)le’s °dONLNdÓµl¡o(ælrE°dONLNdÔµp¡à)esourç@°dONLNdÙµà¡)#ces. If you lengthen or shorten a rÄ°dONLNdµ¡4)îesourL¿°dONLNdµ4¡R)ce, or r3¿°dONLNd$µR¡ã) emove one fr‡ °dONLNd0µã¡∞)9om the rðdONLNd8µ∞¡»)%esour@°dONLNd=µ…¡⁄)ce fi⁄‡°dONLNdBµ⁄¡‰)le °dONLNdE¬lŒÄ(Àlentir
  5298. ¿°dONLNdJ¬ÅŒé)ely0 °dONLNdM¬çŒ¡) , the ResourÉ¿°dONLNdY¬¡Œ)4ce Manager takes car›°dONLNdm¬Œt)\e of modifying the rㇰdONLNdŬuŒç)Xesour‘ °dONLNdܬçŒΔ) ce map accorˇ °dONLNdí¬ΔŒ‚)9dinglyøÄ°dONLNdò¬‚Œ‰).°dONLNdö‘l‡E(›l0Often, you don’t even need to know about the str˜@°dONLNd ‘E‡\)Ÿuctur} °dONLNdœ‘]‡¥)e of the individual r
  5299. @°dONLNd‰‘µ‡Õ)XesourRÄ°dONLNdÈ‘Õ‡)ces you °dONLNdÒ·l̆(Ílaccess in a r¢‡°dONLNd˛·†Ì∏)4esourΠ°dONLNd·∏Ì)ce fork. Sometimes yoÕ°dONLNd·Ì#)au j™‡°dONLNd·$Ì{) ust need to open a r¡@°dONLNd/·{Ìì)Wesour    Ä°dONLNd4·îÌŸ)ce and pass the °dONLNdDÓl˙§(˜l handle you r¡@°dONLNdPÓ§˙…)8    eceive frµ‡°dONLNdYÓ…˙    )%om the Resour”°dONLNdfÓ    ˙i)@ce Manager to some T‹†°dONLNdzÓi˙ç)`oolbox r¿°dONLNdÇÓé˙¿)% outine. Her= °dONLNdçÓ¿˙€)2e’s an °dONLNdî˚lì(lexample:,
  5300. Courier.°dONLNdùl*FOR count := 1 TO 4 DO°dONLNdµ ~,b+&gEmptyPats[count] := GetPattern(kEmpty°dONLNd€ b,z)‰ID +°dONLNdfl z,Œ) (count - 1));°dONLNdÔ<lHz(El-FillRgn(myRegion, gEmptyPats[gEmptyIndex]^^);°dONLNdÇléê(ãl'PICT'.≥3°dONLNdÇøé)SQuickDraw picturn°dONLNdÇé)Qe.°dONLNdîl†ê(ùl'SIZE'.≥3°dONLNd!îø†≤)S8Size of an application’s partition and other information.°dONLNd[¶l≤ê(Øl'STR '.≥3°dONLNdb¶ø≤-)SString (The space in the r’ì°dONLNd|¶-≤E)nesour”°dONLNdŶF≤u) ce type is r_S°dONLNdç¶u≤å)/equirvì°dONLNdí¶å≤ú)ed.).°dONLNdò∏lƒê(¡l'STR#'.≥3°dONLNdü∏øƒÈ)S String list.°dONLNd¨ l÷ê(”l'WIND'.≥3°dONLNd≥ ø÷…)SW&ì°dONLNd¥ …÷)
  5301. indow template.°dONLNdƒ‹lËê(Âl'hdlg'.≥3°dONLNdÀ‹øËd)S&Help for dialog box or alert box items.°dONLNdÛÓl˙ê(˜l'sfnt'.≥3°dONLNd˙Óø˙Ù)S Outline font.°dONLNdl ê(    l'snd '.≥3°dONLNdø /)SSound (The space in the r¡s°dONLNd(/ G)pesour    ≥°dONLNd-H w) ce type is rK3°dONLNd9w é)/equirbs°dONLNd>é û)ed.)
  5302. g*n¯4g*n¯ jlj¯
  5303. ˇ·ˇ‚7^    °dONLNdˇˇ(dl    Table 3-2°dONLNdˇˇ)>Some standard resource types∞°dONLNdˇˇ){  (continued)°dONLNdˇˇ(|lResource type≥3°dONLNdˇˇ)SMeaningˇ8®@ˇ ˇˇˇˇ@
  5304. ˇ·ˇ‚7^
  5305. 4H\, Palatino&e.3+ä"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@ä    Resources4⁄ä˙(‡äAbout Resources
  5306. (‡ 57
  5307. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5308. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5309.  
  5310.  
  5311.  
  5312.  
  5313.  
  5314. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  5315. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5316. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5317.  
  5318.  
  5319.  
  5320.  
  5321.  
  5322. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜
  5323. ˛ˇ˛ˇˇ ˇˇ˛ˇˇ     ˇˇˇ˙ˇ
  5324. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  5325. 454+?òÄ
  5326. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5327. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5328.  
  5329.  
  5330.  
  5331.  
  5332.  
  5333. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˛˙ˇ˚ˇˇ˚ˇˇ˚ˇˇ    ˛˛ˇˇˇ˜˝˛ˇ˛
  5334. ˛ˇˇˇˇ
  5335. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜    ˛ˇˇ˛
  5336. ˛ˇˇˇˇ
  5337. ˛ˇˇˇˇ    ˝ˇˇˇ˝˛ˇ˛
  5338. ˛ˇ˛ˇˇ
  5339. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  5340. ˛ˇ˛ˇˇ
  5341. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  5342. ˛ˇˇˇˇ
  5343. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  5344. ˛ˇˇˇˇ
  5345. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\äh(eä"At application startup time, the V¿@°dONLNd"\h£)ìenn Diagrammer application r¥ °dONLNd>\£h    )Üeads the four available °dONLNdViäuÁ(räemptiness patterns fr…‡°dONLNdkiÁuG)]om the application’s r‡°dONLNdÅiGu_)`esour9 °dONLNdÜi`uq)ce fiˇ¿°dONLNdãiquî)    le. Later¿°dONLNdîiïu)$, when it is drawing the °dONLNd≠väÇú(äcurrØ°dONLNd±vúLj)ent contents of the Vc`°dONLNdΔvˆÇ^)Zenn diagram, it might fi@`°dONLNdfiv_Çã)i ll a specifi@°dONLNdÍvãÇú),ed r©†°dONLNdÓvúÇ)egion with the curr °dONLNdvÒÇ)Uent °dONLNdÉäè®(åäBpattern. The application itself knows nothing about the actual str¶`°dONLNdGÉ®èø(å®uctur,@°dONLNdLÉ¿è¸)e of a pattern.°dONLNd\ïä°Ê(ûäSometimes, however‰‡°dONLNdnï°Ç)[#, you do need to know about the strÈ °dONLNdëïÇ°ô)ùucturo°dONLNdñïö°Ì)e of the individual °dONLNd™¢äÆç(´ärE°dONLNd´¢éƶ)esourç@°dONLNd∞¢¶Æ®)=ces you want to use in your application. This is certainly tr≠@°dONLNdÌ¢®Æ€(´® ue for any rflÄ°dONLNd˘¢€ÆÛ)3esour'¿°dONLNd˛¢ÙÆ)ces °dONLNdØäªÊ(∏äyour application defi'`°dONLNdØÁªK)]nes itself. OccasionallyY¿°dONLNd/ØJªZ)c, yo^`°dONLNd3ØZªg)u aÂÄ°dONLNd6Øgª)#lso need to know how the data in a °dONLNdYºä»Ø(≈äsystem rÆ °dONLNdaºØ»«)%esourˆ`°dONLNdfº«»Á)    ce is str≥†°dONLNdoºË»ˇ)!uctur9Ä°dONLNdtº»)ed. ‡°dONLNdxº»U)Inside Macintosh‡°dONLNdàºV»)F) uses two general methods for displaying °dONLNd±…ä’•(“äthe str;`°dONLNd∏…¶’Ω)uctur¡@°dONLNdΩ…Ω’€)e of a rô@°dONLNd≈…€’Û)esour·Ä°dONLNd …Û’") ce’s data: r¬¿°dONLNd÷…"’:)/esour °dONLNd€…;’ñ)ce descriptions and rï`°dONLNd…ñ’Æ)[esour›†°dONLNdı…Æ’Â) ce diagrams.°dONLNd€äÁ£(‰äThe fi»Ä°dONLNd€£Á¯)rst method used in ``°dONLNd€˘Á>)VInside MacintoshB`°dONLNd+€?Áè)F to describe the strÙÄ°dONLNd?€èÁ¶)Pucturz`°dONLNdD€ßÁ≈)e of a rR`°dONLNdL€≈Á›)esourö†°dONLNdQ€›Á) ce involves °dONLNd]ËäÙ((Òä%specifying a description in the Rez r¬`°dONLNdÇË(Ù@)ûesour
  5346. †°dONLNdáËAÙÆ)ce description language. Œ†°dONLNd†ËÆÙ‹)m Listing 3-1n‡°dONLNd´Ë›Ù)/  shows the °dONLNd∂ıä(˛ä Rez input for a sample dialog bol`°dONLNd÷ı!)êx.
  5347. $H,4%H,"%H_
  5348. ˇ·ˇ‚7^    °dONLNdŸä%∂("ä Listing 3-1°dONLNdÂŒ%n)D(Rez input for the Preferences dialog box,
  5349. Courier
  5350. .°dONLNd4H@Æ(=Hresource 'DLOG' (°dONLNd4Æ@)frVennDPrefsDial°dONLNd.4@\)Z, purgeable) {°dONLNdN4å@˛)Ñ/*dialog resource*/°dONLNdcBZNÃ(KZ{84, 82, 264, 362},°dONLNdB¸N§)¢/*rectangle for dialog box*/°dONLNdùPZ\Æ(YZnoGrowDocProc,°dONLNd¥P¸\D)¢ /*window def°dONLNd¿PD\n)Hinition°dONLNd«Pn\)* ID for modeless dialog*/°dONLNd‚^Zjä(gZvisible,°dONLNdÛ^¸jÄ)¢/*display this dialog °dONLNd    ^Äjò)Ñbox °dONLNd^òjÊ)immediately*/°dONLNdlZxÑ(uZgoAway,°dONLNd,l¸xt)¢/*draw a close box*/°dONLNdBzZÜr(ÉZ0x0,°dONLNdOz¸Ü)¢/*°dONLNdQzÜ8) initial °dONLNdYz8ÜD)0re°dONLNd[zDÜV) fCo°dONLNd^zVܺ)n value of zero*/°dONLNdqàZî¥(ëZrVennDPrefsDial°dONLNdÄà¥î∫)Z,°dONLNdäà¸î§)H/*use item list with res ID °dONLNd¶à§î˛)®rVennDPrefsDial°dONLNdµà˛î
  5351. )Z*/°dONLNdπñZ¢¸(üZ"Venn Diagram Preferences",°dONLNd›ñ¸¢\)¢/*window title*/°dONLNdÔ§Z∞¢(≠Z noAutoCenter°dONLNd§¸∞)¢/°dONLNd§∞Ú)(*don't automatically center the window*/°dONLNd.≤HæT(ªH};.°dONLNd1 ä÷≤+B
  5352. Rez is a rb°dONLNd; ≤÷ )(esour™@°dONLNd@  ÷/)ce compiler: it takes a rÙ‡°dONLNdY /÷G)eesour= °dONLNd^ H÷È)%ce description like the one shown in °dONLNdÑ◊ä„∏(‡ä Listing 3-1 @°dONLNdè◊π„ÿ)/ and pr‘Ä°dONLNdñ◊ÿ„0)oduces a compiled rö¿°dONLNd©◊1„I)Yesour„°dONLNdÆ◊I„W)ce. æÄ°dONLNd≤◊W„ı)$As you can see, the Rez description °dONLNd÷‰ä+(Ìä$includes information about the desirk°dONLNd˙‰+Δ)°$ed dialog box, including the box’s r1¿°dONLNd‰«)ú
  5353. ectangle, °dONLNd(Ò佬(˙ä
  5354. window defiΠ°dONLNd3Ò¬˝Y)8$nition ID, and initial window title.°dONLNdXä∞( ä    Rez is pr‰ °dONLNda∞H)&"ovided as part of the Macintosh Pr8`°dONLNdÉIw)ôogrammerQ@°dONLNdãxã)/’s WÍÄ°dONLNdèäÕ) orkshop (MPW∫Ä°dONLNdõŒ)D) and as part of °dONLNd¨ä≥(ä    some thir@°dONLNdµ¥+)*d-party development envirú`°dONLNdŒ+|)wonments. If you prV‡°dONLNd‡}ç)Refers@°dONLNd‰çø) , you can crı‡°dONLNdø˙)2eate and edit °dONLNd˛ä)ç(&ärE°dONLNdˇé)¶)esourç@°dONLNd¶)G)&ces using tools like ResEdit, a graphi·‡°dONLNd*G)Q)°c ró °dONLNd-R)j) esourfl`°dONLNd2j)ú) ce editor prX†°dONLNd>ù)Ã)3
  5355. ovided by @°dONLNdHÃ)È)/Apple °dONLNdN*ä6∑(3äComputer+°dONLNdV*∑67)-, Inc. Using ResEdit, you’ll cr °dONLNdu*76Ö)Äeate and modify r@Ä°dONLNdÜ*Ö6ù)Nesourà¿°dONLNdã*ù6ı)ces in a slightly mor°dONLNd†*ı6¸)Xe °dONLNd¢7äCfl(@äfriendly atmospherà °dONLNd¥7flC¡)U1e, by manipulating windows like the one shown in &Ä°dONLNdÂ7¬C⁄)„Figur˘@°dONLNdÍ7ŸCÌ)e 3-2ñ¿°dONLNdÔ7ÓC).ˇ! @ˇ ˇˇˇˇ@
  5356. ˇ·ˇ‚7^
  5357. 4*\¯, Palatino&e.3+l"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@l    Resources4⁄*˙¯
  5358. (‡*58    )BAbout Resources4^*¿¯
  5359. g*w¯4g*w¯"h*]
  5360. ˇ·ˇ‚7^°dONLNd\lgñ(dl
  5361. Figure 3-2°dONLNd \Ægv)B1The ResEdit version of the Preferences dialog box
  5362. °dONLNd=?lK‹(HlResEdit uses an internal rÍ °dONLNdW?‹KÙ)pesour2`°dONLNd\?ıK{)ce compiler to turn this graphiq@°dONLNd{?{KÖ)Üc r&Ä°dONLNd~?ÜKî) epr∑@°dONLNdÅ?îK÷)esentation of a °dONLNdëLlXo(UlrE°dONLNdíLpXà)esourç@°dONLNdóLàXfl)ce into a compiled ro¿°dONLNd´LflX˜)Wesour∏°dONLNd∞L˜X)ce.
  5363. g*u¯4g*t¯    °dONLNd¥flq(nlNote
  5364. ˇ·ˇ‚7^
  5365. °dONLNdπrl~*(For most purposes, and especially for prr`°dONLNd·r~Ñ)≤ogrammers new to the °dONLNdˆ~lä¥(álMacintosh envirT °dONLNd~¥äê)H3onment, ResEdit is a perfectly adequate tool for crß@°dONLNd8~êä≠)‹eating °dONLNd?älñ•(ìland editing rã °dONLNdLä•ñΩ)9esour”`°dONLNdQäΩñá).ces. For information about using ResEdit to cr‘Ä°dONLNdäáñõ) eate °dONLNdÑñl¢o(ülrE°dONLNdÖñp¢à)esourç@°dONLNdäñ࢙)    ces, see T`°dONLNdìñ´¢‚)#ResEdit Refern°dONLNd†ñ‚¢Û)7ence÷@°dONLNd§ñÛ¢¢)'. For complete information about using °dONLNdÀ¢lÆ≥(´lRez to compile rJ¿°dONLNd€¢¥ÆÃ)Hesourì°dONLNd‡¢ÃÆ()ce descriptions into r°‡°dONLNdˆ¢(Æ@)\esourÍ °dONLNd˚¢@Æb)    ces, see ±@°dONLNd¢cÆê)#
  5366. Macintosh °dONLNdÆl∫u(∑lPrQ¿°dONLNdÆv∫ü)
  5367. ogrammer °dONLNdÆü∫°))’†°dONLNdÆ¢∫±)s W•‡°dONLNdƱ∫Á)orkshop Refer-‡°dONLNd)ÆË∫˘)7enceñ °dONLNd-Æ˘∫˚).,Zapf Dingbats °dONLNd7±π)u
  5368. °dONLNd9ølÀ-(»l+Whether you use Rez or ResEdit’s internal r∂Ä°dONLNddø-ÀE)¡esour˛¿°dONLNdiøEÀé)ce compiler to crÓ†°dONLNdzøéÀõ)Ieat˙†°dONLNd}øõÀ¶)e r    @°dONLNdÄøßÀø) esourQÄ°dONLNdÖøøÀ⁄)ces, th‹ °dONLNdåø⁄À·)e °dONLNdéÃlÿõ(’l
  5369. compiled r7°dONLNdòÃúÿ¥)0esour@°dONLNdùÃ¥ÿ )ce will have the same str†Ä°dONLNd∂àÿ7)luctur&`°dONLNdªÃ8ÿb) e. This strÂÄ°dONLNdΔÃbÿy)*ucturk`°dONLNdÀÃzÿ)e is sometimes depicted in °dONLNdÊŸl±(‚lInside Macintoshb°dONLNdˆŸ≤Â⁄)F
  5370.  using a r4°dONLNdŸ€ÂÛ))esour|@°dONLNdŸÛÂo)ce diagram, as illustrated in `¿°dONLNd#ŸpÂà)}Figur3Ä°dONLNd(ŸàÂú)e 3-3—°dONLNd-ŸúÂû).
  5371. wg(¯òÄ2éHHK◊úˇˇˇˇˇˇéym#o–ˇ¯Ä— Ä—Ä— ø˜‡◊?ˇˇÔ.
  5372. Ä@>0<<L¿˛¯¿¸>8˚
  5373. 6èèp˛˛-
  5374. ø@‡30fbå¿˛Ã˚3`˚
  5375. 6ÄÉôÄ¿˛?ˇˇÔ3-Ä@30f`ëèèÄëáÕû?‡36xÒ„gèáÄÖôÅÊœ˛2ø@‡30f`˝Ã$¿Ã»ÃŒ#3038Ãc3åÃÃôô$ůâôÄ«ôò?ˇˇÔ3    Ä@30fn ˛Ã ¿Ã«ÃÃ30>0Ãc3 ÃÃúÄôëôÄΔôò˛2ø@‡30ff œÃÿ˝Ã33˛0¸cÛÃÃéůôüŸÄΔôò?ˇˇÔ2Ä@30ff à ÿ˝Ã33˛0¿c ÃÄôÅôÄΔôò˛2ø@‡30ff åLÿ˝Ã33˛0ƒc LÃòìÄôÅôÄΔôò?ˇˇÔ3Ä@>><<åÿ¯««Ã3˛0xa„å«èΔò˛ø˜‡Ù¿Â?ˇˇÔ ÄÚ¿‚ ÄÚÄ‚Ä—œˇÄ”ĔĔ ĔĔ!Ä”@èÄ”ÄOÄ”·ÔÄ”!Äı?¸ˇÉ¸ˇ¯?¸ˇÉ¸ˇ¯˘!Äı ¸Ç¸ ¸Ç¸˘!Äı ¸Ç¸ ¸Ç¸˘?#Äı'˝ˇ¸Ç¸ ¸Ç¸˛ˇ‡˛#Äı'˝ˇ¸Ç¸ ¸Ç¸˛˛#Äı'˝ˇ¸Ç¸ ¸Ç¸ ˛˛ˇˇ1Äć¸'øˇˇ¸Ç˛ ‡¿ÄÇ 8 0˛3    Ä@˛&Ô?ˇˇ¸Ç"˛!ÄÇD 20˛3    Ä@˛&Óøˇˇ¸Ç˛ ÄÇ  0<x˛3    Äá<<q√é˛'øˇˇ¸Ç˛ ƒÄÇ< 8f0˛3    ÄHë"Dâ‚$D˛&Ïˇˇ¸Ç˛ "'¿Ç" f0˛3    ÄHë"Dq‰˛&Ôøˇˇ¸Ç˛ B ÄÇ" ~0˛3    ÄHë"D    ˛&Ôøˇˇ¸Ç˛ Ç ÄÇ"  `0˛3    ÄHì"Dâ$D˛&Ôøˇˇ¸Ç ˛! ÄÇ"@ &b0˛3    Äá"<q√ɲ'øˇˇ¸Ç>˛!Ò¿ÄÇ| <˛#Äı'˝ˇ¸Ç¸ ¸Ç¸ ˛˛#Äı'˝ˇ¸Ç¸ ¸Ç¸ ˛˛#Äı'˝ˇ¸Ç¸ ¸Ç¸˛˛#Äı'˝ˇ¸Ç¸ ¸Ç¸˛ˇ‡˛Äı ¸Ç¸ ¸Ç¸˘Äı ¸Ç¸ ¸Ç¸˘Äı?¸ˇÉ¸ˇ¯?¸ˇÉ¸ˇ¯˘Ä”Ä”Äı?˜ˇÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄÄ˚  ˘ÍÄ@à˚ `˘ÍÄ@à˚ †˘ÍÄKà˚! ˘ÍÄåë"à˚!˘ÍÄë à˚  ˘ÍÄ à˚  ˘ÍÄ"à˚  ˘ÍÄ˚  ˘ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı?˜ˇÍĔĔĔĔĔĔĔÄÙ˚<ËÄB@ ˙aů˝√ÎÄB@ ˙Ä@`˛ÅÄÎÄ@@ ˙ û@cl«ÄÅÅ„<Ì ÄBx ‡¸? cåÿAÇ32fÌ ÄBD!¸? c ÿA·Û8fÌ ÄBD!¸? c œ¿AÉ3~ÌÄBD!˚? c ÃAÉ3`ÌÄÇD!˚ û@c Ã@ÅÉ3&bÌÄx ‡˚ Ä@c«ÄÅÅÛ<ÌÄÙaĸ√ËÄÙ˚<ËĔĔĔĔĔĔĔĔĔĔĔĔÄÙ˚<ËÄĘaů˝√ÎÄ@˜Ä@`˛ÅÄÎĘ û@cl«ÄÅÅ„<ÌÄ*<à˚? cåÿAÇ32fÌÄ»ü*Dà˚? c ÿA·Û8fÌÄHë*Dà˚? c œ¿AÉ3~ÌÄHë*Dà˚? c ÃAÉ3`ÌÄHë*Là˙ û@c Ã@ÅÉ3&bÌÄá4x˙ Ä@c«ÄÅÅÛ<Ìĸ˙aĸ√Ëĸà˙˚<Ë ĸpŸÄ”ĔĔĔĔĔÄı?ÚˇÔÄı ÛÔÄı ÛÔÄı ÛÔÄı ÛÔÄı ÛÔÄĢ ‡ÙÔÄ@"˘!ÙÔÄ@"˘!ÙÔÄG 8˚!ÙÔÄàÑ Dà˚!ÙÔÄOÑ Dà˚!ÙÔÄH Dà˚!ÙÔÄHÑ"Dà˚!ÙÔÄG8à˚ ‡ÙÔÄı ÛÔÄı ÛÔÄı ÛÔÄı ÛÔÄı ÛÔÄı ÛÔÄı?ÚˇÔĔĔÄı?˜ˇÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍĸC¿˝ ·¿á˚ÍÄ˝B ˝!!àĸÍÄ˝B ˝ "àĸÍÄ<8B ˝ b$àĸÍÄ*DB ˝ '»Ä¸ÍÄ*8B ˝  àĸÍÄ*B ˝  àĸÍÄ*DB ˝! àĸÍÄ*8C¿˝ ·¿á˚ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı?˜ˇÍĔĔÄı?¡¯˝Äı Â˝Äı Â˝Äı Â˝Äı Â˝Äı Â˝!Ĭ˘!˛<¸<0Ù˝!Ģ!˛"¸"@Ù˝ Ä˘!˛"˚"@Ù˝*Ä8˙!«è"xÚ√œ"Xp·≈á8p˙˝*ÄD˙!$HÄ"â$JÄ<dàB&Hë"Dà˙˝*Ä|˙!‰HÄ"â$JÄ D¯C‰Oë |p˙˝*Ä@˙!HÄ"âJÄ @ÄB @˙˝*ÄD˙ ¢$HÄ"ô Ä @àB$ë"Dà˙˝*Ä8˙ AƒHÄ<hÚJÄ @pAƒ8p˙˝Äı ˙Ì˝Äı ˚Ì˝Äı ˙‡Ì˝Äı Â˝Äı Â˝Äı Â˝Äı?¡¯˝Ä”Ä”Äı?˜ˇÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı @˘ÍÄĘ ·√á¸ÍÄ@¯!R$Hë¸ÍÄ@¯!B$Hë¸ÍÄHú˘ ¬$Hë¸ÍÄ»à"˘ b$Hë¸ÍÄHà"˘ R$Hë¸ÍÄHà"˘ R$Hë¸ÍÄIà"˘!R$Hë¸ÍÄFܢ ·√á¸ÍÄı @˘ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı ¯ÍÄı?˜ˇÍÄÄ ŸÄ@  ŸÄ@ ÿÄGp „¿€Äàë ! €Äé ! €ÄÅ ! €Äë ! €Ä ‚ €Ä”ĔĔĔˇˇÄ”ĔĔ?Ä”!Ä”!Ä”!Ä”·ÔÄ”ÄOÄ”@èÄ”!ĔĔ ĔĔĔˇˇÄ”ĔĔ˛Ä”ÇÄ”ÉÔÄ”Ç/Ä”Ç/Ä”Ç/Ä”˛/Ä” /Ä” /Ä” /Ä”?ÔÄ”œˇ–ˇˇU2@ˇ ˇˇˇˇ@
  5376. ˇ·ˇ‚7^
  5377. 4H\, Palatino&e.3+ä"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@ä    Resources4⁄ä˙(‡äUsing Standard Resources
  5378. (‡ 59
  5379. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5380. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5381.  
  5382.  
  5383.  
  5384.  
  5385.  
  5386. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  5387. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5388. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5389.  
  5390.  
  5391.  
  5392.  
  5393.  
  5394. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜
  5395. ˛ˇ˛ˇˇ ˇˇ˛ˇˇ     ˇˇˇ˙ˇ
  5396. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  5397. 454+?òÄ
  5398. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5399. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5400.  
  5401.  
  5402.  
  5403.  
  5404.  
  5405. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˛˙ˇ˚ˇˇ˚ˇˇ˚ˇˇ    ˛˛ˇˇˇ˜˝˛ˇ˛
  5406. ˛ˇˇˇˇ
  5407. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜    ˛ˇˇ˛
  5408. ˛ˇˇˇˇ
  5409. ˛ˇˇˇˇ    ˝ˇˇˇ˝˛ˇ˛
  5410. ˛ˇ˛ˇˇ
  5411. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  5412. ˛ˇ˛ˇˇ
  5413. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  5414. ˛ˇˇˇˇ
  5415. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  5416. ˛ˇˇˇˇ
  5417. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  5418. gHw4gHw"hH]
  5419. ˇ·ˇ‚7^    °dONLNd\äg¥(dä
  5420. Figure 3-3°dONLNd \Ãg“)BA0°dONLNd \“g) resource diagram
  5421. ëH´4ëH´
  5422. ªH√4ºH√ ΩHΩ
  5423. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd®HªØ(∂HUsing Standar=Æ°dONLNd+®ØªÔ)gd Resour“≤°dONLNd3®Ôª)@cesˇˇˇˇˇˇU˛(∂3
  5424. °dONLNd7Ãäÿ(’äIn general, you’ll need to cr臰dONLNdTÃÿ)yeate r™Ä°dONLNdZÃÿ3)esourÚ¿°dONLNd_Ã3ÿ•)ces describing the standar6†°dONLNdyöÿÏ)sd user interface °dONLNdäŸäÂQ(‚ä,elements used by your application, including,Zapf Dingbats°dONLNd∑Ôäˆè*n
  5425. °dONLNdπÏñ¯Õ) dialog boxes°dONLNdΔäè(än
  5426. °dONLNd»˛ñ
  5427. Ó) dialog box item lists°dONLNdfiäè(än
  5428. °dONLNd‡ñ≥) menus°dONLNdÊ%ä,è(+än
  5429. °dONLNdË"ñ.ø) windows°dONLNd7ä>è(=än
  5430. °dONLNdÚ4ñ@¨) contr>Ä°dONLNd˜4≠@π)ols
  5431. wâw4vàwâò2@å@åwâ∑œœ?ˡ¸Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Íò2@Äå@Äå∑â˜?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Íò2Ä¿åÄ¿å˜â7?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Íò2¿å¿å7âw?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Í?ˡ˛Íˡ˛Íœœœò2@å@åwâ∑œœœœœœœœœœœœœœœœœœœœœœœœœ¸¿˛¿08åflÑ˛    $Ä  flIJ    `Äå`  "flê»gF†Ä"fl·∂%âÅ!ï  Bfl!$%
  5432. Ç" ï@ Dfl$JõÙ!FB¡Dfl^DÄ"$@BHflÉ∏jO|5‡¸0fl˛D”˛D”˛8”œ¯˝˝†∞˝Êà˛Ä¸
  5433. `0 Á!ÄÌì¡fi:L±¬
  5434. 6£Ñ)2»fi —‚¥aÌ"·≠$Ç(    F¥KE6i$[Z—)$Pb•òíÄÓ!!I$Ç(E$JJ$I$R§ë)$†EÌ!RM(&ÖHäåL&SHR≈"2h¿Ü
  5435. !Ì"hìYÑ–,öL¥—V+ñiå2⁄Õà k°(ÄÓ!Åàí' bIGé$ÈΔÈ%8‡áqç «Ì˙˛˚"Â˙`˛˚"Â˙@˛ĸÂœœœœœœœœœœœœœœœò2@Äå@Äå∑☜¸˝ 0√å¡Å¡0‚Ñ˚$ÇB˛„Ä˙,"ÄF˛ „ìFËå?1ÄB"A
  5436. =Ò¿‰·â5R    rHÅBÄí¢f¢@‰!    &TDPAD¢¢D°„D®H†AD    ø¬I@ĉM"íàRHI Lâ‰Ä‰Ç    …¸sú0;áé0ÈG„Ò‡Ò‡Ò8‡œœœœœœœœœœœœœœœœ+'‡Ép¿¿Ä·ÄÄĸ@‡‡¿ ˜+@0Ä Äa˛@ħÄ  `˜+Ä1Ä@Äc˛ÄĠIJ    @ 0˜/+õä`Rç€Á±Ä•1∑Œ∞ „ê£ôá;„j¡ÕG
  5437. Q¶ÕÕ˚/+ç'4êTí%çHì–©$Kë%–!P‘J    LçFí$    íH∂
  5438. íCRm&˚/+â$†UA    Hâê™$Çëê!QD    %    Dí    H§
  5439. ¢BRID˚/+
  5440. M@Y&AêÖ ≤LÇ%!     Ba(LBÖ4&ê§ $ƒ¶Jà˚/+LWë,J”&0"Xî'¶J0Bi±içRòì…fH",”%ÑÏ2(˚/+íw$‡◊ì3íå:#Ø&g%r ·Ü Ü2úÁéúqá√ìå8Údìq»˚
  5441. ‹D˝à˙
  5442. ‹D˝à˙
  5443. ‹8˝p˙œœ :˚p›`D˛ ›†Ñ˛@›°eê¡vâf\ÕMòfi íQ!ãTíI&F§fiíQAädíIDD¿fibÅ     Iíàâ@fie≤!4—e⁄(â»fizä!¿‡ƒíÜë»A…0Äfl˝˛@‹ ˝ÿ ˝ÿœœIJÃ:@›H@˛@¿Ä‡à@˛Ä"@‡êfiésbèg$åüË◊;@‚·$6â≠®Ä$Ñ•1"EÄ‚Å$
  5444. $â)(Ä$Ñë!"E·h    !%
  5445. SPÄI    
  5446. BdÜ·ò2Ä¿åÄ¿å˜â7à   ¶2u¢sMãÀBΔö·Å8ÿ8¬I:LÈrA4b·
  5447. ˚D˝€˚D÷˚8÷œœ˛pÉ‹H˛     0@@flà˛    @P ÄflõLò`@√QÆ#£Œh‡·Ñ§êA$Äêƒ&ƒ§ë0‡ë¿†AE¯Ñ$Ö@ë ‡    A@Üä    E
  5448. A!@‡ …Ü(Ç     â…¶@‡‚0·˘«#=1@‡˘ ÿœœœœ Ëĸ⁄
  5449. YÄ$$⁄
  5450. àÄ⁄
  5451. ë2>—ºÊÄ⁄
  5452. ëLbI0⁄
  5453. ë$BI⁄
  5454. "$Ñ“ ⁄
  5455. 3.úÖöd$⁄
  5456. ¢4ËÇqÑÒx⁄˘ÿœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2¿å¿å7âwœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@å@åwâ∑œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@Aå@Aå∑â∏œò2@å@åwâ∑œœÁ30ÍÁÍ ËÍÁÍÁÍÁÍ ËÍÁÍ ËÍÁÍÁÍÁÍ ˛@˝ ¯‡`Í√û@˝ ¯∞`Í Ñ`¸˛{˜~‡˙˚|Ͳ
  5457. Ñfˇ˚{flç˚˙ø‡Í˛
  5458. îb˚{ÀÄ˙æpͲ
  5459. ÛûflÓ;éfi˙ʇ͠ˆÿ¯˛Íˆò¯ ˛Í ËÍÁÍÁÍÁÍ ?ԡĽÍ ¿˝Í  Ľ͠Ľ͠Ľ͠Ľ͠ Ľ͠Ľ͠ Ľ͠Ľ͠Ľ͠Ľ͠ Ä˝Í>˝Í Ô8˝Í˚ ˙9IJÍ ˚Ä ˙r@˛Í˚òflqÊ˙Ú@˛Í 0˚=) o˚·Ä˛Í ˚° h˚¬@˛Í `˚úÔ…Á˚ÅIJÍ¿˜@˚Ä˝ÍįÄ˚¸ÍԸ͠Ä˝Í‡Ô¿˝Í  ¿˝Í ¿˝Í Ľ͠Ľ͠ Ľ͠Ľ͠ Ľ͠Ľ͠Ľ͠Ľ͠?ԡĽÍ Ä˝Íò2@Äå@Äå∑☠ Ľ͠Ľ͠Ľ͠Ľ͠ ÅIJÍ ˝    ¿& IJÇ@˛Í  ˝    Ä 
  5460. @˛Ä@˛Í ˝    ‹vJ;.n
  5461. @˛ÅIJÍ ˝    “ôZO¨¶ô
  5462. @˛Ç˝Í ˝        Rô*L,¶ô
  5463. @˛É¿˛Í  ˝        Rv$;¨¶i IJĽ͠Ľ͠ Ľ͠Ľ͠Ľ͠Ľ͠?ԡĽÍ Ľ͠ ˚(™˙ÄIJÍ ˚"˙ÅIJÍ ˙©ÆØ∞˚ÄIJÍ ˙´È™†˚ÄIJÍ  ˙´i™†˚ÄIJÍ ˙IÆ´@˚ÄIJÍ  ˜@˚Ľ͠˜Ä˚Ä˝Í?ԡĽÍ Ľ͠ ˚Ä˚ÄIJÍ ˚@˚ÅIJÍ  ˚LÃ÷Œ˚ÄIJÍ ˚ü˛ïÚ˚ÄIJÍ ˚Q∞ï˚ÄIJÍ ˚NŒàÓ˚ÄIJÍ  Ľ͠Ľ͠?ԡĽÍ Ľ͠˛ê˛Ä˝Ä˝Í ˛P˛˝ÄIJÍ  ˛
  5464. 35ΔkõΩú˛ÅIJÍ ˛
  5465. ˇâJ/ô§÷R˛ÄIJÍ  ˛
  5466. TÏ    J(â£VR˛ÄIJÍ ˛
  5467. ì3é5«yù›í˛ÄIJÍ ˘˘ÄIJÍ ˘˘Ä˝Í ?ԡĽÍ Ľ͠ ˚p˛Ä˚Ľ͠˚H˛Ä˚ÄIJÍ ˚Kµ≥Ä˚ÅIJÍ ˚wøÂ|Ä˚ÄIJÍ  ˚L6%DÄ˚ÄIJÍ ˚Kô‚;Ä˚ÄIJÍ  ÄIJÍ Ä˝Í?ԡĽÍ Ľ͠ Ľ͠Ľ͠ Ľ͠Ľ͠Ľ͠Ä˝Íò2Ä¿åÄ¿å˜â7  Ľ͠Ľ͠ Ľ͠Ľ͠Ľ͠Ľ͠ ˝Ä˝IJÄIJÍ ˝ŸIJÅIJÍ  ˝    ≥ÊŒf ‹oπ¿˛ÇIJÍ ˝    yıÈü2Ù‰Ä˛É¿˛Í ˝    ¡Ö    à2◊dIJÄIJÍ ˝    πtÈw“g‰¿˛ÄIJÍ  Ľ͠Ľ͠ Ľ͠Ľ͠Ľ͠Ľ͠ Ľ͠Ľ͠ Ľ͠Ľ͠Ľ͠Ľ͠ Ľ͠Ľ͠ Ľ͠Ä˝Í?ԡĽÍ Ľ͠ Ľ͠Ľ͠ Ľ͠ÅIJÍ ˚    .˚Ç@˛Í ˚    )˚Ä@˛Í  ˚ Ì7)˚ÅIJÍ ˚    ˙Öz)˚ǽ͠ ˚    äÖj)˚É¿˛Í ˚    ˙Ö3.˚Ľ͠Ľ͠Ľ͠ Ľ͠Ľ͠ Ľ͠Ä˝Í?ԡĽÍ Ľ͠ Ľ͠Ľ͠ Ľ͠Ľ͠Ľ͠Ľ͠ Ľ͠Ľ͠ Ľ͠Ä˝Í>˝ÍÔ8˝Í  Ôx˝Í˚SÄT˙pÑ¿Í ˚ZÄ˙·Ñ¢Í0˚[söS˝Ä¸‡èĪÄÍò2¿å¿å7âw`˚[L¶—W¿¸¿ÜC@Í@˚%L•QV˚ÄÜD&@Í ¿˚%Kô!›¿¸ááôÄÍÄ¸Í Ô¸Í‡¸Í‡Ľ͠Ľ͠ Ľ͠Ľ͠ Ľ͠Ľ͠Ľ͠Ľ͠ Ľ͠Ľ͠ Ľ͠Ä˝Í?ԡĽÍ ¸P ¸ÅÄÄÍ  ¸@ ¸Ç@ÄÍ ¸SÛFw:˛¸ÇF`ÄÍ  ¸T ØJ&ü¸ÇI@ÄÍ ¸‘ ®J&ò¸ÇI@ÄÍ ¸” ßK9¸ÅÜ@ÄÍ ˙Ä˚Ľ͠ ˚˛˚Ľ͠Ľ͠?ԡĽÍ Ľ͠Ľ͠Ľ͠ Ľ͠Ľ͠ ˝Ç0¸ÅIJÍ ˝˛ ¸Ç@˛Í ˝∫cúj8Õsp˝Ä@˛Í ˝éîíî%?4»˝ÅIJÍ  ˝∂îíî%;4»˝Ç˝Í ˝ûcúj8Õ3H˝É¿˛Í  ˙Ä ˙Ľ͠˚ ˙Ľ͠¯ ˙Ľ͠Ľ͠ Ä˝Í?ԡĽÍ Ôˇ¿˝ÍÁÍÁÍÁÍ ËÍÁÍ ËÍÁÍÁÍÁÍ ËÍÁÍ ËÍ ÁÃÍËUTÍœœœò2@å@åwâ∑œœœœœœœœœœœœœœœœœœœœœœœœœ¸¿˛¿08åflÑ˛    $Ä  flIJ    `Äå`  "flê»gF†Ä"fl·∂%âÅ!ï  Bfl!$%
  5468. Ç" ï@ Dfl$JõÙ!FB¡Dfl^DÄ"$@BHflÉ∏jO|5‡¸0fl˛D”˛D”˛8”œ¯˝˝†∞˝Êà˛Ä¸
  5469. `0 Á!ÄÌì¡fi:L±¬
  5470. 6£Ñ)2»fi —‚¥aÌ"·≠$Ç(    F¥KE6i$[Z—)$Pb•òíÄÓ!!I$Ç(E$JJ$I$R§ë)$†EÌ!RM(&ÖHäåL&SHR≈"2h¿Ü
  5471. !Ì"hìYÑ–,öL¥—V+ñiå2⁄Õà k°(ÄÓ!Åàí' bIGé$ÈΔÈ%8‡áqç «Ì˙˛˚"Â˙`˛˚"Â˙@˛ĸÂœœœœœœœœœœœœœœœò2@Äå@Äå∑☜¸˝ 0√å¡Å¡0‚Ñ˚$ÇB˛„Ä˙,"ÄF˛ „ìFËå?1ÄB"A
  5472. =Ò¿‰·â5R    rHÅBÄí¢f¢@‰!    &TDPAD¢¢D°„D®H†AD    ø¬I@ĉM"íàRHI Lâ‰Ä‰Ç    …¸sú0;áé0ÈG„Ò‡Ò‡Ò8‡œœœœœœœœœœœœœœœœ+'‡Ép¿¿Ä·ÄÄĸ@‡‡¿ ˜+@0Ä Äa˛@ħÄ  `˜+Ä1Ä@Äc˛ÄĠIJ    @ 0˜/+õä`Rç€Á±Ä•1∑Œ∞ „ê£ôá;„j¡ÕG
  5473. Q¶ÕÕ˚/+ç'4êTí%çHì–©$Kë%–!P‘J    LçFí$    íH∂
  5474. íCRm&˚/+â$†UA    Hâê™$Çëê!QD    %    Dí    H§
  5475. ¢BRID˚/+
  5476. M@Y&AêÖ ≤LÇ%!     Ba(LBÖ4&ê§ $ƒ¶Jà˚/+LWë,J”&0"Xî'¶J0Bi±içRòì…fH",”%ÑÏ2(˚/+íw$‡◊ì3íå:#Ø&g%r ·Ü Ü2úÁéúqá√ìå8Údìq»˚
  5477. ‹D˝à˙
  5478. ‹D˝à˙
  5479. ‹8˝p˙œœ :˚p›`D˛ ›†Ñ˛@›°eê¡vâf\ÕMòfi íQ!ãTíI&F§fiíQAädíIDD¿fibÅ     Iíàâ@fie≤!4—e⁄(â»fizä!¿‡ƒíÜë»A…0Äfl˝˛@‹ ˝ÿ ˝ÿœœIJÃ:@›H@˛@¿Ä‡à@˛Ä"@‡êfiésbèg$åüË◊;@‚·$6â≠®Ä$Ñ•1"EÄ‚Å$
  5480. $â)(Ä$Ñë!"E·h    !%
  5481. SPÄI    
  5482. BdÜ·ò2Ä¿åÄ¿å˜â7à   ¶2u¢sMãÀBΔö·Å8ÿ8¬I:LÈrA4b·
  5483. ˚D˝€˚D÷˚8÷œœ˛pÉ‹H˛     0@@flà˛    @P ÄflõLò`@√QÆ#£Œh‡·Ñ§êA$Äêƒ&ƒ§ë0‡ë¿†AE¯Ñ$Ö@ë ‡    A@Üä    E
  5484. A!@‡ …Ü(Ç     â…¶@‡‚0·˘«#=1@‡˘ ÿœœœœ Ëĸ⁄
  5485. YÄ$$⁄
  5486. àÄ⁄
  5487. ë2>—ºÊÄ⁄
  5488. ëLbI0⁄
  5489. ë$BI⁄
  5490. "$Ñ“ ⁄
  5491. 3.úÖöd$⁄
  5492. ¢4ËÇqÑÒx⁄˘ÿœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2¿å¿å7âwœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@å@åwâ∑œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@Aå@Aå∑â∏œˇ~@ˇ ˇˇˇˇ@
  5493. ˇ·ˇ‚7^
  5494. 4*\¯, Palatino&e.3+l"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@l    Resources4⁄*˙¯
  5495. (‡*60    )BUsing Custom Resources4^*¿¯
  5496. °dONLNd\lhû(el For standar(¿°dONLNd \ühY)3*d user interface elements, the Macintosh T̆°dONLNd5\XhÇ)π    oolbox pr-‡°dONLNd>\Éh«)+ovides special rc °dONLNdN\«hÈ)Doutines °dONLNdViluÎ(rlyou can use to open the apprL@°dONLNdriÏu)Ä    opriate rÔ‡°dONLNd{iu))%esour8 °dONLNdÄi*ufi)+ces. For instance, you can call the Dialog .°dONLNd´vlǺ(lManager function ,
  5497. Courier°dONLNdºvºÇ)P GetNewDialog°dONLNd»vÇ)H to rR`°dONLNdÕvÇe)ead a dialog box r$¿°dONLNdflveÇ|)Pesour˜ °dONLNd‰v{Ǩ) ce (of type ˜ °dONLNdv¨Ç–)1'DLOG'˜ °dONLNdˆv–ÇÈ)$) and °dONLNd¸Élèè(ålthe corrR`°dONLNdÉèè∑)#espondinR`°dONLNd É∑è¬)(g iR`°dONLNdɬè) tem list (of type R`°dONLNd!Éè1)K'DITL'R`°dONLNd'É1è?)$) fr$¿°dONLNd+É?èß)om your application’s r˜ °dONLNdBɶèΩ)gesour…Ä°dONLNdGÉΩè’)ce for…Ä°dONLNdMÉ’èfi)k.°dONLNdPöl¶Œ(£l;myDialog := GetNewDialog(myKind, myPointer, WindowPtr(-1));°dONLNdå≤læö*    Similarlyd@°dONLNdï≤ôæÚ)-, you can call the W◊†°dONLNd©≤Òæ=)Xindow Manager r™°dONLNd∏≤=æ[)Loutine ™°dONLNdø≤[æ£) GetNewWindow™°dONLNdÀ≤£æı)H to open a window °dONLNd›ølÀ•(»ldescription rR`°dONLNdÍø•Àº)9esour$¿°dONLNdÔøºÀÌ) ce (of type $¿°dONLNd˚øÌÀ)1'WIND'$¿°dONLNdøÀI)$). Internally    °dONLNdøHÀl)7    , these r€`°dONLNdøkÀø)#outines call Resour≠¿°dONLNd*øøÀÙ)T ce Manager °dONLNd5Ãlÿp(’lrR`°dONLNd6Ãpÿ¥)outines such as R`°dONLNdFÃ¥ÿˆ)D GetResourceR`°dONLNdQÈÿ)B to r$¿°dONLNdVÃÿ0)    ead the r˜ °dONLNd_Ã/ÿF)(esour…Ä°dONLNddÃFÿq)
  5498. ce data frõ‡°dONLNdnÃqÿñ)+om the rn@°dONLNdvÃñÿ≠)%esour@†°dONLNd{Ã≠ÿø)ce fi@†°dONLNdÄÃøÿÀ)le..°dONLNdÑfilÍå(ÁlSome Tà†°dONLNdäfiåÍ∞) oolbox rΔ¿°dONLNdífi∞Í€)$
  5499. outines arã °dONLNdúfi‹Í),e simply looselä °dONLNd´fiÍ,)By dµ°dONLNdÆfi,Ír)isguised ResourÒ†°dONLNdΩfirÍ—)Fce Manager calls. For .°dONLNd”Îl˜Î(Ùlexample, the code shown on °dONLNdÓÎΘ)page °dONLNdÛΘ)56°dONLNdıΘ4)
  5500.  which u°dONLNd˝Î4˜C)'ses °dONLNdÎC˜)
  5501. GetPattern°dONLNd Θú)< to ope°dONLNdÎú˜ß)n f°dONLNdÎߘÁ) our available .°dONLNd#¯lª(lemptiness patternÙ°dONLNd4¯ªΔ)Os c!@°dONLNd7¯«Ó)     ould be r∏@°dONLNd@¯Ó≥)'-eplaced by this functionally equivalent code:.°dONLNdn*Æ(*FOR count := 1 TO 4 DO°dONLNdÜ<)V+/gEmptyPats[count] := GetResource('PAT ', kEmpty°dONLNdµV)n(&VID +°dONLNdπn)¬) (count - 1));.°dONLNd»5lA§(>l Most Resour``°dONLNd”5§A›)8 ce Manager rÒ@°dONLNdfl5›A0)9outines that open r`°dONLNdÚ51AI)Tesourf†°dONLNd˜5IA\)ces r"Ä°dONLNd¸5]A◊)eturn a handle to the specifiÌÄ°dONLNd5◊A‰)zed °dONLNdBlNo(KlrE°dONLNdBpNà)esourç@°dONLNd"BàN¨)    ce data. w†°dONLNd+B¨N≤)$Y8 °dONLNd,B≤N∑)o≠†°dONLNd-B∑N◊)u can p¯Ä°dONLNd4B◊N_) ass that handle to other Resour¨¿°dONLNdSB`Nô)â ce Manager r=†°dONLNd_BöNÌ):outines, or doubly °dONLNdrOl[z(Xlder*`°dONLNduO{[ã)efer÷Ä°dONLNdyOã[‰)ence it to get at the r‡°dONLNdêOÂ[˝)ZesourV °dONLNdïO˝[)ce data.
  5502. b*}¯4c*}¯
  5503. ç*ï¯4é*ﯠè*è˛
  5504. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdûz*ç»(à*Using Custom ResourM°dONLNd±z…çfi)ücesˇˇˇˇˇˇU˛(à3
  5505. °dONLNdµûl™Î(ßlIn addition to using system r¥`°dONLNd“ûΙ)esour¸†°dONLNd◊û™<)ces to help crf °dONLNdÂû=™É):eate the standarJ†°dONLNdıûÉ™“)Fd Macintosh user °dONLNd´l∑$(¥l*interface for your application and standar÷°dONLNd0´$∑0)∏d r6¿°dONLNd3´1∑I)esour°dONLNd8´I∑Ì))ce types to help isolate its localizable °dONLNda∏lƒ™(¡ldata, you’ll pr…°dONLNdp∏™ƒ )>obably also want to cr∏°dONLNdÜ∏ ƒF)aeate custom r퇰dONLNdì∏Fƒ^);esour€ °dONLNdò∏^ƒˆ)%ces. This section illustrates how to °dONLNdΩ≈l—|(Œldefir °dONLNd¡≈}—∏)ne a custom rí`°dONLNdŒ≈∏—–);esour⁄†°dONLNd”≈–—.)ce type and how to cr©‡°dONLNdË≈/—Ä)_eate and manage rØ¿°dONLNd˘≈Ä—ò)Qesour¯°dONLNd˛≈ò—Ú)ces of that type. The °dONLNd“lfi(€lsour˛†°dONLNd“fi´)
  5506. ce code pr ¿°dONLNd"“¨fi‹)-
  5507. ovided her∞°dONLNd,“‹fiU)0e shows how to handle a pr‡°dONLNdF“Vfif)zeferÀ°dONLNdJ“ffiÜ)ences fii†°dONLNdR“áfiâ)!lR°dONLNdS“äfiØ)    e. This fiø‡°dONLNd]“Øfi )%le stor´¿°dONLNdd“ fiÿ)es tt¿°dONLNdh“ŸfiÊ)he °dONLNdkfllÎ(Ëluser=¿°dONLNdoflÄα) ’s global prf °dONLNd{fl±Ρ)1efer@°dONLNdfl¬Î’)enceÁ °dONLNdÉfl’ÎA)s, and your application c∂¿°dONLNdúflBÎG)ma∂¿°dONLNdùflGÎS)n rÕ °dONLNd†flSÎë) etrieve them eh†°dONLNdÆflíÎ≤)?ach tim)°dONLNdµfl≥Î≈)!e it i¿°dONLNdªflΔÎÃ)s °dONLNdΩÏl¯(ıl"launched. When it starts up, the VÛ`°dONLNdflϯƒ)ï+enn Diagrammer application tries to open a °dONLNd
  5508. ˘lu(lprG °dONLNd ˘vÜ)
  5509. eferÛ@°dONLNd˘Ü¶)ences fi뇰dONLNd˘ß!)!le, which contains a single rÉ`°dONLNd5˘!9)zesourÀ†°dONLNd:˘9=)c;‡°dONLNd;˘>ú)e with the following t'‡°dONLNdQ˘ù–)_ ype and ID:.°dONLNd]lä(lCONST°dONLNdd~*Δ+ kPrefResType°dONLNdvÍ*¸)l= '°dONLNdy¸* )PRFN';°dONLNdÉ2*Ê)6{type of preferences resource}°dONLNd£,~8∫(5~
  5510. kPrefResID°dONLNd≥,Í8¸)l= 2°dONLNd∂,¸8)59;°dONLNdΩ,28>)6{I°dONLNdø,>8⁄) D of preferences resource}.°dONLNd⁄DlP#(Ml+As you’ve seen earlier in this book, the prÀ °dONLNdD#P3)∑eferw@°dONLNd    D4PT)ences fi‡°dONLNdDUP·)! le needs to contain information °dONLNd1Ql]´(Zlabout the usera¿°dONLNd?Q¨]º)@’s V`°dONLNdCQº])enn diagram prè¿°dONLNdQQ])Defer;‡°dONLNdUQ]ç)ences, as displayed in the PrꆰdONLNdrQç]ù)|efer<¿°dONLNdvQû]È)ences dialog box °dONLNdá^ljó(gl    shown in Ê°dONLNdê^ójØ)+Figur∏¿°dONLNdï^Øj√)e 3-4V@°dONLNdö^ƒjΔ).ˇ@X@ˇ ˇˇˇˇ@
  5511. ˇ·ˇ‚7^
  5512. 4H\, Palatino&e.3+ä"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@ä    Resources4⁄ä˙(‡äUsing Custom Resources
  5513. (‡ 61
  5514. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5515. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5516.  
  5517.  
  5518.  
  5519.  
  5520.  
  5521. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  5522. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5523. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5524.  
  5525.  
  5526.  
  5527.  
  5528.  
  5529. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜
  5530. ˛ˇ˛ˇˇ ˇˇ˛ˇˇ     ˇˇˇ˙ˇ
  5531. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  5532. 454+?òÄ
  5533. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5534. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5535.  
  5536.  
  5537.  
  5538.  
  5539.  
  5540. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˛˙ˇ˚ˇˇ˚ˇˇ˚ˇˇ    ˛˛ˇˇˇ˜˝˛ˇ˛
  5541. ˛ˇˇˇˇ
  5542. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜    ˛ˇˇ˛
  5543. ˛ˇˇˇˇ
  5544. ˛ˇˇˇˇ    ˝ˇˇˇ˝˛ˇ˛
  5545. ˛ˇ˛ˇˇ
  5546. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  5547. ˛ˇ˛ˇˇ
  5548. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  5549. ˛ˇˇˇˇ
  5550. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  5551. ˛ˇˇˇˇ
  5552. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  5553. gHw4gHw"hH]
  5554. ˇ·ˇ‚7^    °dONLNd\äg¥(dä
  5555. Figure 3-4°dONLNd \Ãg:)BThe Preferences dialog box
  5556. °dONLNd&ä#õ( äHer`°dONLNd)õ#∂)e, therðdONLNd0∂#Δ)e ar⁄†°dONLNd4Δ#¶)5e six pieces of information that need to be tracked. `°dONLNdiß#≠)·TQ °dONLNdj¨#)o maintain this °dONLNdz$ä0Δ(-äinformation, t}¿°dONLNdà$«0€)=he Vµ °dONLNdå$⁄0m)enn Diagrammer application defi÷ °dONLNd´$m0ß)ìnes a data strÍ@°dONLNdπ$ß0æ):ucturp °dONLNdæ$ø0Á)
  5557. e of type ,
  5558. Courier.°dONLNd»1ä=Δ(:ä
  5559. MyPrefsRec°dONLNd“1Δ=€)< (defPÄ°dONLNd◊1€=¸)ined in PÄ°dONLNdfl1¸=,)! Listing 3-2PÄ°dONLNdÍ1,=3)0).
  5560. aHi4aHh"bH_
  5561. ˇ·ˇ‚7^    .°dONLNdÌVäa∂(^ä Listing 3-2°dONLNd˘VŒaÁ)DThe stÅ@°dONLNdˇVÁan)"ructure of a resource containing V
  5562. °dONLNd!Vna“)áenn diagram preferences
  5563. .°dONLNd9pH|`(yHTYPE°dONLNd?~ZäÃ+MyPrefsRec = RECORD°dONLNdUålò¢+    autoDiag:°dONLNdbå¥ò‰)HBoolean;°dONLNdnå¸ò‡)H&{do we automatically fix the diagram?}°dONLNdóöl¶¢(£l    showName:°dONLNd§ö¥¶‰)HBoolean;°dONLNd∞ö¸¶‡)H&{do we show names of valid arguments?}°dONLNdŸ®l¥¢(±l    isImport:°dONLNdÊ®¥¥‰)HBoolean;°dONLNdÚ®¸¥‡)H&{do subjects have existential import?}°dONLNd∂l¬¢(øl    isRandom:°dONLNd(∂¥¬‰)HBoolean;°dONLNd4∂¸¬⁄)H%{do we select next setting randomly?}°dONLNd\ƒl–¢(Õl    emptyInd:°dONLNdiƒ¥–‰)HInteger;°dONLNduƒ¸–Ï)H({index of the desired emptiness pattern}°dONLNd†“lfi¢(€l    existInd:°dONLNd≠“¥fi‰)HInteger;°dONLNdπ“¸fiÊ)H'{index of the desired existence symbol}°dONLNd‚‡ZÏl(ÈZEND°dONLNd‡lÏr);°dONLNdËÓZ˙(˜ZMyPrefsPtr = ^MyPrefsRec;°dONLNd¸Z*MyPrefsHnd = ^MyPrefsPtr;.°dONLNdä ø+0 When it is fi…@°dONLNd*ø )5rst launched, the V‡°dONLNd= )S4enn Diagrammer application calls the application-defi§°dONLNdr )Óned .°dONLNdv!ä-é(*ärR`°dONLNdw!é-¨)outine R`°dONLNd~!¨-Ó) DoReadPrefsR`°dONLNdâ!Ó-)B R`°dONLNdä!-)(defiR`°dONLNdè!-#)ned in R`°dONLNdñ!#-S) Listing 3-3R`°dONLNd°!S-Y)0) R`°dONLNd£!Y-h)to r$¿°dONLNdß!h-s)ea$¿°dONLNd©!s-) d t$¿°dONLNd¨!-ü) he user‚ °dONLNd≥!ü-ÿ) ’s existing pr¥Ä°dONLNd¡!ÿ-Í)9efer܇°dONLNd≈!Í-)ences °dONLNdÀ.ä:§(7äsettin°dONLNd—.§:∞)gs.°dONLNd‘.∞:Õ)  First, °dONLNd‹.Õ:) DoReadPrefs°dONLNdÁ.:ò)B determines the name of the prR`°dONLNd.ò:™)âefer$¿°dONLNd    .™: )ences fi$¿°dONLNd. :Ê) le by r˜ °dONLNd.Â:)    eading a .°dONLNd!;äGç(DärE°dONLNd";éG¶)esourç@°dONLNd';¶G )ce in the application’s rfi`°dONLNd@; G$)fesour&†°dONLNdE;%G6)ce fiÌ@°dONLNdJ;6G)/le that contains that name. By convention, the °dONLNdyHäT (Qäname of the pr‹‡°dONLNdáH T⁄)@eferâ°dONLNdãH€T˚)ences fi'†°dONLNdìH¸T˛)!l°dONLNdîHˇT9)e consists of t˛@°dONLNd£H9T®):he name of the applicatioîÄ°dONLNdºH©TÎ)pn followed by tã°dONLNdÀHÏT)C
  5564. he string °dONLNd’Uäaõ(^ä“ PrŒ†°dONLNdŸUõa´)eferz¿°dONLNd›U¨aƒ)ences冰dONLNd‚UƒaÀ)”, †°dONLNd‰UÃa) for instance°dONLNdÒUa)6, V)`°dONLNdÙUad) enn Diagrammer Pr°dONLNdUdat)Weferú °dONLNd    Uuaà)enceq°dONLNdUâaè)s.
  5565. wÑòÄ$…HHK◊†ˇˇˇˇˇˇ…yã¸Cfiˇ¿Äfl`ÄflpÄflpø˜˛ˇÍ?¸ˇpÄ@˛ò˛¸¿Ùpø@˛ˇò˛ĸ` ˙?¸ˇp"Ä@˛òÒÒò˘≥«¸fœ<lÒ··¿˚p#ø@˛ˇ˛ôòôôƒffgåfqôôì3 ?¸ˇp"Ä@˛˛ôòò˘ôÉÊfΔåfaôôÉ3Ä˚p#ø@˛ˇô˘ôò˛ôÜffå~a˘ôÉÒ¿?¸ˇp"Ä@˛ôÅôò˛ôÜff `aÅôɇ˚p#ø@˛ˇëâôò˛ôÜffåbaâôì`?¸ˇp"Ä@˛‡Òôò¯˘ÉÊf <`Òò··¿˚pø˜˛ˇ˘Û?¸ˇp ÄıÌp
  5566. ÄÙÌpÄflpfiˇÄflpÄflpÄflpį¿c˝Äıpį˛`˝ ¿ıpį¯¯Û>8 «è<x€‡¯pį ÃÃc332d »ΔÄ0¯pįåÃÃc338páΔÃ√0¯pį ÃÃc3?8 Δ¸√0¯pį ÃÃc30 Δ¿√0¯pį ÃÃc31&L Δƒ√0¯pįÃï338 √ x√0¯p
  5567. Äı¿Ïp
  5568. Äı¿ÏpÄflpÄflpÄflpÄflpĸˇ˛¸ˇ‡˝ˇ˛¸ˇ‡˛pĸ™™¸D`˝DF¸Ó‡˛p$Ä˝xUV˛Äà†˛x˛Ī†˛p%IJÜ™™˛ ` Ü˛`Ó‡˛p%IJUV˛  " ˛ ª†˛p%IJy™™˛  D`DF˛ Ó‡˛p%IJ¸ÅUV˛ @à†Å˛@ª†˛p%IJ¸Å™™˛ @ Å˛@Ó‡˛p%IJ¸ÅUV˛ @" Å˛@ª†˛p%IJ¸Å™™˛ @D`ÅDF˛@Ó‡˛p%IJyUV˛  à†˛ ª†˛p%IJ™™˛   ˛ Ó‡˛p%IJÜUV˛ `" Ü˛`ª†˛p$Ä˝x™™˛ÄD`˛xDF˛ÄÓ‡˛pĸUV¸à†˝¸ª†˛pĸˇ˛¸ˇ‡˝ˇ˛¸ˇ‡˛pÄflpÄflpÄflpÄflpÄflpÄflpÄflpį0˝˜pįÄ0˝2˜pįÉ3xÒ·‡0f«√Δ˜pį    É321ôôì08¸f˜pį    „381ôôÉ0¸f˜pį    Å„1˘ôÉ¸f˜pį    É31Åôɸf˜pį    É3&1âôì&¸f˜pįÛ3Òò·‡>fg√Δ˜p
  5569. ÄÓÛp
  5570. ÄÓFÛp
  5571. ÄÓ<ÛpÄflpÄflpÄflpÄflpÄflpÄ˝x˚Ä˚x˚Ä˚pIJÜ˚`¸Ü˚`˚p#IJ`˛ H˛˝ `˝p$IJy ¿˛ P˛IJ `˝p$IJ¸ÄIJ@‡˛Ä?¿˛@`˝p#IJ¸Ä˝@¯˛Ä?¿˛@¸˝p$IJ¸ÄIJ@‡˛Ä?¿˛@¸˝p$IJ¸Ä ¿˛@P˛Ä?¿˛@`˝p$IJy`˛ H˛IJ `˝pIJ˚ ¸˝ `˝pIJÜ˚`¸Ü˚`˚pÄ˝x˚Ä˚x˚Ä˚pÄflpÄflpÄflpÄflpÄflpÄflpÄflpÄflpÄflpIJ·pÄÄ¿¿Ä˛ `¯pÄ ¿¿¿Ä˛ ˜p"Ä «èá«è¯Ã¿pÒè<áåœ√«ûg√„Ä˚pÄ »˚ÿ…˛ô ÃÃΔ&c ˛f@˚pÄá˚ÿ·ôôò ÃÃΔÜc ffg˙pÄ ˙ÿq˘üò œ«Ü«„ ffcÄ˚pÄ ˙ÿ9Åò à ΔÊ ffa¿˚pÄ ˙ÿôâòô ÃLΔf# ffd¿˚p"Ä «Ã««åë¿pÒè «å√√¡Üfc„Ä˚pĢ¿Ú`˙pIJ˙¿Û`˙pįÄÛ¿˙pÄflpÄflpÄflpÄflpÄflpIJ·pÄIJåòÜ`0ıpÄ
  5572. ¿˛ ÄòÄ`Ùp!Ä Ãœ?·„ÃpÒôòÜf81·Ûgè¯˙p!Ä" ÃΔ3321å…ôòôÜfd`3233àÃÃ˙p!ĬÃΔ331Òå¿˘ôòôÜfp`31Û3ÃÃ˙p Ä¬ ÃΔ˛3 1å¡ôôòôÜf8`˝3 ÃÃ˙p Ä" ÃΔ˛3 1å¡ôôòôÜf`˝3 ÃÃ˙p Ä ÃΔ˛3 1å…ôôòôÜfL`˝3 ÃÃ˙p!Ä
  5573. «√31Ãp˘ò¯èÜ>801ÒÛÃÃ˙pĈ˚0˜pIJ˜&¸0˜pÄÙ¸‡˜pÄflpÄflpÄflpÄflpÄflpIJ·pIJ``0˘83‡˝pÄ
  5574. ò˛``¯`0Ä˝p%#Ä ò|<c√è1¿|<√√Äx33«çø·¿p%Ä"ôôò2ffdfF3 fF˛f@Ã`3#33åŒ33 p%#Ĭôôò0ffcÁ3f>ffgÃ`333åÃ33Äp$Ĭ˛ôò0˛fcÜ3˛fg„ÄÃ`˝3åÃ31¿p#Ä"˛ôò0˛faΔ3˝f¿Ã`˝3åÃ30‡p$Ä    ˛ôê2˛fdΔ3 ˝f$¿Ã`2˛3åÃ32`p%#Ä
  5575. è‡f<c„É1¿f>fc√Äx`<3áå31¿pÄ·pIJ·pÄflpÄflpÄflpÄflpÄflpÄflpIJ·p#Äå˝ ¿ÅIJ¿˛¿0˝p Ä @˚¿Ä˝¿˛¿˝p%Ä ÃxåÃq„««òÒÅüÒÒ∑Å„¿8ï1·«é˛p$Ä Ãà ÃûΔfcÅ˝ô
  5576. √Δ`dÃÃ33#˛p$Ä˛Ã     ÃÇΔfc˘Å˝ô
  5577. ÉΔ`pÃÃ33˛p$Ä Ãø«åp«ÊcôÅ˝ô
  5578. ÉΔ`8ÃÃ3Û˛p$Ä Ãÿ Ã8ΔcôÅ˝ô
  5579. ÉΔ`ÃÃ3˛p$Ä ûƒ LÃòΔ&côÅ˝ô
  5580. ÉΔ`LÃÃ3#˛p%ÄåxåÃpcΔaò˘ÅôôÒÅÄc¿8|¯1·¡é˛pÄÚĢ0˚pIJÚÄ˙0˚p
  5581. Äʇ˚pÄflpÄflpÄflpÄflpÄflpÄflpÄflpĸÏˇ˚pĸ Ï ˚pĸÏ˚pĸÏ˚pĸÏ˚pĸ¯`˛8˚˚pĸ2¯`˛`˚˚p Ä¸0<f<åÕ∂x¯>6xÒ„gèá˚p Ä¸8FffLŒ8ÃÃ`38Ãc3åÃÃôô˚p Ä¸>ff Ã0ÃÃ`30Ãc3 ÃÃú˚p Ä¸ff~ Ã0¸Ã`30¸cÛÃÃé˚p Ä¸ff` Ã0¿Ã`30¿c Ã˚p Ä¸&fdbLÃ0ƒÃ`30ƒc LÃòì˚p Ä¸>x<áÃ0xÃ0>0xa„å«˚pĸˆ0¯˚pĸˆ0¯˚pĸÏ˚pĸÏ˚pĸ Ï ˚pĸÏˇ˚pÄflpÄflpÄflpÄflpÄflpÄflpÄflpfiˇflˇˇ ¯@ˇ ˇˇˇˇ@
  5582. ˇ·ˇ‚7^
  5583. 4*\¯, Palatino&e.3+l"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@l    Resources4⁄*˙¯
  5584. (‡*62    )BUsing Custom Resources4^*¿¯
  5585. g*n¯4g*n¯"h*_
  5586. ˇ·ˇ‚7^°dONLNd\lgò(dl Listing 3-3°dONLNd \∞gÌ)DReading a userŸ°dONLNd\ÌgÓ)=’Ø@°dONLNd\Ôg%)s preferences,
  5587. Courier
  5588. .°dONLNd)v*ÇÆ(*PROCEDURE DoReadPrefs;°dONLNdAÑ<êN+VAR°dONLNdGíNûä+
  5589. myVRefNum:°dONLNdUíñûΔ)HInteger;°dONLNd`†N¨~(©NmyDirID:°dONLNdl†ñ¨Δ)HLongInt;°dONLNdwÆN∫x(∑NmyName:°dONLNdÇÆñ∫¿)HStr255;°dONLNdçÆfi∫z)H{name of this application}°dONLNd™ºN»~(≈NmyPrefs:°dONLNd∂ºñ»¿)HHandle;°dONLNd¡ºfi»∞)H#{handle to actual preferences data}°dONLNdÁ N÷Ñ(”N    myResNum:°dONLNdÙ ñ÷Δ)HInteger;°dONLNd fi÷⁄)H*{reference number of opened resource file}°dONLNd-ÿN‰Ñ(·N    myResult:°dONLNd:ÿñ‰∫)HOSErr;°dONLNdBÊ<ÚZ(Ô<CONST°dONLNdJÙN®+kNameID = 4000;°dONLNdaÙfiº)ê%{resource ID of 'STR#' with filename}°dONLNdá*H( *BEGIN°dONLNdé<J+-{Determine the name of the preferences file.}°dONLNdΩ<**!GetIndString(myName, kNameID, 1);°dONLNd·:<F8**{Figure out where the preferences file is.°dONLNd :8F>)¸}°dONLNdH<T¥(Q<IF IsFindFolder THEN°dONLNd%VNbº+=myResult := FindFolder(kOnSystemDisk, kPreferencesFolderType,°dONLNdmdfip¬+ê& kDontCreateFolder, myVRefNum, myDirID°dONLNdìd¬p»)‰)°dONLNdñr<~T({<ELSE°dONLNdùÄNå®+myResult := -1;°dONLNdØú<®Ã(•<IF myResult <> noErr THE°dONLNd«úî“)êN°dONLNdÀ™N∂l(≥NBEGIN°dONLNd‘∏`ƒ∫+myVRefNum := 0;°dONLNdÎ∏ƒh)ê{use default volume}°dONLNdΔ`“Æ(œ`myDirID := 0;°dONLNdΔ“z)ê{use default directory}°dONLNd2‘N‡f(›NEND;°dONLNd9<¸(˘<%{Open the preferences resource file.}°dONLNd`˛<
  5590. º*@myResNum := HOpenResFile(myVRefNum, myDirID, myName, fsCurPerm);°dONLNd•<&í*9{If no preferences file successfully opened, create one }°dONLNd‡(<4~* { by copyin°dONLNdÎ(~4¿)B g default p°dONLNdˆ(¿4í)B#references in app's resource file.}°dONLNd6<B∫(?<IF myResNum = -1 THEN°dONLNd3DNP™+:myResNum := DoCreatePrefsFile(myVRefNum, myDirID, myName);°dONLNds`<l¿(i<IF myResNum <> -1 THEN°dONLNdì`l⁄)¥'{if we successfully opened the file...}°dONLNdΩnNzl(wNBEGIN°dONLNdΔ|`àfi+UseResFile(myResNum);°dONLNd„|à‡)ê({make the new resource file current one}°dONLNdä`ñå(ì`2myPrefs := Get1Resource(kPrefResType, kPrefResID);°dONLNdEò`§fi*IF myPrefs = NIL THEN°dONLNd_¶r≤ÿ+exit(DoReadPrefs)°dONLNdp¶ÿ≤fi)f;°dONLNdu¥`¿f(Ω`W°dONLNdv¥f¿)ITH MyPrefsHnd(myPrefs)^^ DOˇ<0@ˇ ˇˇˇˇ@
  5591. ˇ·ˇ‚7^
  5592. 4H\, Palatino&e.3+ä"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@ä    Resources4⁄ä˙(‡äUsing Custom Resources
  5593. (‡ 63
  5594. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5595. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5596.  
  5597.  
  5598.  
  5599.  
  5600.  
  5601. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  5602. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5603. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5604.  
  5605.  
  5606.  
  5607.  
  5608.  
  5609. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜
  5610. ˛ˇ˛ˇˇ ˇˇ˛ˇˇ     ˇˇˇ˙ˇ
  5611. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  5612. 454+?òÄ
  5613. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5614. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5615.  
  5616.  
  5617.  
  5618.  
  5619.  
  5620. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˛˙ˇ˚ˇˇ˚ˇˇ˚ˇˇ    ˛˛ˇˇˇ˜˝˛ˇ˛
  5621. ˛ˇˇˇˇ
  5622. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜    ˛ˇˇ˛
  5623. ˛ˇˇˇˇ
  5624. ˛ˇˇˇˇ    ˝ˇˇˇ˝˛ˇ˛
  5625. ˛ˇ˛ˇˇ
  5626. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  5627. ˛ˇ˛ˇˇ
  5628. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  5629. ˛ˇˇˇˇ
  5630. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  5631. ˛ˇˇˇˇ
  5632. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  5633. Courier.°dONLNd\êhÆ(eêBEGIN°dONLNd \h»)~{read the preferences settings}°dONLNd1j¢v2(s¢gAutoAdjust := autoDiag;°dONLNdOx¢Ñ,*gShowNames := showName;°dONLNdlÜ¢í2*gGiveImport := isImport;°dONLNdä2*gStepRandom := isRandom;°dONLNd®¢¢Æ2*gEmptyIndex := emptyInd;°dONLNdΔ∞¢º2*gExistIndex := existInd;°dONLNd„æê ®(«êEND;°dONLNdÏ⁄~Êû(„~0{Make sure some preferences globals make sense.}°dONLNd Ë~ÙP*#IF NOT (gExistIndex IN [1..4]) THEN°dONLNdHˆêˆ+gExistIndex := 1;°dONLNd]~P(~#IF NOT (gEmptyIndex IN [1..4]) THEN°dONLNdÖêˆ+gEmptyIndex := 1;°dONLNdõ.~:Ñ(7~{°dONLNdú.Ñ:Ã) Reinstate th°dONLNd®.Ã: )He application'°dONLNd∂. :Ü)Ts resource file.}°dONLNdÀ<~H2(E~UseResFile(gAppsResourceFile);°dONLNdÏJlVÑ(SlEND;°dONLNdÛfZr(oZgPreferencesFile := myResNum;°dONLNdfDr‡)Í{remember its resource ID}°dONLNd8tHÄ`(}HEND;°dONLNd=åäòí+BA°dONLNd>åíò1)#fter determining the name of the prR`°dONLNdaå1òC)üefer$¿°dONLNdeåCòc)ences fi$¿°dONLNdmåcòq) le, $¿°dONLNdqåqò≥) DoReadPrefs$¿°dONLNd|å≥òµ)B $¿°dONLNd}åµòfl)
  5634. calls the °dONLNdáôä•÷(¢äapplication-defi°dONLNdóô÷•    )L ned utility °dONLNd£ô    •Q)3 IsFindFolder°dONLNdØôQ•)H# to see whether the operating envirR`°dONLNd“ô•)üonment °dONLNdŸ¶ä≤ƒ(Øäsupports the °dONLNdʶƒ≤):
  5635. FindFolder°dONLNd¶≤A)< function. (See °dONLNd¶A≤ó)AListing 9-6 on page °dONLNd¶ó≤¶)V179°dONLNd¶¶≤—)
  5636.  for a defi°dONLNd"¶—≤˘)+
  5637. nition of ˇˇ¿Ç°dONLNd,≥äø“(ºä IsFindFolderˇˇÍ÷¬†°dONLNd8≥—ø)G.) If it does, ˇˇ¿Çm¯°dONLNdG≥øI)6 DoReadPrefsˇˇÍ÷m¯°dONLNdR≥IøN)B cXŒ°dONLNdT≥Oø])allXŒ°dONLNdW≥]øb)s ˇˇ¿ÇC§°dONLNdY≥cøi)FC§°dONLNdZ≥iøô)indFoldeC§°dONLNdb≥ôøü)0rˇˇÍ÷C§°dONLNdc≥üø§) t.z°dONLNde≥•øØ)o fÈ–°dONLNdh≥Øø)
  5638. ind the location of the °dONLNdÄ¿äÃî(…äPrR`°dONLNdÇ¿îö)
  5639. efer$¿°dONLNdÜ¿¶À) ences folderg`°dONLNdí¿⁄Ãfl)4. g`°dONLNdî¿flÃÛ)The g`°dONLNdò¿ÛÃ/)
  5640. FindFolderg`°dONLNd¢¿/Ã1)< g`°dONLNd£¿1ÃW)    function g`°dONLNd¨¿WÃ[)&r9¿°dONLNd≠¿[ñ)eturns the volume r  °dONLNd¿¿±Ã√)VeferfiÄ°dONLNdƒ¿¬Ã )ence number and °dONLNd‘Õ䟙(÷äthe dirR`°dONLNd€Õ™Ÿ) ectory ID of that folderï°dONLNdÛÕŸ\)i, if it can be founï°dONLNdÕ\Ÿq)Id. If ï°dONLNd ÕqŸ≠)
  5641. FindFolderï°dONLNdÕ≠Ÿ)< isn’t available or if it °dONLNd0⁄äÊ∞(„äcannot fi°dONLNd9⁄∞ÊŸ)&    nd the PrR`°dONLNdB⁄ŸÊÎ))efer$¿°dONLNdF⁄ÎÊ ) ences folderg`°dONLNdR⁄Ê$)4, g`°dONLNdT⁄$Êf) DoReadPrefsg`°dONLNd_⁄fÊ—)B looks in the default dir9¿°dONLNdx⁄—Ê)kectory on the .°dONLNdÜÁäÛ–(ädefault volume.
  5642. H4H°dONLNdñä
  5643. ©*IMPORTÄ°dONLNdú©
  5644. π)ANT
  5645. ˇ·ˇ‚7^
  5646. °dONLNd†ä (äJust looking in the default dirQ °dONLNdø )Çectory when you cannot fik`°dONLNdÿù)snd the °dONLNdflä%ì("äPrN†°dONLNd·î%§)
  5647. efer˙¿°dONLNd§%fi)ences folder i~¿°dONLNdÛfl%Ò);sn’t ¿°dONLNd¯Ú%ı)r€¿°dONLNd˘ı% )eally Ö@°dONLNdˇ%g)the best thing to do. ´`°dONLNdg%m)ZYk‡°dONLNdm%≥)our application °dONLNd&%ä1≥(.äwould prû‡°dONLNd.%≥1))obably want to look i†°dONLNdC%1)^n tú`°dONLNdF%1@) he Systeœ@°dONLNdN%@1V)$m Fo'‡°dONLNdR%W1ß)lder to see if your °dONLNdf1ä=ì(:äprG °dONLNdh1î=§)
  5648. eferÛ@°dONLNdl1§=ƒ)ences fi뇰dONLNdt1≈=Í)!
  5649. le is ther †°dONLNd~1Î=Ô)&e’@°dONLNd1Ô=Ò).,Zapf DingbatsU@°dONLNdâ4˜<˝)s
  5650. .°dONLNdãBäN¶(KäOnce t°dONLNdëB¶N≠)h°dONLNdíB≠N¬)e tarR`°dONLNdóB¬N÷)get fR`°dONLNdúB÷NX)older is successfully located, R`°dONLNdªBXNî)Ç
  5651. DoReadPrefR`°dONLNd≈BîNö)<sR`°dONLNdΔBöN†) cR`°dONLNd»B†NΔ)    alls the R`°dONLNd—BΔN)& HOpenResFileR`°dONLNd›BN)H .°dONLNdfiOä[˝(Xäfunction to try to open a fi·Ä°dONLNd˙O˝[)sle Ä°dONLNd˝O[=) having the rv`°dONLNd    O=[T)5equir熰dONLNdOT[|)ed name ‚°dONLNdO|[±)(in that foldeâ°dONLNd#O≤[µ)6ræ@°dONLNd$Oµ[∑).>@°dONLNd%O∏[Ó) If no such fi °dONLNd3OÓ[    )6le can .°dONLNd:\äh(eäbe opened (as indicated by a rR`°dONLNdX\h7)Ö    eturned r$¿°dONLNda\7hI)(efer˜ °dONLNde\Hhù)ence number of –1), ˜ °dONLNdy\ùhfl)U DoReadPrefs˜ °dONLNdÑ\flh )B  calls the °dONLNdèiäu÷(räapplication-defi°dONLNdüi÷u)Lned function °dONLNd¨iut)8DoCreatePrefsFile°dONLNdΩituª)f to attempt to crR`°dONLNdŒiªuÌ)G eate a new °dONLNdŸväÇî(äprR`°dONLNd€vîǶ)
  5652. efer$¿°dONLNdflv¶ÇΔ)ences fi$¿°dONLNdÁvΔÇÍ)     le. (See $¿°dONLNdvÍÇ)$ Listing 3-4$¿°dONLNd˚vÇE)0
  5653.  for a defi$¿°dONLNdvEÇm)+
  5654. nition of $¿°dONLNdvmÇ”)(DoCreatePrefsFile$¿°dONLNd!v”Ç‹)f.) .°dONLNd%àäîÍ(ëäIf the existing or newlı °dONLNd<àÍîˆ)`y ctÄ°dONLNd?à˜î˙)r9Ä°dONLNd@à˚î)eated prr°dONLNdHàî/)$efer °dONLNdLà0îP)ences fiº¿°dONLNdTàPî◊)  le is successfully opened, then .°dONLNdtïä°Ã(ûä DoReadPrefs°dONLNdïðÊ)B calls °dONLNdÜïÊ°")
  5655. UseResFile°dONLNdêï"°e)< to make that fPÄ°dONLNdüïe°ó)C ile the curr"‡°dONLNd´ïó°´)2ent rı@°dONLNd∞ï™°¡)esour«†°dONLNdµï¡°–)ce fò °dONLNdπï–°)ile. Then it ˇˇ«Ê°dONLNdΔ¢äÆé(´ärR`°dONLNd«¢éÆ∫)
  5656. eads the r¥å°dONLNd—¢∫Æ—),esourÜÏ°dONLNd÷¢—Æ˝) ce of type ˇˇW≤fiû°dONLNd·¢˝ÆE), kPrefResTypeˇˇ«Êfiû°dONLNdÌ¢EÆg)H and ID ˇˇW≤6P°dONLNdı¢hƧ)#
  5657. kPrefResIDˇˇ«Ê6P°dONLNdˇ¢§Æ≠)< fr–ñ°dONLNd¢≠ÆŸ)        om that fi`b°dONLNd ¢⁄Æ)-le. If all goes ˇÏ@ˇ ˇˇˇˇ@
  5658. ˇ·ˇ‚7^
  5659. 4*\¯, Palatino&e.3+l"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@l    Resources4⁄*˙¯
  5660. (‡*64    )BUsing Custom Resources4^*¿¯
  5661. .°dONLNd\lhÜ(elwell, ,
  5662. Courier°dONLNd\Üh») DoReadPrefs°dONLNd\»hŒ)B rR`°dONLNd\Œh)eads the curr$¿°dONLNd \hE):ent settings fr˜ °dONLNd/\Dhn)<    om that r…Ä°dONLNd8\nhÖ)*esourõ‡°dONLNd=\ÖhÍ)ce and assigns them to .°dONLNdTiluë(rlthe appr¶†°dONLNd\iëu˚)%opriate global variables:.°dONLNdvÄlå(âlWITH MyPrefsHnd(myPrefs)^^ DO°dONLNdïé~öú+BEGIN°dONLNd°é¸ö∂)~{read the preferences settings}°dONLNd√úê® (•êgAutoAdjust := autoDiag;°dONLNdfi™ê∂*gShowNames := showName;°dONLNd¯∏ꃠ*gGiveImport := isImport;°dONLNdΔê“ *gStepRandom := isRandom;°dONLNd.‘ꇠ*gEmptyIndex := emptyInd;°dONLNdI‚êÓ *gExistIndex := existInd;°dONLNdc~¸ñ(˘~END;°dONLNdhlè(lFinallyd@°dONLNdoéì)", d@°dONLNdqì’) DoReadPrefsd@°dONLNd|’Ó)B ensur6†°dONLNdÇÓ≈)0es that the values of the two index variables ar    °dONLNd≤≈Ó)◊    e within .°dONLNdªl!Â(lacceptable limits and then r†°dONLNd◊Ê!˚)zestorô °dONLNd‹˚!V)es the application’s r}@°dONLNdÚV!n)[esour≈Ä°dONLNd˜n!)ce fiå °dONLNd¸Ä!∏)le as the currÄ°dONLNd
  5663. π!Õ)9ent r)‡°dONLNdÕ!Â)esourr °dONLNdÂ!)ce .°dONLNd"l.s(+lfi°dONLNd"s.≠)le by calling °dONLNd'"≠.È):
  5664. UseResFile°dONLNd1"È.s)< once again. Notice that the prR`°dONLNdP"s.Ö)äefer$¿°dONLNdT"Ö.¢)ences r˜ °dONLNd["°.∏)esour…Ä°dONLNd`"∏. )ce fi…Ä°dONLNde" .Ú) le is left .°dONLNdp/l;ì(8l    open; thié¿°dONLNdy/ì;¨)'s way °dONLNd~/¨;¥), tXÄ°dONLNdÅ/¥;»)he V臰dONLNdÖ/«;@)enn Diagrammer applicatiom`°dONLNdû/A;v)z n need not rç`°dONLNd™/v;©)5 eopen the fiS¿°dONLNd∂/™;‚)4le if the user °dONLNd≈<lH◊(Elwants to change the stor‚†°dONLNd›<◊HÓ)ked pr °dONLNd‚<ÔHˇ)eferª@°dONLNdÊ<ˇH>)ences settings..°dONLNdˆNlZÄ(WlThe °dONLNd˙NÄZÊ)DoCreatePrefsFile°dONLNd NÊZ[)f function that is called by °dONLNd'N[Zù)u DoReadPrefs°dONLNd2NùZª)B is defi°dONLNd:NªZÿ)ned in ˇˇ‰ê°dONLNdB[lgõ(dl Listing 3-4dê°dONLNdM[úg‘)0. Essentially-`°dONLNdZ[‘gÿ)8, ˇˇ≠∞°dONLNd\[Ÿg?)DoCreatePrefsFileˇˇ‰ê°dONLNdm[?gH)f cr»‡°dONLNdp[Hgm)        eates a rd`°dONLNdy[ngÖ)&esour6¿°dONLNd~[Ögñ)ce fiP°dONLNdÉ[óg‘)le in the apprõ`°dONLNdë[‘g˜)=opriate .°dONLNdôhlt·(qllocation and with the appr¶†°dONLNd≥h·tV)uopriate name; then it copieg†°dONLNdŒhWtû)vs into that new r#`°dONLNdflhüt∑)Hesourk†°dONLNd‰h∑t»)ce fi2@°dONLNdÈh…t”)le d@°dONLNdÏh”t‡)
  5665. an °dONLNdÔulŵ(~lexisting set of pr|`°dONLNduµÅ≈)Iefer(Ä°dONLNduΔÅŸ)ence˝`°dONLNd    uŸÅÁ)s (sK@°dONLNduËÅÙ)tor» °dONLNduÙÅ\) ed in the application’s rƒ¿°dONLNd)u\Åt)hesour°dONLNd.uuÅì)ce fork°dONLNd5uìÅò)).
  5666. §*¨¯4•*¨¯"•*_
  5667. ˇ·ˇ‚7^    °dONLNd8öl•ò(¢l Listing 3-4°dONLNdDö∞•)DCreating a preferences fi@°dONLNd]ö•)cle
  5668. .°dONLNd`¥*¿∞(Ω*AFUNCTION DoCreatePrefsFile (myVRefNum: Integer; myDirID: LongInt;°dONLNd¨¬fiŒz+¥ myName: Str255): Integer;°dONLNd»–<‹N(Ÿ<VAR°dONLNdŒfiNÍÑ+    myResNum:°dONLNd€fiñÍΔ)HInteger;°dONLNdÊÏN¯Ñ(ıN    myResult:°dONLNdÛÏñ¯∫)HOSErr;°dONLNd¸˙Nl(NmyID:°dONLNd˙ñΔ)HInteger;°dONLNd˙fi‡)H+{resource ID of resource in app's res fork}°dONLNd?NÑ(N    myHandle:°dONLNdLñ¿)HHandle;°dONLNdWfi¬)H&{handle to resource in app's res fork}°dONLNdÄN"x(NmyType:°dONLNdãñ"Δ)HResType;°dONLNdófi"í)H{ignored; used for GetResInfo}°dONLNd∂$*0H(-*BEGIN°dONLNdΩ2<>®+myResult := noErr;°dONLNd—@<L>*+HCreateResFile(myVRefNum, myDirID, myName);°dONLNd˛N<ZÃ*IF ResError = noErr THEN°dONLNd\Nhl+BEGIN°dONLNd"j`v‡+@myResNum := HOpenResFile(myVRefNum, myDirID, myName, fsCurPerm);°dONLNdfx`щ*IF myResNum <> -1 THEN°dONLNdÅÜríê+BEGIN°dONLNdåîц8+UseResFile(gAppsResourceFile);°dONLNd∞¢ÑÆ∂*3myHandle := Get1Resource(kPrefResType, kPrefResID);°dONLNdÈ∞Ѻ*IF ResError = noErr THENˇ-Ï@ˇ ˇˇˇˇ@
  5669. ˇ·ˇ‚7^
  5670. 4H\, Palatino&e.3+ä"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@ä    Resources4⁄ä˙(‡äUsing Custom Resources
  5671. (‡ 65
  5672. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5673. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5674.  
  5675.  
  5676.  
  5677.  
  5678.  
  5679. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  5680. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5681. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5682.  
  5683.  
  5684.  
  5685.  
  5686.  
  5687. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜
  5688. ˛ˇ˛ˇˇ ˇˇ˛ˇˇ     ˇˇˇ˙ˇ
  5689. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  5690. 454+?òÄ
  5691. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5692. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5693.  
  5694.  
  5695.  
  5696.  
  5697.  
  5698. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˛˙ˇ˚ˇˇ˚ˇˇ˚ˇˇ    ˛˛ˇˇˇ˜˝˛ˇ˛
  5699. ˛ˇˇˇˇ
  5700. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜    ˛ˇˇ˛
  5701. ˛ˇˇˇˇ
  5702. ˛ˇˇˇˇ    ˝ˇˇˇ˝˛ˇ˛
  5703. ˛ˇ˛ˇˇ
  5704. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  5705. ˛ˇ˛ˇˇ
  5706. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  5707. ˛ˇˇˇˇ
  5708. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  5709. ˛ˇˇˇˇ
  5710. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  5711. Courier.°dONLNd\¥h“(e¥BEGIN°dONLNdjΔv»++GetResInfo(myHandle, myID, myType, myName);°dONLNd@xΔÑ⁄*.myResult := DoCopyResource(kPrefResType, myID,°dONLNd}ÜDí¯+~ gAppsResourceFile, myResNum);°dONLNd¢î¥†Δ(ù¥END°dONLNd´¢¢Æ∫(´¢ELSE°dONLNd∂∞¥º“+BEGIN°dONLNd√æΔ P+CloseResFile(myResNum);°dONLNd‚ÃΔÿÊ*0myResult := HDelete(myVRefNum, myDirID, myName);°dONLNd⁄ΔÊ *myResNum := -1;°dONLNd0Ë¥ÙÃ(Ò¥END;°dONLNd9ˆê®(ˇêEND;°dONLNdB~2(~DoCreatePrefsFile := myResNum;°dONLNdc l,Ñ()lEND;°dONLNdh.H:`(7HEND;.°dONLNdmFäRê+BTµ¿°dONLNdnFèRË)o copy the existing rÁÄ°dONLNdÉFËR)Yesour/¿°dONLNdàFR)ce frÄ°dONLNdçFRt)om the application’s r)Ä°dONLNd£FtRå)`esourq¿°dONLNd®FåRù)ce fi8`°dONLNd≠FûR„)le to the new pr8¿°dONLNdΩF„RÛ)Eefer‰‡°dONLNd¡FÛR)ences .°dONLNd«Sä_é(\ärR`°dONLNd»Sé_•)esour$¿°dONLNdÕS•_∑)ce fi$¿°dONLNd“S∑_≈)le, $¿°dONLNd÷S≈_+)DoCreatePrefsFile$¿°dONLNdÁS+_£)f calls the application-defi$¿°dONLNdS£_π)xned r˜ °dONLNdS∏_÷)outine °dONLNd`älfi(iäDoCopyResource°dONLNd`fil„)T. !†°dONLNd`„lÎ)Aï°dONLNd`Íl)  version of ï°dONLNd+`ln)0DoCopyResourceï°dONLNd9`nl§)T is shown in ï°dONLNdF`§l‘)6 Listing 3-5ï°dONLNdQ`‘l◊)0.
  5712. èHó4êHó"êH_
  5713. ˇ·ˇ‚7^    .°dONLNdSÖäê∂(çä Listing 3-5°dONLNd_ÖŒên)D&Copying a resource from one resource fip°dONLNdÜÖoê°)°le to another
  5714. .°dONLNdîüH´Ú(®HGFUNCTION DoCopyResource (rType: ResType; rID: Integer; source: Integer;°dONLNdÂ≠Íπt+¢ dest: Integer): OSErr;°dONLNd˛ªZ«l(ƒZVAR°dONLNd…l’¢+    myHandle:°dONLNd…¥’fi)HHandle;°dONLNd…2’⁄)~{handle to resource to copy}°dONLNd>◊l„ñ(‡lmyName:°dONLNdI◊¥„fi)HStr255;°dONLNdW◊2„Œ)~{name of resource to copy}°dONLNdtÂlÒñ(ÓlmyAttr:°dONLNdÂ¥Ò‰)HInteger;°dONLNdéÂ2Ò∞)~{resource attributes}°dONLNd¶Ûlˇñ(¸lmyType:°dONLNd±Û¥ˇ‰)HResType;°dONLNd¿Û2ˇÊ)~{ignored; used for GetResInfo}°dONLNd·lä(
  5715. lmyID:°dONLNdÍ¥‰)HInteger;°dONLNd˘2Ê)~{ignored; used for GetResInfo}°dONLNdl¢(l    myResult:°dONLNd'¥ÿ)HOSErr;°dONLNd0l)®(&l
  5716. myCurrent:°dONLNd>¥)‰)HInteger;°dONLNdND))ê {current resource file on entry}°dONLNdo+H7f(4HBEGIN°dONLNdv9ZEÍ+myCurrent := CurResFile;°dONLNdõ9DE)Í {remember current resource file}°dONLNdΩGZSÃ(PZUseResFile(source);°dONLNd›GDS¯)Í{set the source resource file}°dONLNd˝UZa8(^Z%myHandle := Get1Resource(rType, rID);°dONLNd/UDa‡)Í{open the source resource}°dONLNdKcZo‰(lZIF myHandle <> NIL THEN°dONLNdeql}ä+BEGIN°dONLNdn~ãÄ++GetResInfo(myHandle, myID, myType, myName);°dONLNd®åã‡(àå{get res name}°dONLNd∫ç~ô>(ñ~ myAttr := GetResAttrs(myHandle);°dONLNdÈçåô(ñå{get res attributes}°dONLNdõ~ß(§~DetachResource(myHandle);°dONLNd%õDßÚ)Δ{so we can copy the resource}°dONLNdF©~µ‰(≤~UseResFile(dest);°dONLNdb©Dµ˛)Δ{set destination resource file}ˇ˛@ˇ ˇˇˇˇ@
  5717. ˇ·ˇ‚7^
  5718. 4*\¯, Palatino&e.3+l"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@l    Resources4⁄*˙¯
  5719. (‡*66    )BUsing Custom Resources4^*¿¯,
  5720. Courier
  5721. .°dONLNd\`h(e`IF ResError = noErr THEN°dONLNdjrvn+*AddResource(myHandle, rType, rID, myName);°dONLNdKx`Ñ(Å`IF ResError = noErr THEN°dONLNdhÜrí&+SetResAttrs(myHandle, myAttr);°dONLNdêÜ&íŒ)¥{set res attributes of copy}°dONLNd∞î`†(ù`IF ResError = noErr THEN°dONLNdÕ¢rÆ+ChangedResource(myHandle)°dONLNdÏ¢Æ)ñ;°dONLNdÒ¢&Ƭ){mark resource as changed}°dONLNd∞`º(π`IF ResError = noErr THEN°dONLNd,ær +WriteResource(myHandle);°dONLNdNæ& §)¥{write resource data}°dONLNdfÃNÿf(’NEND;°dONLNdmË<Ùfi(Ò<DoCopyResource := ResError;°dONLNdïË&Ùû)Í{return result code}°dONLNd´ˆ<ÿ(ˇ<ReleaseResource(myHandle);°dONLNd“ˆ&¬)Í{get rid of resource data}°dONLNdÓ<¿(<UseResFile(myCurrent);°dONLNd&Ê)Í {restore original resource file}°dONLNd2*B(*END;°dONLNd7*l6∞+BAs you can see, °dONLNdG*∞6)DDoCopyResource°dONLNdU*67)T  opens the rR`°dONLNda*76N)3esour$¿°dONLNdf*N6“) ce to be copied. It copies that .°dONLNdÜ7lCo(@lrE°dONLNdá7pCà)esourç@°dONLNdå7àC)ce into the destination rk@°dONLNd•7C)hesour≥Ä°dONLNd™7C)ce fiz °dONLNdØ7C†)le by making the destination fiÈ °dONLNdŒ7†CÃ)Ü le the currßÄ°dONLNdŸ7ÕC›)-ent .°dONLNd›DlPp(MlrR`°dONLNdfiDpPá)esour$¿°dONLNd„DáPô)ce fi$¿°dONLNdËDôP )le and then calling the Resour˜ °dONLNdDPX)Ü ce Manager r…Ä°dONLNdDXPv)9outine …Ä°dONLNdDvP∏) AddResource…Ä°dONLNd$D∏PÁ)B    . However  °dONLNd-DÁPÏ)/, °dONLNd/Ql]É(ZlbeforR`°dONLNd4QÉ]¨)
  5722. e calling R`°dONLNd>Q¨]Ó)) AddResourceR`°dONLNdIQÓ]Ö)B#, you need to disassociate the sour$¿°dONLNdlQÖ]î)óce r˜ °dONLNdpQì]™)esour…Ä°dONLNduQ™]Ω)ce frõ‡°dONLNdzQΩ]⁄)om its °dONLNdÅ^ljp(glrR`°dONLNdÇ^pjá)esour$¿°dONLNdá^ájô)ce fi$¿°dONLNdå^ôjß)le. $¿°dONLNdê^ßjÕ)Because $¿°dONLNdò^Õj)& AddResource$¿°dONLNd£^j)B r˜ °dONLNd•^j+)equir…Ä°dONLNd™^+j0)e…Ä°dONLNd´^0j<)s a…Ä°dONLNdÆ^<jÓ) ' handle to some data in memory that is °dONLNd’klwÈ(tlnot a handle to an existing rR`°dONLNdÚkÈw)}esour$¿°dONLNd˜kw)c$¿°dONLNd¯kw )e,$¿°dONLNd˙k wh) you need to call the $¿°dONLNdkhwº)\DetachResource$¿°dONLNdkºw»)T pr˜ °dONLNd!k«w‰) ocedur…Ä°dONLNd'k‰wˆ)e to .°dONLNd,xlÑ‹(Ålcut the link between the r∫°dONLNdFx‹ÑÙ)pesour@°dONLNdKxıÑ_)ce data and its original rµ‡°dONLNdex_Ñw)jesour˛ °dONLNdjxwÑà)ce fiƒ¿°dONLNdoxâÑì)le.°dONLNdsälñr(ìlY@Ä°dONLNdtärñ)!ou can determine whether a Resourr`°dONLNdïäñÏ)ù2ce Manager call succeeded by calling the function .°dONLNd«ól£ñ(†lResErro°dONLNdŒóñ£ú)*r¬†°dONLNdœóõ£ƒ)    , which rï°dONLNdÿ󃣘)) eturns the rg`°dONLNd‰ó˜£-)3esult code fr9¿°dONLNdÒó-£i)6om the most r  °dONLNd˛ói£”)<ecently executed ResourfiÄ°dONLNdó“£›)ice °dONLNd§l∞ö(≠l    Manager rR`°dONLNd!§ö∞ª).outine. R`°dONLNd)§ª∞œ)!The R`°dONLNd-§œ∞#)DoCopyResourceR`°dONLNd;§#∞%)T R`°dONLNd<§%∞K)    function R`°dONLNdE§K∞c)&calls R`°dONLNdK§c∞ì)ResErrorR`°dONLNdS§ì∞ô)0 r$¿°dONLNdU§ô∞)epeatedly to make .°dONLNdg±lΩz(∫lsurâ °dONLNdj±zΩ©) e that the rÀ@°dONLNdv±©Ω¡)/esourÄ°dONLNd{±¬Ωx)*ce data was successfully added, that the rx°dONLNd•±xΩê)∂esour¿@°dONLNd™±êΩŸ)ce attributes wer@°dONLNdª±⁄Ω·)Je °dONLNdΩæl "(«l+successfully copied, that the destination r·`°dONLNdËæ" :)∂esour)†°dONLNdÌæ; Ë)%ce was successfully marked as changedö@°dONLNdæË Í)≠,@°dONLNdæΠÌ) °dONLNdÀl◊ç(‘land tha‡°dONLNdÀé◊¬)" t the data wU¿°dONLNd'À¬◊Y)4$as successfully written out to disk.°dONLNdL›lÈ(Êl(It’s easy to see how to save a set of pr °dONLNdt›È!)•eferÀ@°dONLNdx›!Èj)ences to the user∞ °dONLNdâ›kÈ~)J’s pr˚Ä°dONLNdé›~Èé)efer߆°dONLNdí›èÈØ)ences fiF@°dONLNdö›∞ÈÓ)!le. In essence, °dONLNd™Ílˆ«(Ûlyou simply need to r¸°dONLNdæÍ«ˆZ)[!everse the strategy employed in r@°dONLNdflÍ[ˆñ)îeading the prÏ°dONLNdÏÍ):eferò °dONLNdͶˆ√)ences. ™°dONLNd˜Í√ˆÒ) Listing 3-6J@°dONLNdÍÚˆÙ)/ .°dONLNd˜l~(ldefi°dONLNd˜~à)ne°dONLNd    ˜à†)
  5723. s the °dONLNd˜†¶)D°dONLNd˜¶‚)
  5724. oSavePrefs°dONLNd˜‚‰)< °dONLNd˜‰Ó)prR`°dONLNd˜Ó )
  5725. ocedur$¿°dONLNd#˜ 9)
  5726. e, which t$¿°dONLNd-˜9O).he V    °dONLNd1˜N”)enn Diagrammer application     °dONLNdL˜”Î)Öcalls °dONLNdRl#(l(whenever the user wants to save the currR`°dONLNdz#=)∑ent pr$¿°dONLNdÄ=O)efer˜ °dONLNdÑNè)ences settings. ˜ °dONLNdîè£)AThe ˜ °dONLNdò£Â) DoSavePrefs˜ °dONLNd£ÂÁ)B .°dONLNd§lu(lprG °dONLNd¶vî)
  5727. ocedurfi`°dONLNd¨îõ)e (°dONLNdÆú-)!assumes that the application’s pr9Ä°dONLNdœ-=)ëefer†°dONLNd”=])ences fiÑ@°dONLNd€^})!    le is alr    °dONLNd‰~Æ) 
  5728. eady open.
  5729. @*H¯4A*H¯"A*_
  5730. ˇ·ˇ‚7^    °dONLNdÔ6lAò(>l Listing 3-6°dONLNd˚6∞A=)D#Saving current preferences settings
  5731. .°dONLNdP*\Æ(Y*PROCEDURE DoSavePrefs;°dONLNd7^<jN+VAR°dONLNd=lNxê+ myPrefData:°dONLNdLlñx¿)HHandle;°dONLNdWlfixå)H{handle to new resource data}°dONLNdwzNÜÑ(ÉN    myHandle:°dONLNdÑzñÜ¿)HHandle;°dONLNdèzfiÜò)H{handle to resource to replace}°dONLNd±àNîx(ëNmyName:°dONLNdºàñî¿)HStr255;°dONLNd«àfiîz)H{name of resource to copy}°dONLNd‰ñN¢x(üNmyAttr:°dONLNdÔññ¢Δ)HInteger;°dONLNd˚ñfi¢\)H{resource attributes}°dONLNd    §N∞x(≠NmyType:°dONLNd    §ñ∞Δ)HResType;°dONLNd    *§fi∞í)H{ignored; used for GetResInfo}°dONLNd    K≤Næl(ªNmyID:°dONLNd    T≤ñæΔ)HInteger;°dONLNd    `≤fiæí)H{ignored; used for GetResInfo}ˇ.d@ˇ ˇˇˇˇ@
  5732. ˇ·ˇ‚7^
  5733. 4H\, Palatino&e.3+ä"CHAPTER ”)>3,     Helvetica    ˇˇ—ÚˇÆ(@ä    Resources4⁄ä˙(‡äUsing Custom Resources
  5734. (‡ 67
  5735. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5736. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5737.  
  5738.  
  5739.  
  5740.  
  5741.  
  5742. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  5743. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5744. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5745.  
  5746.  
  5747.  
  5748.  
  5749.  
  5750. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜
  5751. ˛ˇ˛ˇˇ ˇˇ˛ˇˇ     ˇˇˇ˙ˇ
  5752. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  5753. 454+?òÄ
  5754. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5755. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5756.  
  5757.  
  5758.  
  5759.  
  5760.  
  5761. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˛˙ˇ˚ˇˇ˚ˇˇ˚ˇˇ    ˛˛ˇˇˇ˜˝˛ˇ˛
  5762. ˛ˇˇˇˇ
  5763. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜    ˛ˇˇ˛
  5764. ˛ˇˇˇˇ
  5765. ˛ˇˇˇˇ    ˝ˇˇˇ˝˛ˇ˛
  5766. ˛ˇ˛ˇˇ
  5767. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  5768. ˛ˇ˛ˇˇ
  5769. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  5770. ˛ˇˇˇˇ
  5771. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  5772. ˛ˇˇˇˇ
  5773. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  5774. Courier.°dONLNd\Hhf(eHBEGIN°dONLNdjZvh+-{Make sure we have an open preferences file.}°dONLNd6xZÑ*IF gPreferencesFile = -1 THEN°dONLNdXÜlíÿ+exit(DoSavePrefs);°dONLNdm¢ZÆÄ(´Z1myPrefData := NewHandleClear(sizeof(MyPrefsRec));°dONLNd†∞ZºΔ*HLock(myPrefData);°dONLNd¥æZ * WITH MyPrefsHnd(myPrefData)^^ DO°dONLNd◊Ãlÿä+BEGIN°dONLNd‡⁄~Ê+autoDiag := gAutoAdjust;°dONLNd¸Ë~Ù*showName := gShowNames;°dONLNdˆ~*isImport := gGiveImport;°dONLNd3~*isRandom := gStepRandom;°dONLNdO~*emptyInd := gEmptyIndex;°dONLNdk ~,*existInd := gExistIndex;°dONLNdÜ.l:Ñ(7lEND;°dONLNdçJZV(SZUseResFile(gPreferencesFile);°dONLNd∫JzV˛(Sz{use preferences file}°dONLNd“XZdå(aZ3myHandle := Get1Resource(kPrefResType, kPrefResID);°dONLNdfZr‰*IF myHandle <> NIL THEN°dONLNd!tlÄä+BEGIN°dONLNd*Ç~éÄ++GetResInfo(myHandle, myID, myType, myName);°dONLNddÇåé‡(ãå{get res name}°dONLNdvê~ú>(ô~ myAttr := GetResAttrs(myHandle);°dONLNd•êåú(ôå{get res attributes}°dONLNdΩû~™(ß~RmveResource(myHandle);°dONLNdÿ¨~∏*IF ResError = noErr THEN°dONLNdı∫êΔÏ+:AddResource(myPrefData, kPrefResType, kPrefResID, myName);°dONLNd3»~‘(—~IF ResError = noErr THEN°dONLNdP÷ê‚,+WriteResource(myPrefData);°dONLNdm‰lÑ(ÌlEND;°dONLNdtZ “(    ZHUnlock(myPrefData);°dONLNdäZ*ReleaseResource(myPrefData);°dONLNd®Z(*UseResFile(gAppsResourceFile);°dONLNd‘V()¸{restore app's resource file}°dONLNdÚ*H6`(3HEND;°dONLNd˜BäNû+BThe °dONLNd˚BûN‡) DoSavePrefs°dONLNdB‡N‚)B °dONLNdB‚NÏ)prR`°dONLNd    BÏN    )
  5775. ocedur$¿°dONLNdB    N)e $¿°dONLNdBN)cr˜ °dONLNdBNW)eates a new pr…Ä°dONLNd!BWNi)@eferõ‡°dONLNd%BiNÜ)ences rn@°dONLNd,BÜNò)ecor@†°dONLNd0BòN∫)d and fi@†°dONLNd8B∫NÏ)" lls in the fi@†°dONLNdEBÏN)2elds as .°dONLNdMOä[û(XäapprI@°dONLNdQOü[È)opriate. Then it r$¿°dONLNdcOÈ[L)Jemoves the existing pr¨ °dONLNdyOL[\)ceferX@°dONLNd}O][{)ences rØ °dONLNdÑO{[ì)esour˜`°dONLNdâOì[¶)ce fr  °dONLNdéO¶[—)    om the pr∏ °dONLNdóO—[·)+eferd@°dONLNdõO‚[)ences fi‡°dONLNd£O[)!le °dONLNd¶\ähÆ(eäand add$†°dONLNd≠\Øh∫)%s a·†°dONLNd∞\∫h’)  new rò†°dONLNd∂\÷hÓ)esour‡‡°dONLNdª\Óh)ce. TPÄ°dONLNd¿\h2)
  5776. o make sur˚‡°dONLNd \2hv)0e that the new r∞°dONLNd⁄\whè)Eesour¯@°dONLNdfl\èh )ce data is written out to diskNÄ°dONLNd˝\h)~, ˇ˛õf.°dONLNdˇiäuÃ(rä DoSavePrefsˇˇâ"°dONLNd
  5777. iÃu—)B c    "°dONLNd i“u˜)    alls the ˇ˛õff°dONLNdi˜uE)%WriteResourceˇˇâ"f°dONLNd"iEuP)N prvË°dONLNd%iPum) ocedurIH°dONLNd+imuô)
  5778. e. Finally∂™°dONLNd5iòuú)+, ˇ˛õf?ðdONLNd7iùufl) DoSavePrefsˇˇâ"?ðdONLNdBiflu‰)B rõN°dONLNdDi‰u˙)estormÆ°dONLNdIi˙u)es the .°dONLNdPväÇ…(äapplication’s rÄ °dONLNd_v…Ç·)?esour»`°dONLNddv·ÇÚ)ce fiè°dONLNdivÛÇ+)le as the curr
  5779. `°dONLNdwv,Ç@)9ent r,¿°dONLNd|v@ÇX)esouru°dONLNdÅvXÇi)ce fi;†°dONLNdÜvjÇt)le.ˇJ@ˇ ˇˇˇˇ@
  5780. ˇ·ˇ‚7^
  5781. 4^*¿¯ˇº@ˇ ˇˇˇˇ@
  5782. ˇ·ˇ‚7^
  5783. 4⁄∫˙,     Helvetica    .(‡∫Contents, Palatino
  5784. (‡ 69    3, Ã(#∫CHAPTER ßí)h4
  5785. ˇˇˇˇˇˇˇˇ4l4älòÄ0l@äoMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5786. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5787.  
  5788.  
  5789.  
  5790.  
  5791.  
  5792. ˆ                        ˜¯˘˙˚¸˝˛ˇl@äol@äo$——————————————————————————————òÄ
  5793. l6ä@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5794. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5795.  
  5796.  
  5797.  
  5798.  
  5799.  
  5800. ˆ                        ˜¯˘˙˚¸˝˛ˇl6ä@l6ä@˜˜˜˜˜˜˜˜˜˜˜˜¸ˇˇ˛¸˛ˇˇ¸ˇˇˇ˛˙ˇ˛˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜ˇˇˇˇˇˇ(JH
  5801. Figure 4-0*     Listing 4-0*    T)able 4-0
  5802. zH,
  5803. 4zH, H°dONLNd∫*˘+m Contentsˇˇˇˇˇˇ
  5804. ˇ·ˇ‚7^ˇˇ∫Ρ◊(qH4°dONLNd]∫y)rEvents
  5805. °dONLNd;∫Gˆ*” About EventsÍ@°dONLNd;
  5806. G)P71°dONLNd!H∫T˙(Q∫Initializing an O†°dONLNd1H˙T.)@ ApplicationÕ¿°dONLNd>HBTL)H74°dONLNdAU∫a(^∫Receiving Eventse`°dONLNdSUa$)`75°dONLNdVb∫nä(k∫+Handling Events Outside the Main Event Loop∞‡°dONLNdÉbûn®)‰79ˇJ@ˇ ˇˇˇˇ@
  5807. ˇ·ˇ‚7^
  5808. 4^*¿¯ˇ?@ˇ ˇˇˇˇ@
  5809. ˇ·ˇ‚7^, Palatino&e.3+ä"CHAPTER ”)>4
  5810. 4⁄ä˙,     Helvetica    (‡ä About Events
  5811. (‡ 71
  5812. ˇˇˇˇˇˇˇˇ4l4älòÄ0l@äoMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5813. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5814.  
  5815.  
  5816.  
  5817.  
  5818.  
  5819. ˆ                        ˜¯˘˙˚¸˝˛ˇl@äol@äo$——————————————————————————————òÄ
  5820. l6ä@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5821. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5822.  
  5823.  
  5824.  
  5825.  
  5826.  
  5827. ˆ                        ˜¯˘˙˚¸˝˛ˇl6ä@l6ä@˜˜˜˜˜˜˜˜˜˜˜˜¸ˇˇ˛¸˛ˇˇ¸ˇˇˇ˛˙ˇ˛˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  5828. 4è4Ö?òÄ
  5829. è6Ö@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5830. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5831.  
  5832.  
  5833.  
  5834.  
  5835.  
  5836. ˆ                        ˜¯˘˙˚¸˝˛ˇè6Ö@è6Ö@$˛˙ˇ
  5837. ˛ˇˇˇ
  5838. ˛ˇˇˇ
  5839. ˛ˇˇˇ
  5840. ˛ˇˇˇ˜˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˝˛ˇ˛
  5841. ˛ˇˇˇˇ
  5842. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝¸ˇ
  5843. ˛ˇ˛ˇˇ    ˛ˇˇ˛
  5844. ˛ˇˇˇˇ
  5845. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜    ˇˇ—ÚˇÆ°dONLNd8äC§(@äEventsˇˇˇˇˇˇ≠>(@4
  5846. °dONLNd\äh°(eä=This chapter describes how you can use the Event Manager to r⁄`°dONLNdD\°h(e°eceive information about °dONLNd]iäuü(räuser `°dONLNdbi†u∫)action‚@°dONLNdhi∫u≈)s aü@°dONLNdkiΔu„) nd to r    @°dONLNdri‰uv)"eceive notice of changes in the pr‡‡°dONLNdîiuu)ë%ocessing status of your application. °dONLNdπväÇ÷(äLOne of the key elements of a well-written Macintosh application is its “userà°dONLNdv÷ÇÙ(÷-center¸@°dONLNd vÙÇ)ed” °dONLNdÉäè(åäYdesign. This means, among other things, that instead of carrying out a sequence of steps °dONLNdiêäú¶*in a pr‡°dONLNdpêßúÎ)edetermined or‹ °dONLNd~êÍú¯)Cderˆ¿°dONLNdÅê¯ú)?, the application is driven primarily by user actions (such as °dONLNd¿ùä©‹(¶ämoving the mouseÌ@°dONLNd–ù‹©Í)R, pr¥`°dONLNd‘ùΩ )essing t@°dONLNd‹ù©Í)"0he mouse button, and typing characters) whose orlÄ°dONLNd ùÍ©˚)›der °dONLNd™ä∂Ô(≥äcannot in general be prο°dONLNd'™Ô∂Ú)e9edicted. This chapter describes how the Macintosh system °dONLNd`∑ä√´(¿äsoftwar‰¿°dONLNdg∑´√∂)!e rÛ`°dONLNdj∑∂√¡) <eports user actions to your application and shows how to strο°dONLNd¶∑¡√ÿ(¿¡ucturq†°dONLNd´∑Ÿ√˜)e your °dONLNd≤ƒä–µ(Õä
  5847. applicatioeÄ°dONLNdºƒ∂–¡),n t˘@°dONLNdøƒ¡–h) 'o facilitate the implementation of user«`°dONLNdʃi–á)®-center˜Ä°dONLNd̃á–¥)
  5848. ed design.°dONLNd¯÷ä‚p(flä4This chapter begins by describing some of the featur(¿°dONLNd,÷q‚ª)Áes of a good usera`°dONLNd=÷ª‚Ÿ)J-centerëÄ°dONLNdD÷Ÿ‚)
  5849. ed design °dONLNdN„äÔî(ÏäanQ`°dONLNdP„ïÔ) d some general ways to iœ`°dONLNdh„Ô+)mmplemenΔÄ°dONLNdo„,ÔJ)*t them.∫@°dONLNdv„KÔ¨) Then it shows how to,Zapf Dingbats°dONLNdå˘äè(ˇän
  5850. °dONLNdéˆñÓ) initialize the basic Tó†°dONLNd§ˆÌ8)Woolbox managers°dONLNd¥ äè(än
  5851. °dONLNd∂ñô) rE°dONLNd∑öˆ)eceive information fru°dONLNdÈ≠)\'om the Event Manager about user actions°dONLNdÙä$è(#än
  5852. °dONLNdˆñ&ô) rE°dONLNd˜ö&¸)espond to user actions°dONLNd+ä7±(4äCFor a complete description of the capabilities of the Event ManagerxÄ°dONLNdQ+±7˙(4±, see the chapter °dONLNdc8äDÂ(Aä“Event Manager” in Π°dONLNdv8ÂDc)[Inside Macintosh: Macintosh T=†°dONLNdì8cDß)~oolbox Essentials†°dONLNd§8®D)E. For the complete story °dONLNdΩEäQ¬(Näon the featur–@°dONLNd E¬QJ)8!es of a good user interface, see L‡°dONLNdÎEKQÎ)â$Macintosh Human Interface Guidelines\Ä°dONLNdEÎQÌ)†.
  5853. XHs4YHs
  5854. ÉHã4ÑHã ÖHÖ
  5855. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdpHÉ™(~H About EventsˇˇˇˇˇˇU˛(~4
  5856. °dONLNdîä†ì(ùäPrN†°dONLNd îî†Ù)
  5857. Qobably the most distinctive aspect of a well-written Macintosh application is tha*Ä°dONLNdqîı†(ùıt it °dONLNdv°ä≠º(™ä puts users i.`°dONLNdÇ°Ω≠‹)3n contr>@°dONLNdâ°‹≠í)+ol of the application, not the other way ar—°dONLNd¥°í≠©)∂ound:¿°dONLNd∏°™≠µ). TpÄ°dONLNdª°¥≠Í)
  5858. o be in contr/Ä°dONLNd»°Î≠˚)7ol, tœ¿°dONLNdÕ°˚≠)he °dONLNd–Æä∫(∑äuser should be able to perform †°dONLNdÓÆ∫Ä)à, at any particular time, a}¿°dONLNd    ÆÄ∫)nny of a wide array of actions. °dONLNd(ªä«’(ƒäHThese actions might include pulling down one of your application’s menus‚`°dONLNdpª’«    (ƒ’ , choosing a‡°dONLNd|ª
  5859. « )5 °dONLNd}»ä‘ì(—ä5menu command, typing some characters, moving a windowÑ`°dONLNd≤»ì‘“(—ì, and so forth. ï`°dONLNd¬»“‘Ÿ)?A–°dONLNd√»Ÿ‘) key concept °dONLNd–’ä·ò(fiäher‡°dONLNd”’ò·º)
  5860. e is that • °dONLNd›’Ω·)%users should feel that ó@°dONLNdÙ’·a)ayour applicatio˚ °dONLNd’a·ò)Cn is always rB`°dONLNd’ô·
  5861. )8eady to do something for °dONLNd)‚äÓì(Îäthì¿°dONLNd+‚ìÓ£)    em.°dONLNd/Ùä (˝äEven when your application i>°dONLNdKÙd)És busy performing s* °dONLNd^Ùe)X#ome lengthy operation (for instanceÏ`°dONLNdÅÙ)ù, °dONLNdÉäé(
  5862. äsΩ°dONLNdÑéX),aving a document to disk) and you need to pr∫`°dONLNd∞Xü) event the user fr~@°dONLNd¡†)Hom doing other things, °dONLNdÿä»(äyou should pr‚°dONLNd»˝)> ovide some †°dONLNd˛)6safe ˆ °dONLNdı^)way for the user t∏`°dONLNd_k)No c °dONLNd
  5863. l⁄)ancel the operation and rF¿°dONLNd#⁄Ù)negain °dONLNd)ä'†($äcontr>Ä°dONLNd.°'¶)o¥°dONLNd/¶'´)l.`°dONLNd1¨'¥) T◊ °dONLNd3≥'ı)Jypically you accomplish this by displaying a dialog box indicating that a °dONLNd}(ä4π(1äClengthy operation is underway; the dialog box should indicate some $Ä°dONLNd¿(∫4Õ(1∫safe ˇ°dONLNd≈(Õ4) way for the °dONLNd—5äA¢(>äuser tB¿°dONLNd◊5£AØ)o su@°dONLNd⁄5ØA∑) to- °dONLNd‹5∏A˛)    p the operation.°dONLNdÌGäSØ(PäThe esse…°dONLNdıGØSœ)%nce of t‡°dONLNd˝GœS◊) hiô¿°dONLNdˇGÿS‰)    s u]‡°dONLNd    GÂSÒ)ser)Ä°dONLNd    GÚS)-centerY†°dONLNd     GS@) ed design i톰dONLNd    G@Sx)0s the use of aÑ °dONLNd    %GySÅ)9n ’Ä°dONLNd    'GÅSˇ)event-driven programming °dONLNd    @Tä`¶(]ämodelb`°dONLNd    ETß`„). In other wori@°dONLNd    ST„`ı)<ds, t`°dONLNd    XTˆ`F)he system softwarÌ@°dONLNd    iTE`L)Oe 6‡°dONLNd    kTM`V)brÉÄ°dONLNd    mTV`ù)    eaks up the user=†°dONLNd    }Tü` )I ’s actions `¿°dONLNd    àT `ı)+ into their °dONLNd    ìaämæ(jä
  5864. component ‡ °dONLNd    ùaæm€)4eventsO °dONLNd    £a‹mfi),œ °dONLNd    §afim)     which arÊÄ°dONLNd    ≠am)):e passed one by one to your application for handling. For °dONLNd    Ánäzˇ(wäexample, when the user pr‚†°dONLNd
  5865. nˇzs)uesses a key on the keyboarc°dONLNd
  5866. ntz“)ud, the system softwar™°dONLNd
  5867. /n“z )^e sends your °dONLNd
  5868. <{äáµ(Ñä
  5869. applicatioeÄ°dONLNd
  5870. F{∂á),n information about t˚@°dONLNd
  5871. [{áH)^ hat event. T˝°dONLNd
  5872. g{HáZ)4his i\ °dONLNd
  5873. l{[áá)    nformatio]¿°dONLNd
  5874. u{ááø), n includes w¬°dONLNd
  5875. Å{øá˙)8hich key was °dONLNd
  5876. éàäîì(ëäprG °dONLNd
  5877. êàîî¨)
  5878. essedp °dONLNd
  5879. ïà¨îœ), when tı‡°dONLNd
  5880. ùàœî )#he key was prS‡°dONLNd
  5881. ™àîÅ)>essed, whether any modifi˘¿°dONLNd
  5882. √àÅî¢)ter keys ⁄‡°dONLNd
  5883. Àà£îÔ)"(for instance, the °dONLNd
  5884. fiïä°—(ûäCommand key) ›`°dONLNd
  5885. Îï—°‚)Gwer√°dONLNd
  5886. Óï‚°ù)*e being held down at the time of the keypr=`°dONLNd ïû°Í)ºess, and so forth. ¬¿°dONLNd +ïÍ°)LYÉ@°dONLNd ,ï°)our °dONLNd 0¢äƬ(´äapplication r{‡°dONLNd =¢¬Æ∏)86esponds to the event by performing whatever actions ar/Ä°dONLNd s¢πÆ’)˜e apprB`°dONLNd y¢’ƈ)opriate.ˇz@ˇ ˇˇˇˇ@
  5887. ˇ·ˇ‚7^
  5888. 4*\¯, Palatino&e.3+l"CHAPTER ”)>4,     Helvetica    ˇˇ—ÚˇÆ(@lEvents4⁄*˙¯
  5889. (‡*72    )B About Events4^*¿¯
  5890. °dONLNd\lhr(elY@Ä°dONLNd\rhÕ)our application can rÌ@°dONLNd\Õhw)[&eceive many types of events. Events arÿ°dONLNd<\whÁ)™e usually divided into thr¿°dONLNdV\ËhÙ)qee °dONLNdYiluö(rl categories:,Zapf Dingbats°dONLNdelÜq*n
  5891. °dONLNdg|xà¿) low-level events°dONLNdxëlòq(óln
  5892. °dONLNdzéxö‰) operating-system events°dONLNdí£l™q(©ln
  5893. °dONLNdî†x¨√) high-level events°dONLNd¶±lΩ…(∫lThe Event Manager r≤ °dONLNdπ±…ΩÁ)]eturns F@°dONLNd¿±ËΩ2)low-level eventsˆ‡°dONLNd–±2Ω∂)J to your application for occurr¥¿°dONLNdÔ±∑ΩÙ)Öences such as °dONLNd˝æl õ(«l the user pr$‡°dONLNdæú )0essing the mouse button, rÖ`°dONLNd"æ ì)teleasing the mouse button, pr]°dONLNd?æì È)Éessing a key on the °dONLNdSÀl◊è(‘lkeyboar*°dONLNdZÀê◊a)$0d, or inserting a disk. The Event Manager also râ`°dONLNdäÀa◊Ï)— eturns low-level events to your °dONLNd™ÿl‰Ê(·lWapplication if your application needs to activate a window (that is, make changes to a °dONLNdÂlÒ    *#window based on whether it is in frŒ†°dONLNd$    Òµ)ù'ont or not) or update a window (that is˛†°dONLNdKµÒ∑)¨,~†°dONLNdLÂ∏Òæ) r√†°dONLNdNÂæÒÌ)
  5894. edraw the °dONLNdXÚl˛4(˚l+window’s contents). When your application rÀ†°dONLNdÉÚ4˛§)»equests an event and theri†°dONLNdúÚ•˛µ)qe arx@°dONLNd†Úµ˛„) e no other °dONLNd´ˇl ö(l events to rá °dONLNd∂ˇö ).eport, the Event Manager rQ °dONLNd–ˇ 7)w    eturns a e@°dONLNdŸˇ7 e)&
  5895. null event√@°dONLNd„ˇe g)..°dONLNdÂl…(lThe Event Manager r≤ °dONLNd¯…Á)]eturns F@°dONLNdˇËV)operating-system events`°dONLNdW‹)o to your application when the °dONLNd4l*u('lprG °dONLNd6v*¯)
  5896. Yocessing status of your application is about to change or has changed. For example, if a °dONLNdè+l7(4l'user brings your application to the forY`°dONLNd∂+7")®egrw °dONLNdπ+"7X) ound, the Pr ‡°dONLNd≈+Y7‡)7ocess Manager sends an event °dONLNd‚8lDy(AlthrX¿°dONLNdÂ8yD°)Aough the Event Manager to your application. Some of the work of r°dONLNd&8¢DÏ(A¢eactivating your °dONLNd7ElQˇ(Nl!application is done automaticallyz†°dONLNdXE˛QA)í, both by the PrŒ@°dONLNdhEAQ¿)Cocess Manager and by the W^@°dONLNdÇE¿Qfl)indow °dONLNdàRl^([l'Manager; your application must take carÚ °dONLNdØR^p)≥e of any further pr `°dONLNd¬Rp^“)Qocessing needed as a r§`°dONLNdÿR“^ı)b    esult of °dONLNd·_lk÷(hlyour application being r`°dONLNd˘_◊k)k eactivated.°dONLNdql}…(zlThe Event Manager r≤ °dONLNdq…}Á)]eturns F@°dONLNdqË}6)high-level events⁄Ä°dONLNd0q6}¶)N to your application as a rI†°dONLNdKqß} )q    esult of °dONLNdT~lä¿(álcommunication dir˘†°dONLNde~¿ä8)Tected to your application fr·@°dONLNdÅ~8ä∑)xom another application or pr'¿°dONLNdù~∏ä—)Äocess.
  5897. ò*¶¯4ô*¶¯    °dONLNd§ól¢(ülNote
  5898. ˇ·ˇ‚7^
  5899. °dONLNd©§l∞}*>Low-level events, except for update events and null events, arû °dONLNdÁ§}∞•(≠}    e always °dONLNd∞lºx(πldirI °dONLNdÛ∞yºª)ected to the forN`°dONLNd∞ªº…)Begrl °dONLNd∞…ºÏ)ound pr°dONLNd∞̺É)$!ocess. Operating-system events ar¯ °dONLNd.∞Ǻù)ïe also °dONLNd5ºl»ö(≈l
  5900. always dir‘†°dONLNd?ºö»‹).ected to the forŸ‡°dONLNdOº‹»Í)Begr˜†°dONLNdRºÍ»)ound pr®Ä°dONLNdYº»û)$!ocess. High-level events, update °dONLNdz»l‘ˇ(—l"events, and null events can be dir‡°dONLNdú»‘B)îected to the for  °dONLNd¨»B‘P)Begr)‡°dONLNdØ»P‘s)ound pr⁄¿°dONLNd∂»s‘ò)#    ocess or °dONLNdø‘l‡ä(›lbackgr[ °dONLNd≈‘ä‡≠)ound pr °dONLNdÑƇ–)$ocesses.º°dONLNd›◊’fl⁄)'u
  5901. °dONLNdflÂlÒÑ(ÓlFigurR¿°dONLNd‰ÂÑÒò)e 4-1@°dONLNdÈÂòÒ) illustrates the various sour`°dONLNdÂÒ¯)y6ces of events that can be passed to your application. °dONLNd<Úl˛(˚l#As you can see, events originate frj`°dONLNd_Ú˛X)óom a number of difò°dONLNdqÚX˛d)UferzÄ°dONLNdtÚd˛à) ent sourVÄ°dONLNd|Úà˛⁄)$ces: the Operating °dONLNdèˇl “(lSystem Event Managerfl‡°dONLNd£ˇ— ‡)e, WS@°dONLNd¶ˇ‡ &)indow ManagerI‡°dONLNd≥ˇ& 4)F, PrÄ°dONLNd∑ˇ5 v)ocess ManagerñÄ°dONLNdƒˇu ©)@ , and PPC T„†°dONLNdœˇ® »)3oolbox.ˇc@ˇ ˇˇˇˇ@
  5902. ˇ·ˇ‚7^
  5903. 4H\, Palatino&e.3+ä"CHAPTER ”)>4,     Helvetica    ˇˇ—ÚˇÆ(@äEvents4⁄ä˙(‡ä About Events
  5904. (‡ 73
  5905. ˇˇˇˇˇˇˇˇ4l4älòÄ0l@äoMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5906. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5907.  
  5908.  
  5909.  
  5910.  
  5911.  
  5912. ˆ                        ˜¯˘˙˚¸˝˛ˇl@äol@äo$——————————————————————————————òÄ
  5913. l6ä@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5914. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5915.  
  5916.  
  5917.  
  5918.  
  5919.  
  5920. ˆ                        ˜¯˘˙˚¸˝˛ˇl6ä@l6ä@˜˜˜˜˜˜˜˜˜˜˜˜¸ˇˇ˛¸˛ˇˇ¸ˇˇˇ˛˙ˇ˛˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  5921. 4è4Ö?òÄ
  5922. è6Ö@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  5923. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  5924.  
  5925.  
  5926.  
  5927.  
  5928.  
  5929. ˆ                        ˜¯˘˙˚¸˝˛ˇè6Ö@è6Ö@$˛˙ˇ
  5930. ˛ˇˇˇ
  5931. ˛ˇˇˇ
  5932. ˛ˇˇˇ
  5933. ˛ˇˇˇ˜˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˝˛ˇ˛
  5934. ˛ˇˇˇˇ
  5935. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝¸ˇ
  5936. ˛ˇ˛ˇˇ    ˛ˇˇ˛
  5937. ˛ˇˇˇˇ
  5938. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  5939. gHw4gHw"hH]
  5940. ˇ·ˇ‚7^    °dONLNd\äg¥(dä
  5941. Figure 4-1°dONLNd \Ãgs)B*Sources of events sent to your application
  5942. °dONLNd6äï(äThr °dONLNd8ñº) Be Event Manager maintains, for each open application, an event str'¿°dONLNdzΩ(Ωeam containing °dONLNdâä+fl((äthose events that ar5@°dONLNdù‡+g)V!e available to that application. F¿°dONLNdæg+m)áY@°dONLNdøm+¿)our general strategR`°dONLNd“¿+‘)Sy is tI@°dONLNdÿ’+‡)o r¿°dONLNd€·+) etrieve an °dONLNdÊ,ä8±(5ä    event, prî`°dONLNdÔ,±8Ÿ)' ocess it, r-Ä°dONLNd˙,⁄8G))etrieve the next event, pr≈¿°dONLNd,G8≤)mocess it, and so on indefi¨@°dONLNd.,≥8Ã)lnitelyÕ¿°dONLNd4,À8–). † °dONLNd6,–8÷)Y`†°dONLNd7,÷8€)o÷ °dONLNd8,€8Á)u sö@°dONLNd;,Ë8 )    top this °dONLNdD9äEì(BäprG °dONLNdF9îEã)
  5943. 9ocess only when the user elects to quit your application.
  5944. wâ˙4vàwâò2@ç@çwâ∑œœ‹ˇ¿ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆò2@Äç@Äç∑☋ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆò2Ä¿çÄ¿ç˜â7‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆò2¿ç¿ç7âw‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆò2@ç@çwâ∑‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆò2@Äç@Äç∑☋ˇ‡ˆ‹ˇ‡ˆ˜ˇ˛pˇ‡ ˇÄÄ?˜ˇ‡ˆ˜ˇ˛àˇ‡PˇÄ@?˜ˇ‡ˆˆˇˇ‡àˇÄ ?˜ˇ‡ˆˆˇˇ‡ˇÄ?˜ˇ‡ˆˆˇ?¿ˇ‡ˇÄ?˜ˇ‡ˆ˜ˇ˛ü¿0ˇ‡ˇÄÑ?˜ˇ‡ˆ˜ˇ˛^Ãˇ‡ÄˇÄ! ø˜ˇ‡ˆ˜ˇ˛<ˇ‡@ˇÄB!Pø˜ˇ‡ˆ˜ˇ˛ ᡇ  ˇÄÑ@®ø˜ˇ‡ˆ˜ˇ˛ @Gˇ‡@ˇÅâU?˜ˇ‡ˆ˜ˇ˛ Ä'ˇ‡ÄˇÇ™?˜ˇ‡ˆ˜ˇ˛Aóˇ·ˇÑ%T?˜ˇ‡ˆ˜ˇ˛Å%Oˇ‚ˇàD
  5945. ®?˜ˇ‡ˆ˜ˇ˛Ç Bèˇ‰ˇêàïT?˜ˇ‡ˆˆˇ ¡OˇË‡üˇ°*¢?˜ˇ‡ˆˆˇA†èˇ_ˇ¬"UA?˜ˇ‡ˆˆˇAóˇË?ˇ†DJÄø˜ˇ‡ˆˆˇÇàwˇ‰&_ˇêàe?˜ˇ‡ˆˆˇÉDˇ‚9üˇàr?˜ˇ‡ˆ˜ˇ˛êÜ¢ˇ·œÒˇˇÑ |?˜ˇ‡ˆ˜ˇ˛ëQˇ‡ÄFˇˇÇ?˜ˇ‡ˆ˜ˇ˛A®áˇ‡@ ˇˇÅ?˜ˇ‡ˆ˜ˇ˛1TGˇ‡ ˇˇÄÄ ?˜ˇ‡ˆ˜ˇ˛*'ˇ‡ ˇˇÄ@@?˜ˇ‡ˆ˜ˇ˛    7ˇ‡¸ˇˇÄ Ä?˜ˇ‡ˆ˜ˇ˛Ç
  5946. œˇ‡CˇˇÄ?˜ˇ‡ˆ˜ˇ˛Çœˇ‡ġˇÄ?˜ˇ‡ˆ˜ˇ˛Åˇ‡ˇÄ?˜ˇ‡ˆ˜ˇ˛ÄÅˇ‡ÇˇÄ?˜ˇ‡ˆ˜ˇ˛Aˇˇ‡DˇÄ?˜ˇ‡ˆ˜ˇ˛"ˇ‡(ˇÄ†?˜ˇ‡ˆ˜ˇ˛ˇ‡ˇÄ@?˜ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆ‹ˇ‡ˆò2Ä¿çÄ¿ç˜â7‹ˇ‡ˆœœœœœœœœœœœœœœœsÃ8Û˛¿˝Û&Ĉâå˛@˝Û`Û$     à˝ @˝˛Ä@˚@ı+'ê à√≠kL¡fi    !=Œ'∏„éNk@◊ûF√yπ‡˜+'† àFh¶h$)íjB(7&îí“êDBQ)Å"IM$ìD†˜+'†@—IDp~¬°Q q(9G(àÂHAaQ$QäíÖ@˜+' ¿B    2XÄ¢ñ&ÑÑPAà-$%†àÅ¢ñtí“i‰â`˜+'¿Ä¸ 8sËp˙wê9I88È á˙´,ùÜßr@˜¯à˜˘˛ Ú¯à˜`˘˛ Ú¯p˜@˘ ˛pÚœœœ¿ É8‡ÄΔ˝D› Ñ›<s(ÅJ4«Ó8ˆë5#,ê‚ñ”ARI,§E:ñõ&‘ê‚(EÅdä    DÑíßD†‚-)|Dûshäd»!â¿‚IŒ≥É\iûHs§@‡á!‰Ä‚ı@‹œœœœœ˛Ä√˛     ·¿Á¸$¢˝%˛Á˙H≤@    óÁΔõ¶9¯Å਄ô&(É`1a‹pQÈC$⁄hKì@GD    Dâ,”@Ä
  5947.  Å(ë¶öHÈDíp"#ÄBDB IÄÄ
  5948.  Ç(B'àÈO&ÄîƒDHâì|Ä
  5949. AQ"¯ êÈ5$pÁÛáò0,é    ≥Ü@Òéë¡g`Ȉ ˘˛Ëˆ ˘˛Ëˆp˘˛ÄÈœœœœœœœœœò2¿ç¿ç7âwœœœœœœœœ‡˛Ó˛@x0›ê˛H˛¿$‹˛    ê@ Bfl á ·ßûMpB:ú̇√Zi †¢§F BljI‡íH†°E‰ ÑHt
  5950. ‡ 0¡Uê(@àêÑ“(‡úpɪÈ<å¯As»‡ ˛"àÄ˛ÄŸ˛"⑲v‘œœœ@˸‹¿0¸‹@ ˛Ä‹Cœ!¥œ5ƒ–    „›A$¶Ñ[Dîö`§Äfi‚(«RH®ú@H›"Ihh§…K ÄiÄfi ıñGá$ñ}Ñ:Ffi˝€ ˝ÿ 8˝8ÿœœœ@0tÄ˝Äfi¿-Ä˝Ç@fi@ I@fi@ß I>”xÌ@fiCHí–I
  5951. Ldë@fi‰P¢‡í$HíÄfi%Ò-õ%òâ‚(    › ÚŒ·“>ËÜ°»&›œœœœœœœœœœœœœœœœœœœœò2@ç@çwâ∑œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@ç@çwâ∑œœ‹3ı‹@ˆ‹ ˆ€@ˆ‹@ˆ€@ˆ‹ ˆ‹@ˆ‹ ˆ€@ˆ‹@ˆ€@ˆ˘ÄÊ ˆ˘¿Ê@ˆ˘&`Ê ˆ ˘38Ê@ˆ˙ÃÊ@ˆ˙ôÃÓÊ@ˆ˙Œg3ÄÁ ˆ˚Fc9ú¿Á@ˆ˝fs;ÆÊpÁ ˆ˚sÃÊ?¯Á@ˆ˝Ãg?¯ Á@ˆ¸    ŒÔø¯àûÁ@ˆ˝c?ÚÁ ˆ˝??Á@ˆ˛?Ú"‚""Á ˆ¸`¿Á@ˆ¸ˇ¿˛Á@ˆ˝àˇ¸àäÁ@ˆ˛Ä˝˛Á ˆ˘ˇ˛Á@ˆ˝"/ˇˇ‚Á ˆ˙ˇˇÁ@ˆ¸ˇˇ„‡ˆ˚ˇ‡˙@ˆ˝ø¯ˇËé>䈻˙àÄ˚@ˆ˝‡ˇ¿ ˜¿Û ˆ˝?Ä ˜¡¯¸ˇ ˚@ˆ˛˝"#Ü"˜    „*¶#&2‚6"˚ ˆ˜√‡¯<ɯ¸ˇ˜¸˚@ˆ¯aü¯    8ÇÑ#ÜB ˚@ˆ¸¸àø¸¸¯pã¯ˇ˛˛ˇ¸®Ä¸@ˆ¯˜¯`ᡡ¸¸ˇ˚ ˆ˘˘¿˘aÖˇˇ¸¸ˇÄ¸@ˆ ˝˝">Œ&b`˘
  5952. a'*=»„*c*" ¸ ˆ¯cÊ#8˘    as¡A  ˚@ˆ˘eÛN1è˚ˇaˇ‚˝ˇ˛˚@ˆ ¸˝à¯˘˛â˚ ˇ„àãF1ò…àÀàĸ@ˆ ˘8˚Õĸ7ˇÚ˛L!˝ˇ˛Ä¸ ˆ!˘Ådĸ ‡Ú»cÇ!ĸ@ˆ"˝˝".x $¿˝¢'≤?¸òC¸ˇ¯¸ ˆ¯`4@˝2L∞¬˝ Ä¸@ˆ!˘Ü@˝fH°Ç˝ Ä¸@ˆ¸¸à¯É@˝ àúƒü¯¸ˇ¸¸@ˆ¯~Å`˝=ѯ¸ˇ˛¸ ˆ¯;Ä ˝>{ˆ@ˆ!˝¸"ˇÅÄ ˝#ˇÚˇ¸ˇ¸¸ ˆ¯fiflÄ ˝0vˆ@ˆ˙’W¸Ä ˝?lˆ@ˆ ¸    ààø››fl‹Ä ˝(üÿàê˚à¸@ˆ!¸?ıUU]ÙÄ0˝    ?p0¿¯ ˆ%˝ı˛UV<Ä˝˛‡ˇ‡¸˝ˇ¿¸@ˆò2@Äç@Äç∑â˜˝7¸wĸĠ·Ä¯ ˆ¸¸Uɯ`ɘ@ˆ˝˝U_¿¯@˜@ˆ¸˛›fl¯` ¯¿ ˜@ˆ˝    UUW¸0¯Ä˜ ˆ˝    UW˛˘Äp˜@ˆ˝wˇ˛;¿˙‡¿˜ ˆ˚ˇÄ˛ć`˙<Ę@ˆ˝ĸ‡Ä ˙ˆ@ˆı<à†˙8âÄxˆ@ˆˆ ˙?Ä√¿ˆ ˆˆò8¯fı@ˆıÚ`¯<ı ˆÙ`¿¯ı@ˆı Ä¯ ı@ˆÙ)įêı@ˆı3?ĸ0ı ˆı1¸= ı@ˆı"<¸‚0‡ı ˆÚ ˝Ä@ı@ˆÛ$F˝DPÛ@ˆÚ?ä˝èÛ@ˆÚ„˝Ú ˆÚ1˝Ú@ˆÚ#˝0Ú ˆÒ!˝Ú@ˆÚ%˝PÚ@ˆÒ)˝êÚ@ˆÚ!˝Ú ˆÚ1˝Ú@ˆÚc¿˛8Ú ˆÒaIJÚ@ˆÚ7˝pÚ@ˆÒ˝‡Ú@ˆÚ ¸¿Ú ˆ‹@ˆ‹ ˆÛ¯ˇÙ@ˆÙ@¯Ù@ˆÛ@¯Ù@ˆÙ@¯Ù ˆÙ@¯Ù@ˆÙ@¯Ù ˆÛ@¯Ù@ˆÙ@¯Ù@ˆÛ@¯Ù@ˆÙ
  5953. @ 0xÙ ˆÙ
  5954. @ ÄÙ@ˆÙ
  5955. @!s>w8u∑ÕÙ ˆÛ
  5956. @!O£4»-{ÍÄÙ@ˆÙ
  5957. @L-4ȍk
  5958. ÄÙ@ˆÛ
  5959. @ sß4∏r3ÍÄÙ@ˆÙ@@˛Ù ˆÙ@@p˛Ù@ˆÙ@@˙Ù ˆÛ@x    ˝Ù@ˆÙ@@    ∞˝Ù@ˆÛ
  5960. @B€ù≥πŒlÙ@ˆÙ
  5961. @zæI∞‰r¯Ù ˆÙ
  5962. @B¢ISe≤àÙ@ˆÙ
  5963. @yMQ‰ÓxÙ ˆÛ@˚Ù@ˆÙ@˚Ù@ˆÛ@¯Ù@ˆò2Ä¿çÄ¿ç˜â7Ù@¯Ù ˆÙ@¯Ù@ˆÙ@¯Ù ˆÛ@¯Ù@ˆÙ@¯Ù@ˆÛ@¯Ù@ˆÙ¯ˇ¯Ù ˆÙ?¯ˇ¯Ù@ˆ‹ ˆ€@ˆ‹@ˆ Ô¯Ô@ˆÔ ˆÔ@ˆ(Ô ˆ ÔÔ@ˆHÔ@ˆ ÔàÔ@ˆÔ ˆÔ@ˆ(Ô ˆ ÔÔ@ˆHÔ@ˆ ÔàÔ@ˆÔ ˆÔ@ˆ(Ô ˆ ÔÔ@ˆNÔ@ˆ ÔéÔ@ˆåÔ ˆ ÔÿÔ@ˆ ÔpÔ ˆ
  5964. Ó Ô@ˆ‹@ˆ€@ˆ‹ ˆ‹@ˆÙ˜ˇ¸Ù ˆÙ¯Ä¯Ù@ˆˆÄįÙ@ˆı ÄÄ¿Ù@ˆˆ Ä% Ù ˆˆ Ä[sÖ Ù@ˆˆ Ä◊… Ù ˆı ÄTI! Ù@ˆˆ Ä£…º¿Ù@ˆıįÙ@ˆˆįÙ ˆˆįÙ@ˆˆįÙ ˆı˜ˇ˛Ù@ˆˆįÙ@ˆıįÙ@ˆˆįÙ ˆˆ ÄÄ¿Ù@ˆˆ Ä Ù ˆı Ä[sâ Ù@ˆˆ Ä◊…‡Ù@ˆı ÄTI Ù@ˆˆ Ä£…â¿Ù ˆˆįÙ@ˆˆįÙ ˆıįÙ@ˆò2¿ç¿ç7âwˆįÙ@ˆı˜ˇ˛Ù@ˆˆįÙ ˆÄ@įÙ@ˆ@@įÙ ˆ.gŒÁ∂˘£ˇįÙ@ˆ)ÙfôØ}P¯¯Äı@ˆIÖ¶ô≠aP0¯¿ı@ˆétÊóF}P ¯¿ı ˆ@˛`¯Äı@ˆIJ¿¯Ù ˆ˛˘įÙ@ˆ˝Ä˚˜Ù@ˆ¸Ä˚˜Ù@ˆ-πŒñK˝˜8Ù ˆ´‰íüOIJ˜xÙ@ˆ*$íòL˝į|Ù ˆ뉌w;IJįÙ@ˆ˝˚įÙ@ˆ¸˚˜ˇ˛Ù@ˆˆįÙ ˆˆįÙ@ˆˆÄ‡A˛Ù ˆıÄC˛Ù@ˆˆÄŒ·˛Ù@ˆıÄıÈA˛Ù@ˆˆÄ    A˛Ù ˆˆÄËÈa˛Ù@ˆˆįÙ ˆıįÙ@ˆˆįÙ@ˆıįÙ@ˆˆ įÙ ˆˆʡ˛Ù@ˆı¯¯ˇ˛Ù ˆ€@ˆ‹@ˆ€@ˆ¯Ô ˆÔ@ˆ(Ô ˆ ÔÔ@ˆHÔ@ˆ ÔàÔ@ˆÔ ˆÔ@ˆ˙ˇ¯˘(¯?˙ˇ ˆ˙ ˘¯`˚@ˆ˙ ˘H¯`˚@ˆ˙ ˘à¯`˚@ˆp˝ ˘¯`˚ ˆH˝ ˘¯`˚@ˆ    Nc30 ˘&¯`˚ ˆ    tîˇ¯ ˘å¯`˚@ˆ    DîFË ¯ÿ¯`˚@ˆ    Dcª0 ¯p¯`˚@ˆ˙ ¯ ¯    `„Ä( ˆ˙ˇÒ ˇ`îÇ(@ˆ˙#‡Ú #`ò1Æe ˆ#˝0¯ˇ`ËJií@ˆ#∞˝DX@¯4E`ÑÇJií@ˆ$∑;éÃàà@¯(â`É1Æe@ˆ!±§”ˡ @¯aˇ`˚ ˆ!VßS î@¯S`˚@ˆò2@ç@çwâ∑!S•ŒË §@¯b`˚ ˆ ˝ Δ@¯Δ`˚@ˆ ˝ F`@¯ ƒ`˚@ˆ˙ kÄp@¯å`˚@ˆ˙  ˇÿ@¯7˛`˚ ˆ"˙ˇ¸1@|Äq˙ˇ@ˆ#˙ˇ¸2"&@ÄÄ‚"8˚ˇ˛ ˆˆ@ô„PÖ∑8¿p˜@ˆ˜ƒL@eî†ı|êdG¿˜@ˆıˇÿ@eî†ÖDê?˛ˆ@ˆı p@ô„PÚ<òı ˆı`@¯ ı@ˆÙ@¯Ù ˆÛ@¯Ù@ˆÙ@˚Ù@ˆÛ@˚Ù@ˆÙ
  5965. @s∏ÌÄÙ ˆı`@M?˛ı@ˆıp@ju1˛8ı ˆˆ    ˇÿ@:\Ô˛o˛ˇ¯@ˆ˜DL@¸ ˛ƒDDE‡˘@ˆ˙ˇ¯àé@˝¿˛˝à∞˘@ˆ˙ 0@¯¿˛˘ ˆ˙ 1@¯q˛˘@ˆ˙ cˇ¯@¯?˛ˇ(˘ ˆ)Ä@ Cp@¯å˘@ˆ-@ F`@¯˛ƒ˘@ˆ-πÕ( Œ@¯˝å˘@ˆ-¶Sh ѯˇ¯˝Ñ˘ ˆ¶R® ú?¯ˇ¯˝î˘@ˆ •Ãê˛(§˘ ˆ˙Ñ˘@ˆ˙DP˛¿¯¸ƒ˘@ˆ˙à˛¿àê¸å˘@ˆ"˝¿˛@¸Ñ˘ ˆ!∞˝˛˝    @¸î˘@ˆ!    ≥πŒÃ ¸
  5966. @(0¸§˘ ˆ!    ∞‰sË ¸@¸Ñ˘@ˆ!    Se≥ ¸ @HP¸ƒ˘@ˆ    Q‰ÓË ¸¿¸ê¸å˘@ˆ ˝ ¸GÄÄ¸Ñ˘ ˆ ˝ ¸ƒÄ¸î˘@ˆ˙ ¸Ñ[;çÊÊÉ8¸§˘ ˆ˙ ¸pá◊•œ5A ¸Ñ˘@ˆ˙ ˝
  5967. ≈ÑT%»’AG¸˝ƒ˘@ˆ ˙ˇ¸˛ »â£•å«uAàè˝å˘@ˆ˙ˇ¸˛˙¿¿˛Ñ˘ ˆı˙q@˛î˘@ˆı"x(˛"`˛§˘ ˆÙ¿˛¸ ˛Ñ˘@ˆı¿˛H˝`˛ƒ˘@ˆÙIJà˝∞˛å˘@ˆıIJ˝˛Ñ˘ ˆıIJ˝˛î˘@ˆıIJ(˝0˛§˘ ˆÙIJ˝˛Ñ˘@ˆıIJH˝P˛ƒ˘@ˆÙx‡˛é˝ú˛å˘@ˆı`¿˛˝ ˛Ñ˘ ˆı1IJú˝0˛î˘@ˆı¸¯˝`˛§˘ ˆÙ¸p˝¿˛Ñ˘@ˆı¸ ¸Ä˛ƒ˘@ˆ
  5968. ‰å˘@ˆò2@Äç@Äç∑☠ÂÑ˘ ˆ Âî˘@ˆˆp˚ ¸Ä˛§˘ ˆıà˚P˝@˛Ñ˘@ˆ˜˚à˝ ˛ƒ˘@ˆˆ¸˝˛å˘@ˆ˜?¿˛˝Ñ˘ ˆˆü¿0˛˝Ñî˘@ˆˆ^Ã˛IJ! Ä§˘ ˆı<˛@˛B!PÄÑ˘@ˆˆ Ä  ˛Ñ@®Äƒ˘@ˆı @@@âUå˘@ˆˆ Ä Ä™Ñ˘ ˆˆAê%Tî˘@ˆˆÅ%HD
  5969. ®§˘ ˆıÇ BààïTÑ˘@ˆ˜ ¡H‡Ä!*¢ƒ˘@ˆˆA†à@B"UAå˘@ˆ˜Aê  DJÄÄÑ˘ ˆ˜Çàp&@àeî˘@ˆ˜ÉD9Är§˘ ˆıêÜ¢œÒ‡ |Ñ˘@ˆˆëQ˛ ÄF‡ƒ˘@ˆıA®Ä@ ‡å˘@ˆˆ1T@ ‡Ä Ñ˘ ˆˆ*  ‡@@î˘@ˆˆ    0¸‡ Ä§˘ ˆıÇ
  5970. »C‡˛Ñ˘@ˆˆÇ»ć˛ƒ˘@ˆıÅ˝˛å˘@ˆıÄÅ˛Ç˝˛Ñ˘ ˆıA¯˛D˝˛î˘@ˆı"¸(¸†˛§˘ ˆÙ¸¸@˛Ñ˘@ˆ ƒ˘@ˆ
  5971. ‰å˘@ˆ ÂÑ˘ ˆ Âî˘@ˆıÄ˝~˝˛§˘ ˆÙÄ˝B˝˛Ñ˘@ˆıÄ˝F˝P˛ƒ˘@ˆÙÄ˝J˝ê˛å˘@ˆıÄ˝B˝˛Ñ˘ ˆıÄ˝“˝˛î˘@ˆı¿˝£˝(§˘ ˆÙ˝ˇÅ˝ˇ¸˛ˇ˘@ˆı ÚDL˘@ˆÙÚàò˘@ˆıÚ˘ ˆı—Ù˘@ˆÙÙˇ˛¯ ˆ€@ˆ‹@ˆ€@ˆ‹ ˆ‹@ˆ‹ ˆ€@ˆ‹@ˆ€@ˆ‹ ˆ‹@ˆ‹ ˆ ‹Ã¿ˆò2Ä¿çÄ¿ç˜â7‹U@ˆœœœœœœœœœœœœœœœsÃ8Û˛¿˝Û&Ĉâå˛@˝Û`Û$     à˝ @˝˛Ä@˚@ı+'ê à√≠kL¡fi    !=Œ'∏„éNk@◊ûF√yπ‡˜+'† àFh¶h$)íjB(7&îí“êDBQ)Å"IM$ìD†˜+'†@—IDp~¬°Q q(9G(àÂHAaQ$QäíÖ@˜+' ¿B    2XÄ¢ñ&ÑÑPAà-$%†àÅ¢ñtí“i‰â`˜+'¿Ä¸ 8sËp˙wê9I88È á˙´,ùÜßr@˜¯à˜˘˛ Ú¯à˜`˘˛ Ú¯p˜@˘ ˛pÚœœœ¿ É8‡ÄΔ˝D› Ñ›<s(ÅJ4«Ó8ˆë5#,ê‚ñ”ARI,§E:ñõ&‘ê‚(EÅdä    DÑíßD†‚-)|Dûshäd»!â¿‚IŒ≥É\iûHs§@‡á!‰Ä‚ı@‹œœœœœ˛Ä√˛     ·¿Á¸$¢˝%˛Á˙H≤@    óÁΔõ¶9¯Å਄ô&(É`1a‹pQÈC$⁄hKì@GD    Dâ,”@Ä
  5972.  Å(ë¶öHÈDíp"#ÄBDB IÄÄ
  5973.  Ç(B'àÈO&ÄîƒDHâì|Ä
  5974. AQ"¯ êÈ5$pÁÛáò0,é    ≥Ü@Òéë¡g`Ȉ ˘˛Ëˆ ˘˛Ëˆp˘˛ÄÈœœœœœœœœœò2¿ç¿ç7âwœœœœœœœœ‡˛Ó˛@x0›ê˛H˛¿$‹˛    ê@ Bfl á ·ßûMpB:ú̇√Zi †¢§F BljI‡íH†°E‰ ÑHt
  5975. ‡ 0¡Uê(@àêÑ“(‡úpɪÈ<å¯As»‡ ˛"àÄ˛ÄŸ˛"⑲v‘œœœ@˸‹¿0¸‹@ ˛Ä‹Cœ!¥œ5ƒ–    „›A$¶Ñ[Dîö`§Äfi‚(«RH®ú@H›"Ihh§…K ÄiÄfi ıñGá$ñ}Ñ:Ffi˝€ ˝ÿ 8˝8ÿœœœ@0tÄ˝Äfi¿-Ä˝Ç@fi@ I@fi@ß I>”xÌ@fiCHí–I
  5976. Ldë@fi‰P¢‡í$HíÄfi%Ò-õ%òâ‚(    › ÚŒ·“>ËÜ°»&›œœœœœœœœœœœœœœœœœœœœò2@ç@çwâ∑œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœˇ†@ˇ ˇˇˇˇ@
  5977. ˇ·ˇ‚7^
  5978. 4*\¯, Palatino&e.3+l"CHAPTER ”)>4,     Helvetica    ˇˇ—ÚˇÆ(@lEvents4⁄*˙¯
  5979. (‡*74    )BInitializing an É`)6 Application4^*¿¯
  5980. ^*x¯4^*x¯
  5981. à*ê¯4â*ꯠä*ä˛
  5982. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdu*àë(É*Initializing an óà°dONLNduëàÊ)g ApplicationˇˇˇˇˇˇU˛(É4
  5983. °dONLNdôl•⁄(¢lWhen your application fi.`°dONLNd4ô€•V)orst starts up, and even beforr†°dONLNdQôV•õ){e you begin to r_°dONLNdaôõ•÷)Eeceive and pro°dONLNdnô÷•Ô);ocess °dONLNdt¶l≤fl(Ølevents describing the usercÄ°dONLNd鶇≤)t’s actions, yo @°dONLNdú¶≤')9u nc¿°dONLNdü¶'≤π)#eed to do some initial setting up. ‡`°dONLNd¬¶π≤Ë)í
  5984. As you’ve °dONLNdÃ≥løw(ºlalr-`°dONLNdœ≥xø©) eady seen (ó`°dONLNd⁄≥©ø¿)1page r@°dONLNdfl≥¡øΔ)3r@°dONLNd‡≥Δøö)1), you need to initialize some of the Macintosh TÄ°dONLNd≥öøÍ)‘oolbox managers. °dONLNd"¿lÃr(…lY@Ä°dONLNd#¿rÃfi)Nou also need to set up your menu bar and menus, and perform some other standart °dONLNdq¿fiÃÊ(…fid °dONLNdsÕlŸ©(÷linitialization. è@°dONLNdÉÕ©Ÿ◊)= Listing 4-1/Ä°dONLNdéÕÿŸo)/! shows the code executed by the V€`°dONLNdØÕnŸ)ñenn Diagrammer application °dONLNd ⁄lÊï(„l    when it fiz‡°dONLNd‘⁄ñÊÃ)*rst starts up.
  5985.     *¯4
  5986. *¯"
  5987. *_
  5988. ˇ·ˇ‚7^    °dONLNd„ˇl
  5989. ò(l Listing 4-1°dONLNdÔˇ∞
  5990. )DInitializing your application,
  5991. Courier
  5992. .°dONLNd*%Ñ("*DoInitManagers;°dONLNd'%û)Δ{initialize Toolbox managers}°dONLNdE'*3x(0*DoSetupMenus;°dONLNd]'3\)Δ{initialize menus}°dONLNdqC*OÑ(L*gDone := FALSE;°dONLNdãCOû)Δ{initialize global variables}°dONLNd©Q*]¢(Z*gNumDocWindows := 0;°dONLNd»Q]‘)Δ&{initialize count of open doc windows}°dONLNdÔ_*k¢(h*gPrefsDialog := NIL;°dONLNd_k,)Δ
  5993. {initializ°dONLNd_,kV)<e ptr t°dONLNd_Vkû)* o Preference°dONLNd+_ûk§)Hs°dONLNd,_§k‘) dialog}°dONLNd6{*áÍ(Ñ* gAppsResourceFile := CurResFile;°dONLNda{á⁄)Δ'{get refnum of the app's resource file}°dONLNdââ*ï¥(í*gPreferencesFile := -1;°dONLNd´âï⁄)Δ'{initialize res ID of preferences file}°dONLNd‘•*±0(Æ*D°dONLNd’•0±r) oReadPrefs;°dONLNdΕ±Œ)¿%{read the user's preference settings}°dONLNd¡*Õl( * DoVennInit;°dONLNdœ*€ä*DoMainEventLoop;°dONLNd9œ€å)Δ{and then loop forever...}.°dONLNdTÁlÛÖ(lThe fi»Ä°dONLNdZÁÖÛƒ)rst thing the V‡°dONLNdiÁƒÛœ)?;enn Diagrammer application does is call the application-defi@°dONLNd•ÁœÛ‚(œned .°dONLNd©Ùlp(˝lrR`°dONLNd™Ùpé)outine R`°dONLNd±Ùé‚)DoInitManagersR`°dONLNdøÙ‚„)T< to set up its application partition and initialize several °dONLNd˚lr(
  5994. lTï°dONLNd¸q˚)oolbox managers. Then it calls ï°dONLNd˚C)ä DoSetupMenusï°dONLNd'CX)H to crg`°dONLNd-XÔ)"eate its menu bar and menus. (See °dONLNdOl¬(lListing 8-1 on page °dONLNdc¬—)V155°dONLNdf—)  for the defi°dONLNds.)5
  5995. nition of °dONLNd}.v)( DoSetupMenus°dONLNdâv})H.).°dONLNdå l,()lAfter its menu bar has been cr!¿°dONLNd™ Ò,)Öeated, V/Ä°dONLNd≤ ,Œ)#*enn Diagrammer initializes several global °dONLNd‹-l9≠(6lvariables and r*°dONLNdÎ-Æ9Ë)Beads the userÁÄ°dONLNd¯-Ë9):’s currö¿°dONLNdˇ-9)ent prø@°dONLNd-9.)eferk`°dONLNd    -/9P)ences fr °dONLNd-Q9s)"om a pr&¿°dONLNd-s9É)"efer“‡°dONLNd-É9£)ences fiqÄ°dONLNd$-§9⁄)!le. Then the ˇˇIˆ.°dONLNd1:lF„(Clapplication calls another r0B°dONLNdL:‰F)xoutine, ˇ˝›‚z8°dONLNdT:F@) 
  5996. DoVennInitˇˇIˆz8°dONLNd^:@F¯)<+, to handle any other initialization. This .°dONLNdâGlS§(Pl includes defi.°dONLNdñG•Sœ)9
  5997. ning the r͆°dONLNd†GœS)*ectangles and rhÄ°dONLNdØGSK)Cegions in a VɆ°dONLNdºGJS∑)8enn diagram window anî@°dONLNd—G∑SÒ)md displaying °dONLNdfiTl`q(]la°dONLNdflTq`ò) window°dONLNdÊTò`ö)'.
  5998. n*|¯4o*|¯    °dONLNdËmlx(ulNote
  5999. ˇ·ˇ‚7^
  6000. .°dONLNdÌzlÜÄ*The °dONLNdÒzÄܺ)
  6001. DoVennInit°dONLNd˚zºÜ»)< prR`°dONLNd˛z»ÜÂ) ocedur$¿°dONLNdzÂÜ) e is not defi$¿°dONLNdzÜb)3ned in this book.,Zapf Dingbats.$¿°dONLNd+}gÖl)Ouˇ0Ç@ˇ ˇˇˇˇ@
  6002. ˇ·ˇ‚7^
  6003. 4H\, Palatino&e.3+ä"CHAPTER ”)>4,     Helvetica    ˇˇ—ÚˇÆ(@äEvents4⁄ä˙(‡äReceiving Events
  6004. (‡ 75
  6005. ˇˇˇˇˇˇˇˇ4l4älòÄ0l@äoMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6006. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6007.  
  6008.  
  6009.  
  6010.  
  6011.  
  6012. ˆ                        ˜¯˘˙˚¸˝˛ˇl@äol@äo$——————————————————————————————òÄ
  6013. l6ä@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6014. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6015.  
  6016.  
  6017.  
  6018.  
  6019.  
  6020. ˆ                        ˜¯˘˙˚¸˝˛ˇl6ä@l6ä@˜˜˜˜˜˜˜˜˜˜˜˜¸ˇˇ˛¸˛ˇˇ¸ˇˇˇ˛˙ˇ˛˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  6021. 4è4Ö?òÄ
  6022. è6Ö@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6023. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6024.  
  6025.  
  6026.  
  6027.  
  6028.  
  6029. ˆ                        ˜¯˘˙˚¸˝˛ˇè6Ö@è6Ö@$˛˙ˇ
  6030. ˛ˇˇˇ
  6031. ˛ˇˇˇ
  6032. ˛ˇˇˇ
  6033. ˛ˇˇˇ˜˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˝˛ˇ˛
  6034. ˛ˇˇˇˇ
  6035. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝¸ˇ
  6036. ˛ˇ˛ˇˇ    ˛ˇˇ˛
  6037. ˛ˇˇˇˇ
  6038. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\äh¯(eäXOnce the application has initialized itself, it starts executing its main event loop by ˇˇÚD.°dONLNdXiäuΩ* calling the ,
  6039. Courierˇˇ÷Ãdà°dONLNddiæu)4DoMainEventLoopˇˇÚDdà°dONLNdsiu#)Z pr),°dONLNdvi$uA) ocedur˚å°dONLNd|i@u)1e. In the main event loop, the application calls .°dONLNd≠väÇ*(ä$the Event Manager to get an event, r≈`°dONLNd—v*LJ)†*esponds to the event, then loops back to rï`°dONLNd˚v·Ç )∑
  6040. epeat the °dONLNdÉäèì(åäprG °dONLNdÉîè¡)
  6041. ocess. See √Ä°dONLNdÉ¡è)-Listing 4-4 on page ÖÄ°dONLNd&Éè")W77ÖÄ°dONLNd(É"è')
  6042.  fY`°dONLNd*É(èé)or a sample event loop..°dONLNdBïä°∫(ûä Listing 4-2°dONLNdMï∫°Œ)0 defi°dONLNdR)nes the °dONLNdZï°D)"DoInitManagers°dONLNdhïD°J)T rR`°dONLNdjïJ°¸)(outine. It begins by calling two Memory .°dONLNdí¢äÆ∏(´ä    Manager rW°dONLNdõ¢∏Ɔ).6outines to expand the heap zone to its limit and to crD °dONLNd—¢†Æ )Ëeate an additional block °dONLNdÍØ䪋(∏äof master pointers.
  6043. fiHÊ4flHÊ"flH_
  6044. ˇ·ˇ‚7^    °dONLNd˛‘äfl∂*$ Listing 4-2°dONLNd
  6045. ‘Œfl)DInitializing the main X¿°dONLNd ‘fl")OTÿ¿°dONLNd!‘!flf)oolbox Managers
  6046. .°dONLNd1Óä˙ (˜äPROCEDURE DoInitManagers;°dONLNdK¸ä®*BEGIN°dONLNdR
  6047. ú‰+ MaxApplZone;°dONLNdh
  6048. PÚ)¥{extend heap zone to limit}°dONLNdÖú$‰(!ú MoreMasters;°dONLNdõP$˛)¥{get 64 more master pointers}°dONLNdª4ú@(=úInitGraf(@thePort);°dONLNdÿ4P@‘)¥{initialize QuickDraw}°dONLNdBúNÿ(Kú
  6049. InitFonts;°dONLNdBPNÊ)¥{initialize Font Manager}°dONLNdPú\fi(Yú InitWindows°dONLNd,Pfi\‰)B;°dONLNd5PP\Ú)r{initialize Window Manager}°dONLNdR^újÿ(gú
  6050. InitMenus;°dONLNdf^PjÊ)¥{initialize Menu Manager}°dONLNdÅlúxΔ(uúTEInit;°dONLNdílPxŒ)¥{initialize TextEdit}°dONLNd©zúÜ(ÉúInitDialogs(NIL);°dONLNdƒzPÜÚ)¥{initialize Dialog Manager}°dONLNd‚ñú¢>(üúFlushEvents(everyEvent, 0);°dONLNdñP¢¬)¥{clear event queue}°dONLNd§ú∞fi(≠ú InitCursor;°dONLNd1§P∞¯)¥{initialize cursor to arrow}°dONLNdN≤äæ¢(ªäEND;°dONLNdS ä÷£*Then °dONLNdX £÷˜)DoInitManagers°dONLNdf ˜÷F)T calls the standarR`°dONLNdx F÷T)Od Tg`°dONLNd{ S÷∏)oolbox initialization r9¿°dONLNdí ∏÷)eoutines. Finally°dONLNd¢ ˇ÷)G, it °dONLNdß◊ä„g(‡ä0clears the event queue and calls the QuickDraw rR`°dONLNd◊◊g„Ö)›outine R`°dONLNdfi◊Ö„¡)
  6051. InitCursorR`°dONLNdË◊¡„ˆ)<  to make sur$¿°dONLNdÙ◊ˆ„)5e that .°dONLNd˚‰äÙ(Ìäthe cursor is the standar†¿°dONLNd‰Ù    )jd arrÙ °dONLNd‰    5)    ow cursorí`°dONLNd"‰57),.
  6052. ˜H4¯H
  6053. "H*4#H* $H$
  6054. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd$H"¬(HReceiving EventsˇˇˇˇˇˇU˛(4
  6055. .°dONLNd53ä?ë(<äYï°dONLNd63ê?†)ou rg`°dONLNd:3†?d)+eceive events by calling an Event Manager r9¿°dONLNde3d?©)ƒoutine, usually 9¿°dONLNdu3©?˜)EWaitNextEvent9¿°dONLNdÇ3˜?¸)N. .°dONLNdÑ@äL`(Iä.When you ask for an event, the Event Manager rr†°dONLNd≤@`LÈ)÷ eturns the next available event °dONLNd“MäY°(Väaccorõ°dONLNd◊M°Y–) ding to its ü@°dONLNd„M–Y)/event priority‡°dONLNdÒMY)?.ö‡°dONLNdÚMYp) The Event Manager rM°dONLNdMqY’)`eturns events in this or¿°dONLNdM÷YÚ)eder of °dONLNd%ZäfÆ(cä    priority:°dONLNd0mãyí+1.°dONLNd3mñy◊) activate events°dONLNdDããí(àã2.°dONLNdGñã) Imouse-down, mouse-up, key-down, key-up, and disk-inserted events in FIFO °dONLNdêãñóü* (fi‡†°dONLNdìãüó¡)        rst-in, fim°dONLNdùã¬óÓ)# rst-out) or@°dONLNd®ãÔó˝)-derˇX@ˇ ˇˇˇˇ@
  6056. ˇ·ˇ‚7^
  6057. 4*\¯, Palatino&e.3+l"CHAPTER ”)>4,     Helvetica    ˇˇ—ÚˇÆ(@lEvents4⁄*˙¯
  6058. (‡*76    )BReceiving Events4^*¿¯
  6059. °dONLNd\mht(em3.°dONLNd\xhæ) auto-key events°dONLNdnmzt(wm4.°dONLNdnxzŒ) update events (in fr·¿°dONLNd+nŒz )Vont-to-back or  °dONLNd9nzV)?der of windows)°dONLNdJÄmåt(âm5.°dONLNdMÄxå) #operating-system events (suspend, rY@°dONLNdpÄå|)†esume, mouse-moved)°dONLNdÖímût(õm6.°dONLNdàíxû√) high-level events°dONLNdõ§m∞t(≠m7.°dONLNdû§x∞®) null events.°dONLNd™µl¡r(ælTï°dONLNd´µq¡|)o rg`°dONLNdƵ|¡) etrieve an event, you pass the ,
  6060. Courierg`°dONLNdÕµ¡R)àWaitNextEventg`°dONLNd⁄µR¡T)N g`°dONLNd€µT¡z)    function g`°dONLNd‰µz¡á)&an g`°dONLNdÁµá¡¡)event record,g`°dONLNdÙµ¡¡’): defig`°dONLNd˘µ’¡Ù)ned by °dONLNd¬lŒ~(Àlthe °dONLNd¬~Œ¿) EventRecord°dONLNd¬¿ŒÚ)B  data type:°dONLNdŸlÂÿ(‚lTYPE EventRecord =°dONLNd/Á~Û¢+RECORD°dONLNd8ıêÆ+what:°dONLNdBıÍ)ZInteger;°dONLNdOıDå)Z {event code}°dONLNd^ê¿( êmessage:°dONLNdkÍ)ZLongInt;°dONLNdxDû)Z{event message}°dONLNdäêÆ(êwhen:°dONLNdîÍ)ZLongInt;°dONLNd°D¬)Z{ticks since startup}°dONLNdπê+¥((êwhere:°dONLNdƒÍ+)ZPoint;°dONLNdœD+§)Z{mouse location}°dONLNd‚-ê9Ã(6ê
  6061. modifiers:°dONLNdÒ-Í9)ZInteger;°dONLNd˛-D9§)Z{modifier flags}°dONLNd;~Gñ(D~END;°dONLNdSl_(\lOn rR`°dONLNdS_†)eturn fr$¿°dONLNd!S†_Ø)!om $¿°dONLNd$SØ_˝)WaitNextEvent$¿°dONLNd1S˝_)N, the $¿°dONLNd7S_,)what$¿°dONLNd;S,_5) fi$¿°dONLNd>S5_Ç)    eld of the event r˜ °dONLNdPSÅ_ì)Lecor…Ä°dONLNdTSì_Ò)d contains an integer .°dONLNdj`llú(il that specifiƒ@°dONLNdv`úl¯)0es the type of event r° °dONLNdå`¯lÜ)\eceived. The Event Manager useìÄ°dONLNd™`ál§)ès this sF†°dONLNd≤`•lƒ)et of pr„ °dONLNd∫`ƒlŸ)edefiû‡°dONLNdø`⁄lÌ)ned °dONLNd√mly
  6062. (vl%constants to indicate the event type:.°dONLNdÈÑlêä*CONST°dONLNdí~û¥+    nullEvent°dONLNdˇíÍû)l= 0;°dONLNdíDû⁄)Z{no other pending events}°dONLNd#†~¨¥(©~    mouseDown°dONLNd2†Í¨)l= 1;°dONLNd;†D¨»)Z{mouse button pressed}°dONLNdSÆ~∫®(∑~mouseUp°dONLNd`ÆÍ∫)l= 2;°dONLNdiÆD∫Œ)Z{mouse button released}°dONLNdǺ~»®(≈~keyDown°dONLNdèºÍ»)l= 3;°dONLNdòºD»í)Z{key pressed}°dONLNdß ~÷ú(”~keyUp°dONLNd≤ Í÷)l= 4;°dONLNdª D÷ò)Z{key released}°dONLNdÀÿ~‰®(·~autoKey°dONLNdÿÿ͉)l= 5;°dONLNd·ÿD‰û)Z{key held down}°dONLNdÚÊ~Ú¥(Ô~    updateEvt°dONLNdÊÍÚ)l= 6;°dONLNd
  6063. ÊDÚ⁄)Z{a window needs updating}°dONLNd%Ù~®(˝~diskEvt°dONLNd2ÙÍ)l= 7;°dONLNd;ÙDû)Z{disk inserted}°dONLNdL~¿( ~ activateEvt°dONLNd]Í)l= 8;°dONLNdfDÏ)Z{activate/deactivate window}°dONLNdÑ~ú(~osEvt°dONLNdèÍ)l= 15;°dONLNdôD‘)Z{operating-system event}°dONLNd≥~*ÿ('~kHighLevelEvent°dONLNd»Í*)l= 23;°dONLNd“D*∞)Z{high-level event}°dONLNdÂ6lBÄ(?lThe °dONLNdÈ6ÄB™)message°dONLNd6™B≥)* fi°dONLNdÛ6≥B)    eld of the event rR`°dONLNd6B)Mecor$¿°dONLNd    6B¯)3d contains additional information about the event. .°dONLNd<ClOù(Ll The interpr;@°dONLNdGCûO„)2etation of this fiH °dONLNdYC„Oö)E)eld depends on the type of event you’ve r— °dONLNdÇCöOÎ)∑eceived. For some °dONLNdîPl\‘(YlPevents (such as null events, mouse-up, and mouse-down events), the value in the ˇ˝°é.°dONLNd‰]liñ*messageˇˇ5⁄°dONLNdÎ]ñiõ)* fÜZ°dONLNdÌ]õi—)ield is undef¬é°dONLNd˙]—i)6ined. For keyboar¢°dONLNd ]iX)Nd events, the ˇ˝°é¢0°dONLNd]XiÇ)9messageˇˇ5⁄¢0°dONLNd ]Çiá)* f®ä°dONLNd"]áiî)iel®ä°dONLNd%]îiü)d ifid°dONLNd(]üi∏) ndicafid°dONLNd-]∏iŒ)tes w>°dONLNd2]œi¯)    hich key °dONLNd;jlvä(slwas prR`°dONLNdAjävJ)+essed. For activate and update events, the R`°dONLNdljJvt)¿messageR`°dONLNdsjtv})* fiR`°dONLNdvj}v„)    eld contains a window ˇˇün°dONLNdåwlÉ¥(Älpointer to the af0™°dONLNdùwµɈ)Ifected window°dONLNd™wıÉ|)@ . For disk-inserted events, the ˇ˛fiJ>°dONLNd w}Éß)àmessageˇˇün>°dONLNd—wßÉØ)* fi°¨°dONLNd‘wØɘ)eld contains the .°dONLNdÂÑlê‰(çldrive number in the low-or±`°dONLNdˇщê)xder worö‡°dONLNdÑê7)# d and the rΔ °dONLNdÑ7êª)0esult code of the File Manageri`°dONLNd/ÑΩêˆ)Ü’s attempt to °dONLNd=ëlù(ölmount that disk in that drive. @°dONLNd\ëÒù)Ö Listing 4-3°Ä°dONLNdgëùZ). illustrates hoc†°dONLNdvë[ù´)<w an application rᇰdONLNdàë´ù∫)Peadm@°dONLNdãëªùø)s™@°dONLNdåëøùˆ) parts of the .°dONLNdöûl™ñ(ßlmessage°dONLNd°ûñ™ú)* fPÄ°dONLNd£ûú™Z))ield while handling disk-inserted events.ˇ0Ç@ˇ ˇˇˇˇ@
  6064. ˇ·ˇ‚7^
  6065. 4H\, Palatino&e.3+ä"CHAPTER ”)>4,     Helvetica    ˇˇ—ÚˇÆ(@äEvents4⁄ä˙(‡äReceiving Events
  6066. (‡ 77
  6067. ˇˇˇˇˇˇˇˇ4l4älòÄ0l@äoMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6068. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6069.  
  6070.  
  6071.  
  6072.  
  6073.  
  6074. ˆ                        ˜¯˘˙˚¸˝˛ˇl@äol@äo$——————————————————————————————òÄ
  6075. l6ä@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6076. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6077.  
  6078.  
  6079.  
  6080.  
  6081.  
  6082. ˆ                        ˜¯˘˙˚¸˝˛ˇl6ä@l6ä@˜˜˜˜˜˜˜˜˜˜˜˜¸ˇˇ˛¸˛ˇˇ¸ˇˇˇ˛˙ˇ˛˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  6083. 4è4Ö?òÄ
  6084. è6Ö@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6085. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6086.  
  6087.  
  6088.  
  6089.  
  6090.  
  6091. ˆ                        ˜¯˘˙˚¸˝˛ˇè6Ö@è6Ö@$˛˙ˇ
  6092. ˛ˇˇˇ
  6093. ˛ˇˇˇ
  6094. ˛ˇˇˇ
  6095. ˛ˇˇˇ˜˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˝˛ˇ˛
  6096. ˛ˇˇˇˇ
  6097. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝¸ˇ
  6098. ˛ˇ˛ˇˇ    ˛ˇˇ˛
  6099. ˛ˇˇˇˇ
  6100. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  6101. gHn4gHn"hH_
  6102. ˇ·ˇ‚7^    °dONLNd\äg∂(dä Listing 4-3°dONLNd \ŒgD)DHandling disk-inserted events,
  6103. Courier
  6104. .°dONLNd*väÇò(ä-PROCEDURE DoDiskEvent (myEvent: EventRecord);°dONLNdYÑúêÆ+VAR°dONLNd_íÆû‰+    myResult:°dONLNdlíˆû&)HInteger;°dONLNdw†Æ¨fi(©ÆmyPoint:°dONLNdɆˆ¨)HPoint;°dONLNdäÆä∫®(∑äBEGIN°dONLNdëºú»å+(IF HiWord(myEvent.message) <> noErr THEN°dONLNdº Æ÷Ã+BEGIN°dONLNd≈ÿ¿‰V+SetPt(myPoint, 100, 100);°dONLNd‚Ê¿ÚÊ*1myResult := DIBadMount(myPoint, myEvent.message);°dONLNdÙÆΔ(˝ÆEND;°dONLNdä¢( äEND;ˇˇ≈¥°dONLNd ä&§*AIf the disk was not successfully mounted (that is, if the high-or—°dONLNda§&≈(#§der wori0°dONLNdhΔ&Í)"    d of the ˇˇQ∫L°dONLNdqÍ&)$messageˇˇ≈¥∫L°dONLNdx&)* °dONLNdy'ä3ë(0äfi°dONLNd{'ë3Î)eld does not contain °dONLNdê'Î3    )ZnoErr°dONLNdï'    3))), then °dONLNdù')3k)  DoDiskEvent°dONLNd®'k3€)B calls the system softwarR`°dONLNd¡'€3Ê)pe r$¿°dONLNdƒ'Ê3) outine ˇˇ®é°dONLNdÀ4ä@Δ(=ä
  6105. DIBadMountˇˇ‚⁄°dONLNd’4Δ@∂)<9 to inform the user and allow the disk to be ejected or r◊r°dONLNd4∂@)eformatted. (See the .°dONLNd#AäM?(Jä)chapter “Disk Initialization Manager” in Ö@°dONLNdLA?Mú)µInside Macintosh: FilesL °dONLNdcAùM¿)^ for mor†°dONLNdkA¡Mˇ)$e information °dONLNdyNäZ/(Wä%about handling disk-inserted events.).°dONLNdü`älû*The °dONLNd£`ûlº)where°dONLNd®`ºl≈) fi°dONLNd´`≈l)    eld of the event rR`°dONLNdΩ`l$)Mecor$¿°dONLNd¡`$l )6d contains, for low-level events, the location of the .°dONLNd˜mäy<(vä)cursor at the time the event was posted. d†°dONLNd m<yB)≤Y% °dONLNd!mBy)-ou can use this information to determine wher‡°dONLNdNmy)Õe °dONLNdPzäÜ¥(Éä
  6106. on the scrÄ°dONLNdZzµÜæ)+ee©¿°dONLNd\zæÜ÷)    n a mO °dONLNdaz◊ÜÊ)ous¿°dONLNddzÁÜB)e-down event occurrA‡°dONLNdwzBÜO)[ed,ß@°dONLNdzzOÜá) for instance..°dONLNdâåäòû(ïäThe °dONLNdçåûò‘)    modifiers°dONLNdñå‘ò›)6 fi°dONLNdôå›òŒ)    5eld contains information about the state of the modifi°dONLNdœåŒò)Òer keys and the .°dONLNdflôä•Õ(¢äJmouse button at the time the event was posted. For activate events, this fiI`°dONLNd*ôŒ•Ú(¢Œ    eld also °dONLNd3¶ä≤Ê(ØäMindicates whether the window should be activated or deactivated. (In System 7ˇ°dONLNdĶÊ≤Ë(ØÊ,°dONLNdŶÈ≤)     it also °dONLNdä≥äøÌ(ºäNindicates whether a mouse-down event caused your application to switch to the °dONLNdÿ¿äÃñ*for`°dONLNd€¿óÕ)egr, °dONLNdfi¿•ì)ound.)°dONLNd“äfiê(€äTµ¿°dONLNdÊ“èfiî):o handle an event, you simply take whatever action is apprª†°dONLNd “îfi(€îopriate for the kind of event °dONLNd>fläÎû(Ëäit is. P °dONLNdEflüÎÕ) Listing 4-4`°dONLNdPflÕÎ,). shows one way to strî¿°dONLNdefl-ÎD)`uctur†°dONLNdjflEÎn)    e an even¿Ä°dONLNdsflnÎz))t-h( °dONLNdvfl{Σ)    andling rãÄ°dONLNdfl£Î¡)(outine.
  6107. H4H"H_
  6108. ˇ·ˇ‚7^    °dONLNdáä∂( ä Listing 4-4°dONLNdìŒ)DAn event loop
  6109. .°dONLNd°H*‰('HPROCEDURE DoMainEventLoop;°dONLNdΩ,Z8l+VAR°dONLNd√:lFú+myEvent:°dONLNdœ:¥F¸)H EventRecord;°dONLNdfiHlT¢(Ql    gotEvent:°dONLNdÎH¥T‰)HBoolean;°dONLNd˚HDTÊ)ê{is returned event for me?}°dONLNdVHbf(_HBEGIN°dONLNddZp~+REPEAT°dONLNd'rl~º+8gotEvent := WaitNextEvent(everyEvent, myEvent, 15, NIL);°dONLNdbÄlå\*(IF NOT DoHandleDialogEvent(myEvent) THEN°dONLNdéé~öfi+IF gotEvent THEN°dONLNd£úê®Æ+BEGIN°dONLNdÆ™¢∂+CASE myEvent.what OFˇ–@ˇ ˇˇˇˇ@
  6110. ˇ·ˇ‚7^
  6111. 4*\¯, Palatino&e.3+l"CHAPTER ”)>4,     Helvetica    ˇˇ—ÚˇÆ(@lEvents4⁄*˙¯
  6112. (‡*78    )BReceiving Events4^*¿¯,
  6113. Courier
  6114. .°dONLNd\ñhÿ(eñ mouseDown: °dONLNdj®v&+DoMouseDown(myEvent);°dONLNd5jív§)Í{se°dONLNd8j§v∞)e °dONLNd:j∞vŒ) page °dONLNd?jŒv‡)120°dONLNdBj‡vÊ)}°dONLNdJxñÑ(ÅñkeyDown, autoKey: °dONLNddÜ®í+DoKeyDown(myEvent);°dONLNdÑÜíí§)Í{se°dONLNdáܧí∞)e °dONLNdâÜ∞íŒ) page °dONLNdéÜŒí‡)160°dONLNdë܇íÊ)}°dONLNdôîñ†ÿ(ùñ updateEvt: °dONLNd¨¢®ÆÜ+%DoUpdate(WindowPtr(myEvent.message));°dONLNdfi¢íƧ)Í{se°dONLNd·¢§Æ∞)e °dONLNd„¢∞ÆŒ) page °dONLNdË¢ŒÆ‡)124°dONLNd΢‡ÆÊ)}°dONLNdÛ∞ñºÃ(πñ    diskEvt: °dONLNdæ® &+DoDiskEvent(myEvent);°dONLNd&æí §)Í{se°dONLNd)槠∞)e °dONLNd+æ∞ Œ) page °dONLNd0挠⁄)77°dONLNd2æ⁄ ‡) }°dONLNd:Ãñÿ‰(’ñactivateEvt: °dONLNdO⁄®Êå+&DoActivate(WindowPtr(myEvent.message),°dONLNdÅËÙh+H myEvent.modifiers);°dONLNdûËíÙ§)¢{se°dONLNd°Ë§Ù∞)e °dONLNd£Ë∞ÙŒ) page °dONLNd®ËŒÙ‡)126°dONLNd´Ë‡ÙÊ)}°dONLNd≥ˆñ¿(ˇñosEvt: °dONLNd¬®+DoOSEvent(myEvent);°dONLNd‚í§)Í{se°dONLNd§∞)e °dONLNdÁ∞Œ) page °dONLNdÏŒ‡)171°dONLNdÔ‡Ê)}°dONLNd˜ñˆ(ñkeyUp, mouseUp: °dONLNd ®,Æ+;°dONLNd.ñ:ÿ(7ñ nullEvent: °dONLNd*<®H+DoIdle(myEvent);°dONLNdG<íH§)Í{se°dONLNdJ<§H∞)e °dONLNdL<∞HŒ) page °dONLNdQ<ŒH‡)173°dONLNdT<‡HÊ)}°dONLNd\JñVÃ(Sñ    OTHERWISE°dONLNdmX®dÆ+;°dONLNdtfÑrΔ(oÑ END; {CASE}°dONLNdÑtrÄÑ(}rEND°dONLNdãÇ`éx(ã`ELSE°dONLNdîêrú“+DoIdle(myEvent);°dONLNd¶û<™Ñ(ß< UNTIL gDone;°dONLNdæû™û)ÿ{loop until user quits}°dONLNd÷¨*∏B(µ*END;°dONLNd€ƒl–√+BThe event loop defi°dONLNdÓƒ√–‡)Wned in °dONLNdıƒ‡–) Listing 4-4°dONLNdƒ–)0 rR`°dONLNdƒ–q)epeatedly calls the R`°dONLNdƒq–ø)[WaitNextEventR`°dONLNd#ƒø–Ú)N function to °dONLNd0—l›p(⁄lrR`°dONLNd1—p›E)0etrieve the next available event. This function R`°dONLNda—E›I)’r$¿°dONLNdb—I›f)eturns $¿°dONLNdi—f›t)a v$¿°dONLNdl—t›ï)alue of $¿°dONLNdt—ï›≥)!FALSE$¿°dONLNdy—≥›”) if ther˜ °dONLNdÅ—“›„)e ar…Ä°dONLNdÖ—„›ˆ)e no .°dONLNdäfilͺ(Álevents of the desir¿°dONLNdùfiΩÍœ)Q?ed type (other than null events) pending for your application. .°dONLNd‹Îl˜¢(Ùl Otherwise, °dONLNdÁ΢˜)6WaitNextEvent°dONLNdÙÎ˜ˆ)N rR`°dONLNdˆΈ˜)eturns R`°dONLNd˝Î˜+)TRUER`°dONLNdÎ+˜.).ˇˇˆ°dONLNd˝l    (l#After the next available event is rðdONLNd&˝    D)õetrieved, the ˇˇ‚6°dONLNd4˝E    ü)>DoMainEventLoopˇˇˆ°dONLNdC˝ü    ™)Z prÀb°dONLNdF˝™    «) ocedurù¬°dONLNdL˝«    ˜) e calls the °dONLNdX
  6115. l∏(lapplication-defi°dONLNdh
  6116. ∏)Lned function °dONLNdu
  6117. b)8DoHandleDialogEvent°dONLNdà
  6118. bz)r (defi°dONLNdé
  6119. zó)ned in °dONLNdï
  6120. ó’)Listing 7-5 on .°dONLNd§l#É( lpage Z‡°dONLNd©Ñ#ì)141Z‡°dONLNd¨ì#é):) to determine whether the event applies to a dialog box. 9°dONLNdÊè#¢)¸The .°dONLNdÍ$l0fi(-lDoHandleDialogEvent°dONLNd˝$fi0‡)r °dONLNd˛$‡0)    function °dONLNd$0
  6121. )&rR`°dONLNd$
  6122. 0')eturns R`°dONLNd$'0?)TRUER`°dONLNd$?0•) if it handled the evenR`°dONLNd*$•0±)ft aR`°dONLNd-$±0æ) nd R`°dONLNd0$æ0‹)FALSER`°dONLNd5$‹0fi) .°dONLNd61l=ö(:l
  6123. otherwise.
  6124. K*Y¯4L*Y¯    °dONLNdAJlU*Note
  6125. ˇ·ˇ‚7^
  6126. °dONLNdFWlc´*Dialog boxes r°dONLNdTW¨cÒ)@eceive special tr∞‡°dONLNdeWÒcè)E"eatment because the system softwarh¿°dONLNdáWêcó)üe °dONLNdâclo¶(llFautomatically handles many user actions in dialog boxes. For example, °dONLNdœol{™* Hthe Dialog Manager handles update events for dialog boxes, and it calls °dONLNd{láï*     the ContrB†°dONLNd {ñá')* ol Manager to handle user actionΩ °dONLNd@{'á6)ës af†`°dONLNdD{6á[)    fecting a9`°dONLNdM{\áÄ)&ny contrÿ`°dONLNdU{Äá™)$ ols in the °dONLNd`álìù(êl dialog box.,Zapf Dingbatsñ‡°dONLNdtä¢íß)6uˇ7J@ˇ ˇˇˇˇ@
  6127. ˇ·ˇ‚7^
  6128. 4H\, Palatino&e.3+ä"CHAPTER ”)>4,     Helvetica    ˇˇ—ÚˇÆ(@äEvents4⁄ä˙(‡ä+Handling Events Outside the Main Event Loop
  6129. (‡ 79
  6130. ˇˇˇˇˇˇˇˇ4l4älòÄ0l@äoMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6131. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6132.  
  6133.  
  6134.  
  6135.  
  6136.  
  6137. ˆ                        ˜¯˘˙˚¸˝˛ˇl@äol@äo$——————————————————————————————òÄ
  6138. l6ä@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6139. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6140.  
  6141.  
  6142.  
  6143.  
  6144.  
  6145. ˆ                        ˜¯˘˙˚¸˝˛ˇl6ä@l6ä@˜˜˜˜˜˜˜˜˜˜˜˜¸ˇˇ˛¸˛ˇˇ¸ˇˇˇ˛˙ˇ˛˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  6146. 4è4Ö?òÄ
  6147. è6Ö@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6148. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6149.  
  6150.  
  6151.  
  6152.  
  6153.  
  6154. ˆ                        ˜¯˘˙˚¸˝˛ˇè6Ö@è6Ö@$˛˙ˇ
  6155. ˛ˇˇˇ
  6156. ˛ˇˇˇ
  6157. ˛ˇˇˇ
  6158. ˛ˇˇˇ˜˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˝˛ˇ˛
  6159. ˛ˇˇˇˇ
  6160. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝¸ˇ
  6161. ˛ˇ˛ˇˇ    ˛ˇˇ˛
  6162. ˛ˇˇˇˇ
  6163. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\äh¬(eäIf the event r¢°dONLNd\¬h¸)8Letrieved does not apply to a dialog box, and if it isn’t a null event, then ,
  6164. Courier.°dONLNdZiäu‰(räDoMainEventLoop°dONLNdii‰uL)Z branches into a Pascal °dONLNdÅiLud)hCASE°dONLNdÖidu˙)! statement in which the labels arR`°dONLNd¶i˙u)ñe .°dONLNd®väÇ≈(äsimply the próÄ°dONLNdµv≈Ç⁄);edefiS@°dONLNd∫v€Çs)#ned constants for each event type. d†°dONLNd›vsÇ)ò%As you can see, the event loop calls °dONLNdÉäè›(åäan application-defiŒ@°dONLNdÉ›èÙ)Sned r °dONLNdÉÙè„)7outine to handle each particular kind of event. These r¥Ä°dONLNdQÉ„è)Ôoutines °dONLNdYêäúí(ôäarE°dONLNd[êìú´)    e defiÄ¿°dONLNdaê´úÀ)ned thrê@°dONLNdhêÀú) oughout this book.
  6165. £Hæ4§Hæ
  6166. ŒH÷4œH÷ –H–
  6167. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd{ªHŒõ(…H+Handling Events Outside the Main Event LoopˇˇˇˇˇˇU˛(…4
  6168. .°dONLNdßfläÎë(ËäYï°dONLNd®flêÎ{)4ou’ll notice that some types of events—for example, ï°dONLNd‹fl{Îô)ÎkeyUpï°dONLNd·flôÎÆ) and ï°dONLNdÊflÆÎÿ)mouseUpï°dONLNdÌflÿÎÏ)*—arg`°dONLNdflÏÎ)    e simply .°dONLNd˘Ï䯰(ıäignor`°dONLNd˛Ï¢¯()ed by the main event loop defiÄ°dONLNdÏ(¯F)Üned in °dONLNd#ÏF¯t) Listing 4-4ê@°dONLNd.Ïu¯≈)/. Key-up events ar◊Ä°dONLNd@Ï≈¯„)Pe ignor§Ä°dONLNdGω¯Ò)ed °dONLNdJ˘äΩ(ä
  6169. because mo¿°dONLNdT˘æü)43st applications don’t need to know that a key was rÙÄ°dONLNdá˘û
  6170. )‡eleased, only that it was °dONLNd°äì(äprG °dONLNd£î¨)
  6171. essedp °dONLNd®¨∂). S؇°dONLNd´∂ÿ)
  6172. imilarlyã`°dONLNd≥ÿÔ)"<, you usually don’t need to know when the mouse button was r? °dONLNdÔ(    eleased, °dONLNd¯ä«(äbecause you’rg@°dONLNd«‡)=e morø`°dONLNd
  6173. ‡¸)e interì¿°dONLNd¸ü)"ested in knowing whether (and wher+¿°dONLNd3†)§e) the mouse button was °dONLNdK ä,ì()äprG °dONLNdM î,)
  6174.  essed. In certain cases, howeverâ °dONLNdm ,l)ã, you will be inter°dONLNdÄ m,˜)Nested in a mouse-up event. For °dONLNdü-ä9‹(6äexample, if the use!¿°dONLNd≤-›9Ì)Sr pr[Ä°dONLNd∂-Ì9¨),esses the mouse button while the cursor is iÒ¿°dONLNd‚-¨9)øn a window’s close box °dONLNd˘:äF(Cä but then moves the cursor outsidb‡°dONLNd:F&)íe tÓ‡°dONLNd:&Fu)
  6175. he close box befor‰°dONLNd.:uFÄ)Oe rÚ†°dONLNd1:ÄF ) eleasing the mouse button, you °dONLNdPGäSÁ(PäLdon’t want to handle the mouse-down event. (This is another good example of °dONLNdúTä`ù*userR¿°dONLNd†Tù`ª)-centerLJ°dONLNdßTª` )ed design: allowin™Ä°dONLNdπT `)Qg u¿¿°dONLNdºT`&)ser∫°dONLNdøT'`+)s˜°dONLNd¿T+`S)     to changQ°dONLNd…TT`{))    e their mß°dONLNd“T{`â)'ind|Ä°dONLNd’Tä`é)sπÄ°dONLNd÷Té`ì).)°dONLNdŸfärˆ(oäIt might appear that a pr›‡°dONLNdÚfˆr‘)l1oblem is lurking, because the main event loop defi¿°dONLNd$f’rÛ)flned in °dONLNd,sä∏(|ä Listing 4-4 @°dONLNd7sπ”)/ ignor#†°dONLNd=s”E)es mouse-up events. Howõ¿°dONLNdTsD)q0, then, can your application determine that the °dONLNdÑÄäå£(âäuser r≈`°dONLNdäÄ£åˆ)Keleased the mouse button when the cursor was outside of the close box? The ˇˇû
  6176. .°dONLNd’çäô.(ñä$answer is simple: the system softwarhí°dONLNd˘ç.ô>)§e prÿ¸°dONLNd˝ç>ôi)
  6177. ovides a rÁp°dONLNdçiôâ)+outine, ˇ˛⁄Öz°dONLNdçäôÃ)! TrackGoAwayˇˇû
  6178. i∫°dONLNdçÀôÒ)A    , that yo•Œ°dONLNd#çÒô˚)&u cCÿ°dONLNd&ç¸ô) all in °dONLNd-öä¶é(£ärR`°dONLNd.öé¶:)*esponse to a user click in the close box. R`°dONLNdXö:¶N)¨The R`°dONLNd\öN¶ê) TrackGoAwayR`°dONLNdgöê¶í)B R`°dONLNdhöí¶∏)    function R`°dONLNdqö∏¶ )&tracks user actions ˇˇ‰ê°dONLNdÖßä≥(∞äinvolving the close box; it r…0°dONLNd¢ß≥t)yeturns the Boolean value ˇˇ≠∞[p°dONLNdªßu≥ç)rTRUEˇˇ‰ê[p°dONLNdøßç≥)# if the cursor is still inside the ˇˇú§°dONLNd‚¥ä¿    (Ωäclose box when the button is r˛8°dONLNd¥    ¿@) eleased and ˇ˛’Ï7Ä°dONLNd ¥A¿_)8FALSEˇˇú§7Ä°dONLNd¥_¿ì)  otherwise. p»°dONLNd¥ì¿¬)4 Listing 4-5l°dONLNd(¥√¿)0 illustrates how to °dONLNd<¡äÕû( äcall °dONLNdA¡ûÕ‡) TrackGoAwayd@°dONLNdL¡flÕ‚)A.
  6179. H¯4ÒH¯"ÒH_
  6180. ˇ·ˇ‚7^    .°dONLNdNÊäÒ∂(Óä Listing 4-5°dONLNdZʌҔ)DT™p°dONLNd[Ê”Ò>)racking mouse events in th∞ °dONLNduÊ>Òb)k    e close b≤°dONLNd~ÊbÒk)$ox
  6181. .°dONLNdÅä ¯(    ä=PROCEDURE DoGoAwayBox (myWindow: WindowPtr; mouseloc: Point);°dONLNdøä®*BEGIN°dONLNdΔú(Ü+'IF TrackGoAway(myWindow, mouseloc) THEN°dONLNd*Æ6>+DoCloseWindow(myWindow);°dONLNd    8äD¢(AäEND;°dONLNdPä\û*The °dONLNdPû\‡) TrackGoAway°dONLNdP‡\¨)B/ function exits only when the mouse button is rR`°dONLNdLP¨\)Ãeleased. Because it .°dONLNd`]äi◊(fäJdetermines internally when that happens, your application doesn’t need to.ˇÚ@ˇ ˇˇˇˇ@
  6182. ˇ·ˇ‚7^
  6183. 4*\¯, Palatino&e.3+l"CHAPTER ”)>4,     Helvetica    ˇˇ—ÚˇÆ(@lEvents4⁄*˙¯
  6184. (‡*80    )B+Handling Events Outside the Main Event Loop4^*¿¯
  6185. °dONLNd\lh¬(elThe system softwar↰dONLNd\¬h”)Ve prö`°dONLNd\”hˆ)ovides r‡°dONLNd\˜hc)$outines to handle the thrc¿°dONLNd7\chı)l ee main cases in which you need °dONLNdWiluˆ(rl[to track the mouse and determine if the cursor is in a particular location when the button °dONLNd≤vlÇy*is rÍ`°dONLNd∂vyÇØ) eleased. Herh`°dONLNd¬v∞Ç¿)7e arw°dONLNdΔv¿ÇÙ) e the main r¿°dONLNd“vÙÇD)4outines you’ll use:°dONLNdû’l·÷(filQFor various purposes, you might need to perform similar tracking on an arbitrary .°dONLNdÔ‚lÓp*rR`°dONLNd‚pÓœ)ectangle in a windowg`°dONLNd‚ŒÓ)^. The function ,
  6186. Courierg`°dONLNd‚ÓO)? DoTrackRectg`°dONLNd‚OÓc)B defig`°dONLNd#‚cÓÄ)ned in g`°dONLNd*‚ÄÓ∞) Listing 4-6g`°dONLNd5‚∞Ó·)0  shows one .°dONLNd@Ôl˚ù(¯l
  6187. way to defi °dONLNdKÔû˚Ó)2ne such a functionø °dONLNd]ÔÓ˚)P.
  6188.     *¯4
  6189. *¯    °dONLNd_l(lNote
  6190. ˇ·ˇ‚7^
  6191. .°dONLNddl!t*Vd@°dONLNdes!ÿ)enn Diagrammer calls d@°dONLNdzÿ!)e DoTrackRectd@°dONLNdÖ!C)B     to handld@°dONLNdéC!≠))e mouse-down events in .°dONLNd•!l-Ω(*lthe tool icons. See ¢†°dONLNdπ!Ω-Î)Q Listing 6-9B‡°dONLNdƒ!Ï-+)/ beginning on æ °dONLNd“!+-B)?page ô°dONLNd◊!C-R)121ô°dONLNd⁄!R-T).,Zapf Dingbats°dONLNd‰$Z,_)u
  6192. O*W¯4P*W¯"P*_
  6193. ˇ·ˇ‚7^    °dONLNdÊElPò(Ml Listing 4-6°dONLNdÚE∞Pµ)DT™p°dONLNdÛEµP‹)
  6194. racking th´°dONLNd˝E‹P)'
  6195. e cursor i´P°dONLNdEP])%n an arbitrary rectangle
  6196. .°dONLNd _lk¯(hlBFUNCTION DoTrackRect (myWindow: WindowPtr; myRect: Rect): Boolean;°dONLNddm~yê+VAR°dONLNdj{êáΔ+    myIgnore:°dONLNdw{ÿá)HLongInt;°dONLNdÇâêï¿(íêmyPoint:°dONLNdéâÿï¸)HPoint;°dONLNdïól£ä(†lBEGIN°dONLNdú•~±+InvertRect(myRect);°dONLNdπ•2±∂)¥{invert the rectangle}°dONLNd—≥~ø¢(º~REPEAT°dONLNd⁄¡êÕ>+Delay(kVisualDelay, myIgnore)°dONLNd˘œ~€ˆ(ÿ~UNTIL NOT StillDown;°dONLNdœ2€»)¥{until mouse is released}°dONLNd2›~È(Ê~InvertRect(myRect);°dONLNdH˘~Í*GetMouse(myPoint);°dONLNdd˘2™)¥{get mouse location}°dONLNdz~t(~)DoTrackRect := PtInRect(myPoint, myRect);°dONLNd§l!Ñ(lEND;°dONLNd©-l9Ä*The °dONLNd≠-Ä9¬) DoTrackRect°dONLNd∏-¬9<)B function inverts the specifi°dONLNd’-<9M)zed rR`°dONLNdŸ-M9Ô)%ectangle and keeps it inverted until °dONLNd˛:lFñ(Cl
  6197. the user rR`°dONLNd:ñFâ)*5eleases the mouse button. The Event Manager function R`°dONLNd=:âFø)Û    StillDownR`°dONLNdF:øFÊ)6
  6198.  looks in °dONLNdPGlS†(PlGyour application’s event queue for a mouse-up event; if none is found, °dONLNdóG†S÷(P†    StillDown°dONLNd†G÷Sÿ)6 °dONLNd°Tl`p(]lrR`°dONLNd¢Tp`ç)eturns R`°dONLNd©Tç`•)TRUER`°dONLNd≠T•`›); otherwise, R`°dONLNd∫T›`)8    StillDownR`°dONLNd√T`)6 r$¿°dONLNd≈T`6)eturns $¿°dONLNdÃT6`T)FALSE$¿°dONLNd—TT`â) . Note that $¿°dONLNd›Tâ`À)5 DoTrackRect$¿°dONLNdËTÀ`Á)B loops °dONLNdÔalmÑ(jluntil °dONLNdıaÑm∫)    StillDown°dONLNd˛a∫m¿)6 rR`°dONLNda¿m›)eturns R`°dONLNda›m˚)FALSER`°dONLNd a˚mk), indicating that the corr$¿°dONLNd&akmÙ)pesponding mouse-up event has °dONLNdCnlzÂ(wlbeen found. The call to the °dONLNd_nÂz)yDelay°dONLNddnz) prR`°dONLNdgnz,) ocedur$¿°dONLNdmn,z©)e within the loop is to ensur˜ °dONLNdän®zÿ)| e that the .°dONLNdï{láo(ÑlrE°dONLNdñ{pá5)+ectangle is inverted for some minimum, user¡@°dONLNd¡{5áG)≈-per•‡°dONLNd≈{Gá´)ceptible amount of timÚ¿°dONLNd€{´á≤)de.    °dONLNdÊèlöœ(ólMouse-tracking routine˚¿°dONLNd˝è„ö˛)wAction
  6199. .°dONLNdùl©ú(¶lTrackBox.˚¿°dONLNdù„©È)wT6Ä°dONLNdùÈ©)rack thº@°dONLNdù©/)
  6200. e cursor i}`°dONLNd ù0©ô))n a window’s zoom box.°dONLNd7≠lπ¥(∂l TrackControl.˚¿°dONLNdD≠„πÈ)wT6Ä°dONLNdE≠Èπ)rack thº@°dONLNdL≠π5)
  6201. e cursor wÏ°dONLNdV≠5πj).ithin a contr``°dONLNdc≠kπs)6ol.°dONLNdgΩl…Æ(Δl TrackGoAway.˚¿°dONLNdsΩ„…È)wT6Ä°dONLNdtΩÈ…)rack thº@°dONLNd{Ω…/)
  6202. e cursor i}`°dONLNdÖΩ0…ñ))n a window’s close boxˇ&∂@ˇ ˇˇˇˇ@
  6203. ˇ·ˇ‚7^
  6204. 4H\, Palatino&e.3+ä"CHAPTER ”)>4,     Helvetica    ˇˇ—ÚˇÆ(@äEvents4⁄ä˙(‡ä+Handling Events Outside the Main Event Loop
  6205. (‡ 81
  6206. ˇˇˇˇˇˇˇˇ4l4älòÄ0l@äoMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6207. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6208.  
  6209.  
  6210.  
  6211.  
  6212.  
  6213. ˆ                        ˜¯˘˙˚¸˝˛ˇl@äol@äo$——————————————————————————————òÄ
  6214. l6ä@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6215. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6216.  
  6217.  
  6218.  
  6219.  
  6220.  
  6221. ˆ                        ˜¯˘˙˚¸˝˛ˇl6ä@l6ä@˜˜˜˜˜˜˜˜˜˜˜˜¸ˇˇ˛¸˛ˇˇ¸ˇˇˇ˛˙ˇ˛˙ˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  6222. 4è4Ö?òÄ
  6223. è6Ö@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6224. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6225.  
  6226.  
  6227.  
  6228.  
  6229.  
  6230. ˆ                        ˜¯˘˙˚¸˝˛ˇè6Ö@è6Ö@$˛˙ˇ
  6231. ˛ˇˇˇ
  6232. ˛ˇˇˇ
  6233. ˛ˇˇˇ
  6234. ˛ˇˇˇ˜˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˝˛ˇ˛
  6235. ˛ˇˇˇˇ
  6236. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝¸ˇ
  6237. ˛ˇ˛ˇˇ    ˛ˇˇ˛
  6238. ˛ˇˇˇˇ
  6239. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  6240. Courier.°dONLNd\äh®(eäCONST°dONLNdjúv‰+ kVisualDelay°dONLNdjv2)~= 6;°dONLNd!jPv)6!{wait 6 ticks (one-tenth second)}°dONLNdCÇäéû(ãäThe °dONLNdGÇûé‡) DoTrackRect°dONLNdRLJé:)B function loops until °dONLNdhÇ:ép)Z    StillDown°dONLNdqÇpéº)6 detects the apprR`°dONLNdÇǺé )Lopriate mouse-up .°dONLNdìèäõ“(òäevent and then rÆ °dONLNd£è“õ)Heturns the specifi¿°dONLNdµèõ/)Led r8 °dONLNdπè/õ)6ectangle to its original state by inverting it again. .°dONLNdÔú䮶(•äNext, °dONLNdıú¶®Ë) DoTrackRect°dONLNdúË®Ä)B" calls the Event Manager function °dONLNd"úÄ®∞)òGetMouse°dONLNd*ú∞®ˇ)0 to determine the .°dONLNd<©äµú(≤äcurrØ°dONLNd@©úµ
  6241. )ent position of the cursorìÄ°dONLNdZ©
  6242. µì)n . If, when the mouse button is r†°dONLNdz©îµ)äeleased, the cursor is still .°dONLNdó∂䬰(øäinsid°dONLNdú∂°¬¨)e t°dONLNdü∂¨¬ÿ)     he specifi°dONLNd©∂ÿ¬È),ed rR`°dONLNd≠∂Ȭ±)*ectangle (as determined by the QuickDraw r$¿°dONLNd◊∂±¬œ)»outine $¿°dONLNdfi∂œ¬ˇ)PtInRect$¿°dONLNdÊ∂ˇ¬)0), °dONLNdÈ√䜰(Ãäthen °dONLNdÓ√°œ„) DoTrackRect°dONLNd˘√„œÈ)B rR`°dONLNd˚√Èœ)eturns R`°dONLNd√œ)TRUER`°dONLNd√œ!)..°dONLNd’ä·ñ(fiä:As you can see, you sometimes want to call Event Manager r] °dONLNdB’ñ·¿(fiñ
  6243. outines fru`°dONLNdL’¿· )*om outside your °dONLNd\‚äÓ(ÎäRmain event loop, most often to monitor mouse movements and button states once the °dONLNdÆÔä˚i*3user has clicked in some particular part of a windoR¿°dONLNd·Ôj˚r)‡wæ¿°dONLNd‚Ôq˚s).ˇJ@ˇ ˇˇˇˇ@
  6244. ˇ·ˇ‚7^
  6245. 4^*¿¯ˇ*@ˇ ˇˇˇˇ@
  6246. ˇ·ˇ‚7^
  6247. 4⁄∫˙,     Helvetica    .(‡∫Contents, Palatino
  6248. (‡ 83    3, Ã(#∫CHAPTER ßí)h5
  6249. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6250. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6251.  
  6252.  
  6253.  
  6254.  
  6255.  
  6256. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  6257. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6258. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6259.  
  6260.  
  6261.  
  6262.  
  6263.  
  6264. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˝ˇ˛ˇ    ˛ˇˇ˛ˇ
  6265. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜ˇˇˇˇˇˇ(JH
  6266. Figure 5-0*     Listing 5-0*    T)able 5-0
  6267. zH,
  6268. 4zH, H°dONLNd∫*˘+m Contentsˇˇˇˇˇˇ
  6269. ˇ·ˇ‚7^ˇˇ∫Ρ◊(qH5°dONLNd]∫y!)rDrawing
  6270. °dONLNd;∫G *”About QuickDrawflÄ°dONLNd"; G*)f85°dONLNd%HƒTfl(QƒPoints8@°dONLNd-HÙT˛)086°dONLNd0UƒaÛ(^ƒ
  6271. Rectangles˘¿°dONLNd<Ua)C87°dONLNd?bƒnÁ(kƒRegionsÛ°dONLNdHb˚n)789°dONLNdKoƒ{Ú(xƒ
  6272. Bit Images¿°dONLNdWo{)C91°dONLNdZ|ƒà˙(Öƒ Ports and W—†°dONLNde|˙à)6indows∞†°dONLNdm|/à9)592°dONLNdpâ∫ï(í∫Drawing Shapesi†°dONLNdÄâï!)]94°dONLNdÉñ∫¢(ü∫Drawing Bit ImagesfiÄ°dONLNdóñ&¢0)l99°dONLNdö£∫ØÈ(¨∫    Drawing TÖÄ°dONLNd££È؈)/ext∫ °dONLNd®£
  6273. Ø)!101ˇJ@ˇ ˇˇˇˇ@
  6274. ˇ·ˇ‚7^
  6275. 4^*¿¯ˇVd@ˇ ˇˇˇˇ@
  6276. ˇ·ˇ‚7^, Palatino&e.3+ä"CHAPTER ”)>5
  6277. 4⁄ä˙,     Helvetica    (‡äAbout QuickDraw
  6278. (‡ 85
  6279. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6280. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6281.  
  6282.  
  6283.  
  6284.  
  6285.  
  6286. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  6287. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6288. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6289.  
  6290.  
  6291.  
  6292.  
  6293.  
  6294. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˝ˇ˛ˇ    ˛ˇˇ˛ˇ
  6295. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  6296. 4È4fl?òÄ
  6297. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6298. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6299.  
  6300.  
  6301.  
  6302.  
  6303.  
  6304. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˛˙ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ¸˛ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝ˇˇ˛
  6305. ˛ˇˇˇˇ
  6306. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜    ˇ˛ˇ˛ ˇˇ˛ˇˇ ˇˇ˛ˇˇ˚ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜    ˇˇ—ÚˇÆ°dONLNdˇˇ(@äDrawingˇˇˇˇˇˇ≠>(@5
  6307. °dONLNd\äh(eäUThis chapter shows how you can draw simple graphics and text inside of windows using °dONLNdUiäuΩ*    QuickDrawf†°dONLNd^iΩu9)3, the part of the Macintosh T= °dONLNd{i9u)|0oolbox that performs graphics operations on the °dONLNd´väÇù(äuser=¿°dONLNdØvûÇ¥)’s scr4@°dONLNdµv¥Ç»)een. :Ä°dONLNd∫v»Çü).All Macintosh applications use QuickDraw indir °dONLNdËvüÇ )◊ectly whenever they call °dONLNdÉäè©(åäother T{@°dONLNdÉ©è
  6308. )oolbox managers to cr@°dONLNdÉ èû)b eate and manage the basic graphià`°dONLNd=Éûè™)ìc u¿°dONLNd@É´è)ser interface elements °dONLNdWêäúı(ôä(such as windows, contrã °dONLNdnêıú˙)k:ols, and menus). Most applications also call QuickDraw dirÓ¿°dONLNd®ê˙ú(ô˙ectly °dONLNdÆù䩶(¶äto defi™°dONLNdµù¶©º)ne arä°dONLNd∫ùº©T) eas in a window and to draw appró°dONLNd⁄ùT©ì)òopriate graphi≥@°dONLNdËùì©û)?c em °dONLNdÎùü©Ú) lements in those arú °dONLNd˛ùÚ©)Seas. °dONLNd™ä∂§(≥äThe Vÿ °dONLNd™£∂·)Fenn Diagrammer application, for instance, calls QuickDraw to draw the °dONLNdN∑ä√Õ(¿äoverlapping cir+ °dONLNd]∑Œ√)Dcles, the too °dONLNdj∑√
  6309. )4l ie‡°dONLNdm∑
  6310. √L)cons, and the fi1@°dONLNd}∑M√\)CguråÄ°dONLNdÄ∑\√ )*e and mood selection icons. It also calls °dONLNd™ƒä–{(Õä4QuickDraw to draw all the text displayed in a window{‡°dONLNdfiƒ{–})Ò.°dONLNd‡÷ä‚t(flä3This chapter begins with a description of QuickDrawÄ°dONLNd÷t‚)Í$, its basic drawing model, and some °dONLNd7„äÔΔ(Ïäof the data strb‡°dONLNdF„«Ôfi)=ucturË¿°dONLNdK„fiÔó)'es QuickDraw uses. Then it shows how to,Zapf Dingbats°dONLNds˘äè(ˇän
  6311. °dONLNduˆñ¶) defir °dONLNdyˆßb)+ne and draw simple objects such as lines, r ¿°dONLNd§ˆbÆ)ªectangles, and cir!@°dONLNd∂ˆØø)Mcles°dONLNdª äè(än
  6312. °dONLNdΩñ¶) defir °dONLNd¡ß˘)ne complex graphi·@°dONLNd“˘)Rc oG°dONLNd’û)"bjects by combining simple objects°dONLNd¯ä$è(#än
  6313. °dONLNd˙ñ&—) outline and fi§†°dONLNd—&ˆ);    ll graphi3°dONLNd˜&)&c oò¿°dONLNd&) bjects°dONLNd/ä6è(5än
  6314. °dONLNd,ñ8¯) draw static (that is, noñ°dONLNd5,¯8)bne1°dONLNd7,8q) ditable) text in a window°dONLNdQ=äIπ(FäCFor a complete description of the drawing capabilities of QuickDraw<°dONLNdî=πI(Fπ, see the chapter °dONLNd¶JäVˇ(Sä“QuickDraw Drawing” in € °dONLNdΩJˇVk)uInside Macintosh: Imagingû‡°dONLNd÷JlV)m$. For a complete description of the °dONLNd˙Wäc(`ätext capabilities of QuickDraw Ä°dONLNdWcö)Ü, see the chapter “QuickDraw T‡°dONLNd6Wöcπ)äext” in Ò@°dONLNd>Wπc)Inside Macintosh: °dONLNdPdäpê(mäT°dONLNdQdèpõ)ext∑Ä°dONLNdTdõp¶) . TÌ@°dONLNdWd•pì)
  6315. 7o learn how to handle editable text, see the chapter “TÄ°dONLNdédìp≈)Ó extEdit” in V °dONLNdöd≈p)2Inside Macintosh: °dONLNd¨qä}ê(zäT°dONLNd≠qè}õ)ext∑Ä°dONLNd∞qõ}ù) .
  6316. ÑHü4ÖHü
  6317. ØH∑4∞H∑ ±H±
  6318. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd≤úHØŒ(™HAbout QuickDrawˇˇˇˇˇˇU˛(™5
  6319. °dONLNd¬¿äÃø(…ä    QuickDrawZ‡°dONLNdÀ¿¿Ã˚)6F allows you to draw many types of objects on the Macintosh display scrz °dONLNd¿˚Ã(…˚een. °dONLNdÕäŸÛ(÷äSome of these objects arR`°dONLNd.ÕÛŸ5)ie illustrated in Ø¿°dONLNd?Õ5ŸM)BFigurÇÄ°dONLNdDÕMŸa)e 5-1 °dONLNdIÕbŸd).
  6320. ˚H 4¸H "¸H]
  6321. ˇ·ˇ‚7^    °dONLNdKÒ严(˘ä
  6322. Figure 5-1°dONLNdVÒø))BSamples of QuickDraw’◊°dONLNdkÒ)¸M)] s abilities
  6323.  H†4 F Gò<@‘@‘ GL≈≈?…ˇ?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯ˇò<@Ä‘@Ä‘LGå?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯ˇò<Ä¿‘Ä¿‘åGÃ?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯?…ˇ¯…ˇ¯ˇ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈%!Ê鯿Ň `‡CFÁ$"ÇQà˛Ç `Å    0Ä¡Ê&"BÑYÄ»VÑ&…ñB8;¬Fƒê¥‘îpP£áòéË&"ÇHV·∂ì
  6324.     VâEHEM%ô,êêP÷ç1RË&"ÇPb!$¢â$âJ Eäë%†@ëâ"àË&"ÑPh¢%$aS)åÖ$ä!"e† ˘
  6325. #Ë&"à`â$t"VIñ—êöE“I¢"Δ¡!    iìDdË&"p@?Éπ§8 â…(é‡bÜùâ|!4Å√<ès∏˯D˙ ‹¯D˙  ‡‹¯8˙p⁄≈≈≈pÉ¡ÄÄ¿`› c¸ ⁄Kä ec[úuÄ!HZIë$ívfiM'6P•$ñi"ñÄA»¨À+$%í⁄lfiM$†©%i"DÄAIHJQh$¥öHfiâ
  6326. L¿≤MJB%BQêRah(L¥íHfiãLW"Y([M)ÄDb0dâ∞HXŸ0fi“w$·Æ&Œí1…8A–Gq!à&ë‰pfiı¸¸àfiÈàfiÈpfi≈≈≈|˝¿Ñ˛    `!èÄ`fiD˚˛@bQ @fiCF…àfiC80[ú$ôD@Ç sÅD%ćò<¿‘¿‘ÃG qâV$P%$d∂ 
  6327. C§Ü R@‡ë    $®        @    Dê%-$î@Ñ¢î¢@‡Ç)0Ä≈¯F-)ò @à¡    òƒ@‡ÇIƒ&& H [H6J‚Äà i
  6328. „欠   …8;πΔ0 ¢p$tú2œNúÍflıĢ˛flıĢ˛flˆ¿˘8˛fl≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈x˛;Ä ”$˛˛`    ’DB    ê$)gÄ£xûànvÄ◊H≠∂ê8I©°ê≥îã÷qI$P(Q¢!¢)ä÷Aâ$P(ë$Ú !$1     ÷Ç&`Dπi0"DE-4÷¡Œ8@Ó“NFz |t8»ƒ÷ ˛D@˛@œ˛DÄÀ˛; ≈≈≈:¸Ä”0D˛@“QeêÄÑÈ5ä·hX¿‘PíQA“RB∞i ‘êíRÅíTE j”˘c$dÜ@J”    e¥Ai5Æ»¿Z@‘>ä#Ä·â*4áAëà‘˝— ˝Œ ˝Œ≈≈≈: ¸¿`‘0` ê‘PSä$EËfivÄA‘Q¥M($I%1$ãÇ‘ë$QP$J!$äB‘˙hQ`Hí
  6329. Bi B ‘
  6330. πñàL◊KBÕ4B@‘=&pËörA8ƒâÄ‘≈≈≈ò<@‘@‘ GL≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@Ä‘@Ä‘LGå≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<Äî‘Äî‘åG†≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@‘@‘ GL≈≈»30ˇ
  6331. Ù÷ …ˇÙÛÄÛÄÙˇ
  6332. Ù÷ˇÙÛÄÛÄÙ …ˇ!|˜. ˘¿ˆ‡Äˆ  ˆÄ) ˘ ˆêĈˇ&´Ä¯≤xÈ3p˘Å&o‹yįÄñ≠Õ¿¯ˇ$—˜Je.|†˘œîrõ¿˜È™S ¯ˇ$˜ e)D ˘Å(Ö≤ö˜Äâ™S ¯$ Èʱ‰È;∞˘'vÚy¿˜ÜëÕ ¯ˇÙÔı@˜ ‚‡¸ˇ¸#ʡÙÛĸ@˝˛ÄÙˇÙÌ@˝Ù˛ˇÙÛĸ@˝˛Ä¯˛ ‡@˝ÙġÙÌ@˝ÙÄ ‡@˝Ù0¿ˇÙÛĸ@˝˛Ä¯``ˇÙÌ@˝Ù¿0ˇ#Ù˜ˇ¿Ä¸@˝˛Ä˘Ä Í:"p˙@˝ı ˇÙ˜q˙@˝ı Íb"(˙@˝ı ˇ*˛¿˚˜Hààĸ@˝˛Ä˘ġ"˛ `˘˜DDH˙@˝ı0¿ˇ+˛ œˇo¸˜Hààĸ@˝˛Ä˘``"  ÔˇˇÒb"(˙@˝ı@0ˇ)˛ ¸>¸˜Q˛@˝ı¿& ÕÏfl∂Òb"(˝"" @˝ˆÄˇ$Ù˜Hààĸ@˝˛Ä˙˛ ˇÙ˜DDH˙@˝ˆ˛ˇ&Ù˜
  6333. HààÄÄ@˝˛Ä˙ ˛ Íb"(˙@˝ˆ˛Äˇ"Ù˜Q˛@˝ˆ˛$ Ú˚" b"(˚ @˝˙˝"˛ˇ$Ù˜Hààĸ@˝˛Ä˙ ˛ˇ%Ù˚@DDH˙@˝˙˛D@˛ˇ*Ù¯ HààÄÄ@˝˛Ä˛˛àIJ Íb"(˙@˝ˆ˛ˇ/˛Ä˚¯Q˛@˝˚˛˛* Ĉ˙b"(˚ @˝˚˛"˛ˇ,˛È:ñ†¸˜Hààĸ@˝˛Ä˙˛ˇ.˛´À:†¸˙DDH˙@˝˚˛D˛ˇ3˛    2ç#¿¸¯ HààÄÄ@˝˛IJà˛# #â2ÄÒb"(˙@˝ˆ˛ˇ'Ù¯Q˛@˝˚˛˛ % Ú˙b"(˚ @˝˚˛" ˛ˇ$Ù˜Hààĸ@˝˛Ä˙˛ˇ%Ù˙DDH˙@˝˚˛D@ġ*Ù¯ HààÄÄ@˝˛Ä˝à    Ä Íb"(˙@˝ıġ'Ù¯Q˛@˝˚˛
  6334. Ä$ Ú˙b"(˚ @˝˚˝"¿ˇ#Ù˜Hààĸ@˝˛Ä˘@ˇ$Ù˙DDH˙@˝˚˝D@@0ˇ*Ù¯ HààÄÄ@˝˛Ä˝à    Ä@  Íb"(˙@˝ı@ ˇ&Ù¯Q˛@˝˚˝    ` ò<@Ä‘@Ä‘LGå' Ú˚ r"0˝"" @˝˚˝"  `ˇ!Ù˜ˇ‡Ä¸¸ˇ˛Ä˘?ˇˇ¿ˇÙ˛˚D@‡ˇÙÛÄÛÄÙ …ˇ
  6335. Ù÷ … …ûˇ
  6336. Ù÷ˇÙÛÄÛÄÙ …ˇ
  6337. Ù÷ …ˇ$ˆ ˆÄ¿ıćˆˇ ˆ†ˆ Ùêıˇ%Δ˜¨w0˜ljıÄñ<Œ˜ %/ˆæôx˜4ÙÔM)˜ˇ"%(˜Pô@¸˝*‘ÙòM)˜  ='ˆNw8¸¸ƒtÙó<…˜ˇÙˆÄÛĈˇÙ˚DÏpˆˇÙ¯àIJÄÛÄÙ …ˇÙ˘‡ Ï"" ·ˇÙÛÄÛÄÙˇÙ˘DD@ı@ÔˇÙ˘ààIJĢÃL˝ÄÙ fiÔˇÙ˙˛ˆ@ Ì˛" ˆ0Ù"ˇÙÛʲÄÙˇÙ˙˛D@ˆ@ÙD@ˇ Ù˚˝à˛Ä˙Ä˚įààÄ …ˇÙ˚˝˜Ò Ó˝" ˘ Ò"" ˇÙÛÄÛÄÙˇ ˛?˘ˇ˚˛D@˜Ò˛Dˇ&Ù˚˛àIJIJààÄ˙Ģ˛à …ˇ Ù˚˝˜˝¸‡˝˝" Ó˝" ˚"" ˝¸8˝˝"ˇÙÛĈÄ0¯ˇÙ˚˛D@˜˜ IJ˝Dˇ-Ù¸Ã˛àIJÄààĸ Ä`¿˝àÄ 0Ú ˜@`˘ˇÙ˝U˝Î@ ˝ 0˝"˙˛"  ˜@0˚"ˇÙ˝¿ ˘ÄˆÄ`˘ˇÙ˛˛Dˆ˜ ˚D@ˇ2˛ ˘Ã˛ ˛àIJIJàĸ    Ä  ˚àÄ ¯3¸Â0˘ˇ(˛˘U˛˛ˆ˝¸˙' ¯3¸0˝"˙˛" ˝¸˚"ˇ!Ù˛@ ˘Ä˚˙Ģˇ Ù˛@DD@Ò¸˚D@ˇ)Ù˛¿ ˛à˝IJàÄ ˙Ä˚àÄ ÚÔ˝ ¸0˘ˇÙ˛@¸ ˚# Ú˛˛"˘˛"˛˚` ˚"ˇÙ¸ ˘Ä˙Ä˚Ä@˘ˇ"Ù    DDÒ˚¿˛D@Dˇ0Ù     àภÄàà¿˛ÄÄ0˛àÄàò<Ä¿‘Ä¿‘åGàÚÓ ¯Ä`˘ˇ"ÙÛ˚¿@˛˝' Ú˛""¯"  ˚@¿"˝ˇ"Ù ˘Ä˘ÄIJÄp¯ˇ ÙUUTÒT˙¯˛@˝ˇÙ ˛Ã˘Ä¯Ä˝ÄÙ …ˇ
  6338. Ù÷ …ˇÙÛÄÛÄÙˇ
  6339. Ù÷ …û…30ˇ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈%!Ê鯿Ň `‡CFÁ$"ÇQà˛Ç `Å    0Ä¡Ê&"BÑYÄ»VÑ&…ñB8;¬Fƒê¥‘îpP£áòéË&"ÇHV·∂ì
  6340.     VâEHEM%ô,êêP÷ç1RË&"ÇPb!$¢â$âJ Eäë%†@ëâ"àË&"ÑPh¢%$aS)åÖ$ä!"e† ˘
  6341. #Ë&"à`â$t"VIñ—êöE“I¢"Δ¡!    iìDdË&"p@?Éπ§8 â…(é‡bÜùâ|!4Å√<ès∏˯D˙ ‹¯D˙  ‡‹¯8˙p⁄≈≈≈pÉ¡ÄÄ¿`› c¸ ⁄Kä ec[úuÄ!HZIë$ívfiM'6P•$ñi"ñÄA»¨À+$%í⁄lfiM$†©%i"DÄAIHJQh$¥öHfiâ
  6342. L¿≤MJB%BQêRah(L¥íHfiãLW"Y([M)ÄDb0dâ∞HXŸ0fi“w$·Æ&Œí1…8A–Gq!à&ë‰pfiı¸¸àfiÈàfiÈpfi≈≈≈|˝¿Ñ˛    `!èÄ`fiD˚˛@bQ @fiCF…àfiC80[ú$ôD@Ç sÅD%ćò<¿‘¿‘ÃG qâV$P%$d∂ 
  6343. C§Ü R@‡ë    $®        @    Dê%-$î@Ñ¢î¢@‡Ç)0Ä≈¯F-)ò @à¡    òƒ@‡ÇIƒ&& H [H6J‚Äà i
  6344. „欠   …8;πΔ0 ¢p$tú2œNúÍflıĢ˛flıĢ˛flˆ¿˘8˛fl≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈x˛;Ä ”$˛˛`    ’DB    ê$)gÄ£xûànvÄ◊H≠∂ê8I©°ê≥îã÷qI$P(Q¢!¢)ä÷Aâ$P(ë$Ú !$1     ÷Ç&`Dπi0"DE-4÷¡Œ8@Ó“NFz |t8»ƒ÷ ˛D@˛@œ˛DÄÀ˛; ≈≈≈:¸Ä”0D˛@“QeêÄÑÈ5ä·hX¿‘PíQA“RB∞i ‘êíRÅíTE j”˘c$dÜ@J”    e¥Ai5Æ»¿Z@‘>ä#Ä·â*4áAëà‘˝— ˝Œ ˝Œ≈≈≈: ¸¿`‘0` ê‘PSä$EËfivÄA‘Q¥M($I%1$ãÇ‘ë$QP$J!$äB‘˙hQ`Hí
  6345. Bi B ‘
  6346. πñàL◊KBÕ4B@‘=&pËörA8ƒâÄ‘≈≈≈ò<@‘@‘ GL≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<@Ä‘@Ä‘LGå≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ò<Äî‘Äî‘åG†≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ˇ+ê@ˇ ˇˇˇˇ@
  6347. ˇ·ˇ‚7^
  6348. 4*\¯, Palatino&e.3+l"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@lDrawing4⁄*˙¯
  6349. (‡*86    )BAbout QuickDraw4^*¿¯
  6350. °dONLNd\lh:(el,As you can see, you can use QuickDraw to dradONLNd,\:hB)Œw,Zapf Dingbats°dONLNd.rlyq(xln
  6351. °dONLNd0ox{ì) Ctext characters and strings in a number of fonts, sizes, and styles°dONLNdtÑlãq(äln
  6352. °dONLNdvÅxçE) 0straight lines of any length, width, and pattern°dONLNdßñlùq(úln
  6353. °dONLNd©ìxü ) 'a variety of simple shapes, including rÌÄ°dONLNd–ì üQ)® ectangles, r~@°dONLNd‹ìRüi)2oundË°dONLNd‡ìiüs)edÕ`°dONLNd‚ìtüö)     -corner rÃ@°dONLNdÎìöü”)&ectangles, cirµ†°dONLNd˘ì”üË)9cles, °dONLNdˇüx´¢(®x    and ovals°dONLNd    ¥lªq(∫ln
  6354. °dONLNd ±xΩ°) polygons°dONLNdΔlÕq(Ãln
  6355. °dONLNd√xœÄ) arE°dONLNd√Åœ.)    'cs of ovals, or wedge-shaped sections fiˆ°dONLNd@√.œ)≠lled with a pattern°dONLNdTÿlflq(filn
  6356. °dONLNdV’x·L) 1any other arbitrary shape or collection of shapes°dONLNdàÍlÒq(ln
  6357. °dONLNdäÁxÛF) 0bit images, such as icons, cursors, and patterns°dONLNdª¯lı(lSThis section explains the basic mathematical model employed by QuickDraw and shows °dONLNdl∏*how you can defi›`°dONLNd∏O)L%ne several of these sorts of objects.
  6358. 6*=¯47*=¯ 8l8¯
  6359. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdD'l6í(2lPointsˇˇˇˇˇˇ€r(25
  6360. °dONLNdK=lI√(FlQuickDraw measurx`°dONLNd[=√I~)W)es location and movement in terms of coorI†°dONLNdÑ=IŸ)ºdinates on a very larN°dONLNdô=ŸIÂ)Zge °dONLNdúJlVy(Sl=plane. The plane is a two-dimensional grid, with integer coor!°dONLNdŸJzV…(Szdinates ranging frÙ`°dONLNdÎJ»Vÿ)Nom °dONLNdÓWlc¸(`l#–32767 to 32767, as illustrated in †°dONLNdW˝c)ëFigur€`°dONLNdWc()e 5-2x‡°dONLNdW)c+).
  6361. Ö*ñ¯4Ü*ñ¯"Ü*]
  6362. ˇ·ˇ‚7^    °dONLNd{lÜñ(Él
  6363. Figure 5-2°dONLNd({ÆÜ)BThe coordinate plane
  6364. °dONLNd=hltÑ(qlBThe intersection of a horizontal and a vertical grid line marks a ꇰdONLNdhÑtú(qÑpointˇ@°dONLNdÑhútœ)  on the coor√¿°dONLNdêh–tÓ)4dinate °dONLNdóulÅ–(~lplane. Because all coorY‡°dONLNdÆu–Å˚)d
  6365. dinates arΩ`°dONLNd∏u˚Åä)+"e limited to simple integers, therë¿°dONLNd⁄uäÅö)èe ar†`°dONLNdfiuöÅ›)e 4,294,836,224 °dONLNdÓÇlé(ãl%unique points in the QuickDraw plane.
  6366. ñeQ˜4ï_ñ`ò4@ó@óñ`÷˜ÕÕ    ΡÊ    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Êò4@Äó@Äó÷`˜    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Êò4Ä¿óÄ¿ó`V˜    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯Ê    Ρ¯ÊÕÕÕÕÕÕÕò4¿ó¿óV`ñ˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@ó@óñ`÷˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@Äó@Äó÷`˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4Ä¿óÄ¿ó`V˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿ó¿óV`ñ˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@ó@óñ`÷˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@Aó@Aó÷`◊˜Õò4@ó@óñ`÷˜ÕÕ    Î30Ê    ÎÊÈÊ    ÎÊ    ÎÊ    ÎÊÈÊ    ÎÊÈÊ    ÎÊ    ÎÊ    ÎÊÈʘĘÊ ı¿˜Ê˜`˜Ê˜ p˜Ê˜∏˜Ê ı ˜Ê˜ ˜Ê ı ˜Ê˜ ˜Ê˜`˜Ê˜†˜Ê ı ˜Ê˜‡˜ÊÈÊ    ÎÊ    ÎÊ    ÎÊÈÊ    ÎÊÈÊ    ÎÊ    ÎÊ    ÎÊÈÊ˝˚U’¸UT˝Ê˚    Ä¸Ê¸ÄÄĘʈÑAA˝Ê¸ ÄÄÑ@@˝Ê˚   Ä˜Ê˝˚U’¸UT˝Ê˚    Ä¸Ê¸ÄÄĘʈÑAA˝Ê¸ ÄÄÑ@@˝Ê˚   Ä˜Ê˝˚U’¸UT˝Ê˚    Ä¸Ê¸ÄÄĘʈÑAA˝Ê¸ ÄÄÑ@@˝Ê˚   Ä˜Ê˝˚U’¸UT˝Ê˚    Ä¸Ê¸ÄÄĘʈÑAA˝Ê¸ ÄÄÑ@@˝Ê˚   Ä˜Ê˝˚U’¸UT˝Êò4@Äó@Äó÷`˜˚    Ä¸Ê¸ÄÄĘʈÑAA˝Ê¸ ÄÄÑ@@˝Ê˚   Ä˜Ê˝˚U’¸UT˝Ê˚    Ä¸Ê¸ÄÄĘʈÑAA˝Ê¸ ÄÄÑ@@˝Ê˚   Ä˜Ê˝˚U’¸UT˝Ê˚    Ä¸Ê¸ÄÄĘʈÑAA˝Ê¸ ÄÄÑ@@˝Ê˚   Ä˜Ê˝˚U’¸UT˝Ê˚    Ä¸Ê¸ÄÄĘʈÄAA˝Ê¸ ÄÄÄ@@˝Ê˚   Ä˜Ê˝˚UĸUT˝Ê˚    Ä¸Ê˛ÄÄĢ`Ê˛˘ ÄAApÊäÄÄÄ@@ÿÊ˛
  6367. 0   Ä˙@ Êq?ıˇ¸QÊ˛2"   Äb,Ê˛ÄÄÄ˙@ʯ ÑAAÊ˛ÄÄÑ@@`Ê˚   Ä˜Ê˝˚U’¸UT˝Ê˚    Ä¸Ê¸ÄÄĘʈÑAA˝Ê¸ ÄÄÑ@@˝Ê˚   Ä˜Ê˝˚U’¸UT˝Ê˚    Ä¸Ê¸ÄÄĘʈÑAA˝Ê¸ ÄÄÑ@@˝Ê˚   Ä˜Ê˝˚U’¸UT˝Ê˚    Ä¸Ê¸ÄÄĘʈÑAA˝Ê¸ ÄÄÑ@@˝Ê˚   Ä˜Ê˝˚U’¸UT˝Ê˚    Ä¸Ê¸ÄÄĘʈÑAA˝Ê¸ ÄÄÑ@@˝Ê˚   Ä˜Ê˝˚U’¸UT˝Ê˚    Ä¸Ê¸ÄÄĘʈÑAA˝Ê¸ ÄÄÑ@@˝Êò4Ä¿óÄ¿ó`V˜˚   Ä˜Ê˝˚U’¸UT˝Ê˚    Ä¸Ê¸ÄÄĘʈÑAA˝Ê¸ ÄÄÑ@@˝Ê˚   Ä˜Ê˝˚U’¸UT˝Ê˚    Ä¸Ê¸ÄÄĘʈÑAA˝Ê¸ ÄÄÑ@@˝Ê˚   Ä˜Ê˝˚U’¸UT˝Ê˚    Ä¸Ê¸ÄÄĘʈÑAA˝Ê¸ ÄÄÑ@@˝Ê˚   Ä˜Ê˝˚U’¸UT˝ÊÈÊ    ÎÊ    ÎÊ    ÎÊÈÊ    ÎÊÈÊ    ÎÊ    ÎÊ    ÎÊÈʘ‡˜Ê ı ˜Ê˜ ˜Ê˜`˜Ê˜†˜Ê ı ˜Ê˜ ˜Ê ı ˜Ê˜8˜Ê˜ p˜Ê˜‡˜Ê ı¿˜Ê˜ĘÊÈÊ    ÎÊ    ÎÊ    ÎÊÈÊ    ÎÊÈÊ    ÎÊ    ÎÊ    ÎÊÈÊ    ÎUPÊ    Î30ÊÕÕÕÕÕÕÕò4¿ó¿óV`ñ˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@ó@óñ`÷˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@Äó@Äó÷`˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4Ä¿óÄ¿ó`V˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿ó¿óV`ñ˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@ó@óñ`÷˜ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@Aó@Aó÷`◊˜ÕˇL~@ˇ ˇˇˇˇ@
  6368. ˇ·ˇ‚7^
  6369. 4H\, Palatino&e.3+ä"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@äDrawing4⁄ä˙(‡äAbout QuickDraw
  6370. (‡ 87
  6371. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6372. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6373.  
  6374.  
  6375.  
  6376.  
  6377.  
  6378. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  6379. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6380. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6381.  
  6382.  
  6383.  
  6384.  
  6385.  
  6386. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˝ˇ˛ˇ    ˛ˇˇ˛ˇ
  6387. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  6388. 4È4fl?òÄ
  6389. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6390. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6391.  
  6392.  
  6393.  
  6394.  
  6395.  
  6396. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˛˙ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ¸˛ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝ˇˇ˛
  6397. ˛ˇˇˇˇ
  6398. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜    ˇ˛ˇ˛ ˇˇ˛ˇˇ ˇˇ˛ˇˇ˚ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿.°dONLNd\ähë(eäYï°dONLNd\êhæ) ou can storg`°dONLNd \æhÈ).
  6399. e the coor9¿°dONLNd\Èh¬)+2dinates of a point into a Pascal variable of type ,
  6400. Courier9¿°dONLNdH\¬h‡)ŸPoint9¿°dONLNdM\‡h˜), defi9¿°dONLNdS\˜h)ned by .°dONLNdZiäu◊(räQuickDraw as a r”†°dONLNdji◊uÈ)MecorH°dONLNdniÍu7)d of two integers:.°dONLNdÅÄäå¢(âäTYPE°dONLNdáéúö+VHSelect = (v,h);°dONLNdõ™ú∂Δ*Point =°dONLNd§∏úƒ¿*RECORD°dONLNd≠ΔÆ“+CASE INTEGER OF°dONLNd¿‘¿‡Ã+0:°dONLNd√‘“‡‰)(v:°dONLNd»‘ˆ‡&)$Integer;°dONLNd’‘P‡Œ)Z{vertical coordinate}°dONLNdÔ‚“Ó‰(Γ h:°dONLNdÙ‚ˆÓ,)$    Integer);°dONLNd‚PÓ⁄)Z{horizontal coordinate}°dONLNd¿¸Ã(˘¿1:°dONLNd “¸Í)(vh:°dONLNd&ˆ¸û)$ARRAY[VHSelect] OF Integer);°dONLNdD˛ú
  6401. ¥(úEND;.°dONLNdIä"ı(äThe variant part of this rO`°dONLNdcˆ")lecor√¿°dONLNdg"fi)2d lets you access the vertical and horizontal coor§‡°dONLNdôfi")÷dinates of a °dONLNd¶#ä/5(,ä(point either individually or as an array °dONLNdŒ#5/≈)´!. This book will always use the fi@‡°dONLNd#≈/Û)ê rst way of °dONLNd˚0ä<›(9äspecifying the coor
  6402. ‡°dONLNd0fi<ì)T+dinates. So, for example, the vertical coorxÄ°dONLNd90ì<Û)µdinate of the variable .°dONLNdP=äI¥(FämyPoint°dONLNdW=¥IÙ)* is accessed as °dONLNdg=ÙI*)@    myPoint.vd@°dONLNdp=)I,)5.
  6403. nHu4oHu päp
  6404. ˇ·ˇ‚7^ˇˇ‹..ˇ◊°dONLNdr_änŒ(jä
  6405. Rectanglesˇˇˇˇˇˇ€r(j5
  6406. °dONLNd}uäÅÙ(~äAny two points can defiõ °dONLNdîuÙÅ
  6407. )jne th…‡°dONLNdôu
  6408. Å,)e upper≠Ä°dONLNd†u,Å/)"-`°dONLNd°u0ÅK)left anõ°dONLNd®uKÅm)d lowerz@°dONLNdØumÅp)"-Œ °dONLNd∞upÅΩ)right corners of a ∏`°dONLNd√uæÅÁ)N    rectangle^‡°dONLNdÃuËÅ)* on the °dONLNd‘Çäéù(ãäcoor†@°dONLNdÿÇùé)dinate plane, as shown in ™@°dONLNdÚÇé()sFigur}°dONLNd˜Ç(é<)e 5-3Ä°dONLNd¸Ç=é?).
  6409. ∞H¡4±H¡"±H]
  6410. ˇ·ˇ‚7^    °dONLNd˛¶ä±¥(Æä
  6411. Figure 5-3°dONLNd    ¶Ã±“)BA0°dONLNd
  6412. ¶“±˘)
  6413.  rectangle
  6414. ¡âì4¿à¡âò2@ã@ã¡âœœ?ÊˇÏ?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ïò2@Äã@ÄãâA?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ïò2Ä¿ãÄ¿ãAâÅ?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ïò2¿ã¿ãÅâ¡?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯Ï?Êˇ¯ÏÊˇ¯Ïœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@ã@ã¡âœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@Äã@ÄãâAœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2Ä¿ãÄ¿ãAâÅœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2¿ã¿ãÅâ¡œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@ã@ã¡âœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@Aã@Aãâœò2@ã@ã¡âœœÂ30ÏÂÏ ÊÏÂÏÂÏÂÏ ÊÏÂÏ ÊÏÂÏÂÏÂÏ ÊÏÂÏ ÊÏÂÏÂÏÂÏ ÊÏÂÏ  ˘@ÔÏ
  6415. ¯@ÔÏ
  6416. ¯@ÔÏ
  6417. ¯@ÔÏ  ˘@ÔÏ
  6418. ¯@ÔÏ  ˘@ÔÏ
  6419. ¯@ÔÏ
  6420. ¯@ÔÏ
  6421. ¯@ÔÏ ˛˝"bı" ¸Ï˝AA@@¸Ï ˝ ˚Ϙ˝Ä˛Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛" ¸Ï˝AA@@¸Ï ˝ ˚Ϙ˝Ä˛Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛" ¸Ï˝AA@@¸Ï ˝ ˚Ϙ˝Ä˛Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛" ¸Ï˝AA@@¸Ï ˝ ˚Ϙ˝Ä˛Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛" ¸Ï˝AA@@¸Ï ˝ ˚Ϙ˝Ä˛Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛" ¸Ï˝AA@@¸Ïò2@Äã@ÄãâA ˝ ˚Ϙ˝Ä˛Ä˚Ï˝AÒ@@¸Ï˝@@Ä@ĸϠ?˙˛"#¯ˇ‚˛" ¸Ï˝AÒ@@¸Ï ˝Ò B˚ϯ@˝Ä@Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛˝"b˘"b˛" ¸Ï˝AA@@¸Ï ˝A B˚ϯ@˝Ä@Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛˝"b˘"b˛" ¸Ï˝AA@@¸Ï ˝A B˚ϯ@˝Ä@Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛˝"b˘"b˛" ¸Ï˝AA@@¸Ï ˝A B˚ϯ@˝Ä@Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛˝"b˘"b˛" ¸Ï˝AA@@¸Ï ˝A B˚ϯ@˝Ä@Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛˝"b˘"b˛" ¸Ï˝AA@@¸Ï ˝A B˚ϯ@˝Ä@Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛˝"b˘"b˛" ¸Ï˝AA@@¸Ï ˝A B˚ϯ@˝Ä@Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛˝"b˘"b˛" ¸Ï˝AA@@¸Ï ˝A B˚ϯ@˝Ä@Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛˝"b˘"b˛" ¸Ï˝AA@@¸Ï ˝A B˚ϯ@˝Ä@Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛˝"b˘"b˛" ¸Ï˝AA@@¸Ï ˝A B˚ϯ@˝Ä@Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸÏò2Ä¿ãÄ¿ãAâÅ ˛˝"b˘"b˛" ¸Ï˝AA@@¸Ï ˝A B˚ϯ@˝Ä@Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛˝"b˘"b˛" ¸Ï˝AA@@¸Ï ˝A B˚ϯ@˝Ä@Ä˚Ï˝AA@¸Ï˝@@@ÄĸϠ˛˝"˘ˇÚ˛"'ˇ˝Ï˝AA@¸Ï ˝!Ú˚Ϙ˝Ä˛Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛" ¸Ï˝AA@@¸Ï ˝ ˚Ϙ˝Ä˛Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛" ¸Ï˝AA@@¸Ï ˝ ˚Ϙ˝Ä˛Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛" ¸Ï˝AA@@¸Ï ˝ ˚Ϙ˝Ä˛Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛" ¸Ï˝AA@@¸Ï ˝ ˚Ϙ˝Ä˛Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛" ¸Ï˝AA@@¸Ï ˝ ˚Ϙ˝Ä˛Ä˚Ï˝AA@@¸Ï˝@@@Ä@ĸϠ˛Ù"b˛" ¸Ï
  6422. Ô@¯Ï  @¯Ï
  6423. Ô@¯Ï
  6424. Ô@¯Ï
  6425. Ô@¯Ï  @¯Ï
  6426. Ô@¯Ï  @¯Ï
  6427. Ô@¯Ï
  6428. Ô@¯ÏÂÏ ÊÏÂÏ ÊÏÂÏò2¿ã¿ãÅâ¡ÂÏÂÏ ÊÏÂÏ ÊÏÂÏÂÏÂÏ ÊÏÂÏ ÊÏÂÏÊUPÏ ÊûÏœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@ã@ã¡âœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@Äã@ÄãâAœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2Ä¿ãÄ¿ãAâÅœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2¿ã¿ãÅâ¡œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@ã@ã¡âœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@Aã@Aãâœˇ6l@ˇ ˇˇˇˇ@
  6429. ˇ·ˇ‚7^
  6430. 4*\¯, Palatino&e.3+l"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@lDrawing4⁄*˙¯
  6431. (‡*88    )BAbout QuickDraw4^*¿¯
  6432. .°dONLNd\lhs(elYï°dONLNd\rh¬)ou can describe a rg`°dONLNd\¬h/)Pectangle using a data strS`°dONLNd-\/hE)muctur%¿°dONLNd2\Ehn)
  6433. e of type ,
  6434. Courier%¿°dONLNd<\nhÜ))Rect%¿°dONLNd@\ÜhÓ), which consists of four .°dONLNdYiluœ(rlintegers or two points..°dONLNdqÄlåÆ* TYPE Rect =°dONLNd~é~ö¢+RECORD°dONLNdáúê®Í+CASE INTEGER OF°dONLNdö™¢∂Æ+0:°dONLNdù™¥∂“)(top:°dONLNd¶™¸∂,)HInteger;°dONLNd≥™V∂∂)Z{top coordinate}°dONLNd»∏¥ƒÿ(¡¥ left:°dONLNd“∏¸ƒ )HIntege°dONLNdÿ∏ ƒ,)$r;°dONLNdfl∏Vƒº)6{left coordinate}°dONLNdıΔ¥“‰(œ¥ bottom:°dONLNdΔ¸“ )HIntege°dONLNdΔ “,)$r;°dONLNdΔV“»)6{bottom coordinate}°dONLNd&‘¥‡fi(›¥ right:°dONLNd1‘¸‡2)H    Integer);°dONLNd?‘V‡¬)Z{right coordinate}°dONLNdU‚¢ÓÆ(΢1:°dONLNdX‚¥ÓÍ)    (topLeft:°dONLNde‚¸Ó )HPoint;°dONLNdp‚VÓÄ)Z{upper-°dONLNdw‚ÄÓ¬)* left point}°dONLNdá¥¸(˘¥
  6435.  botRight:°dONLNdï¸¸&)HPoint);°dONLNd°V¸Ä)Z{lower-°dONLNd®ĸ»)* right point}°dONLNd∂˛~
  6436. ñ(~END;ˇˇå‰°dONLNdªl"∑(lOnce again, the r˘ °dONLNdÃ∑"…)KecorÀl°dONLNd–…"†)2d variant allows you to access a variable of type ˇ˛¶¨LT°dONLNd°"π)ÿRectˇˇå‰LT°dONLNdπ"¯) either as four .°dONLNd#l/≠(,lboundary coorì`°dONLNd##≠/÷)ADdinates or as two diagonally opposite corner points. This book will °dONLNdg0l<µ(9lalways use the fi`°dONLNdx0∂< )Jrst way of specifying a r˜ °dONLNdë0<Δ)i'ectangle. So, for example, the top coor© °dONLNd∏0«<)®
  6437. dinate of .°dONLNd¬=lI®(Flthe variable °dONLNdœ=®IÃ)<myRect°dONLNd’=ÃI )$ is accessed as °dONLNdÂ= IH)@
  6438. myRect.top°dONLNdÔ=HIM)<. 
  6439. W*e¯4X*e¯    .°dONLNdÚVla(^lNote
  6440. ˇ·ˇ‚7^
  6441. °dONLNd˜cloª*If the bottom coor{`°dONLNd    cªo)Odinate of a rk@°dONLNdcoù)5*ectangle is less than or equal to the top °dONLNd@ol{(xlcoor†@°dONLNdDo{)dinate, or if the right coor°†°dONLNd`o{î)q)dinate is less than or equal to the left °dONLNdâ{lá(Ñlcoor†@°dONLNdç{á¥)dinate, the r§ °dONLNdö{¥áÎ)5ectangle is tr_†°dONLNd®{ÏáB)8eated as an empty rdONLNdª{Báû)Vectangle (that is, one °dONLNd“álì®(êlthat has no arp`°dONLNd‡á®ì∑)<ea).,Zapf Dingbats‡°dONLNdÌäΩí¬)u
  6442. °dONLNdÔòl§s(°lA∫†°dONLNdòs§u) :†°dONLNdÒòv§å)pixel˛ °dONLNdˆòå§) is a physical dot on the scrÓ@°dONLNdò§:)w een and corr›`°dONLNdò:§w)7esponds to a rdž°dONLNd-òx§)>ectangle in the QuickDraw °dONLNdG•l±(Ælcoor†@°dONLNdK•±)$dinate plane that has sides one coor‰@°dONLNdo•±ä)ùdinate long, as shown in ' °dONLNdà•ã±£)oFigur˘‡°dONLNdç•¢±∂)e 5-4ó`°dONLNdí•∑±“). (This¿°dONLNdô•”±’),Ç¿°dONLNdö•’±‚) of °dONLNdû≤læà(ªlcoursef °dONLNd§≤âæã),Ê °dONLNd•≤ãæ¯) is the smallest possible rl@°dONLNd¿≤˘æ#)n
  6443. ectangle.)
  6444. ‡*Ò¯4·*Ò¯"·*]
  6445. ˇ·ˇ‚7^    °dONLNdÀ÷l·ñ(fil
  6446. Figure 5-4°dONLNd÷÷Æ·)BPixels and rectangles
  6447. Òg•ˆ4dÒeò4@ë@ëÒe1ˆÕÕÏˇ¯‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰ò4@Äë@Äë1eqˆÏˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰ò4Ä¿ëÄ¿ëqe±ˆÏˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰Ïˇ¸‰    Ìˇ¸‰ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿ë¿ë±eÒˆÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕpÛ˛¿¸ ÊàH§˛ H¸`ÊÑÑ˝pà@ÊÑÑ√;Z
  6448. êˆDp2∏◊áB8ÁÑàF—Lh·â§êR jQ"öMHÁ—íàp    øÅ    »@åt%é Á!$    d∞ÄZ âÑ‚uå–êÁ√‡ xÁ–p‡ÉÂ…¿vs!©é‡Á˝Û"Â˝Û"Â
  6449. ˘‡ÛÂÕ&¿ É˛    √‡ÿ0A¿x˛8˛0!ÄΔ˝˛    B @B $˛DÏ% ˛    ÇÇÑ B˛ÑÔ($<s(ÅJ4«Ó8ˆÅ s¬ÉÇü7<à-ñB—π!·4fi7<pÚ($ñ”ARI,§E:FíâMç2hîà%2TBbI!ñô$hîêÚ($(EÅdä    DÑí'!
  6450. ë"P®àJ$ÑDKA    $P®@Ú($-)|Dûshäd('◊Ñ7Ãë-íÃÍàÑÌÅ("xë- Ú($IŒ≥É\iûHs§E«‰ãÀtÓIs%ÉI‚«!®ÓI¿Úı@¯ ˚Ï Î ¿˚Ï„ÏÕ@˸⁄¿0¸⁄@ ˛Ä⁄Cœ!¥œ5ƒ–    „€A$¶Ñ[Dîö`§Ä‹‚(«RH®ú@H€ò4@ë@ëÒe1ˆ"Ihh§…K ÄiÄ‹ ıñGá$ñ}Ñ:F‹˝Ÿ ˝÷ 8˝8÷Õ    ‡¿$◊ê˛Äl◊0˛H Ä€Δ¥`ÅI£˝Œ–‹#ìA¥H§¶$ë`‹2)Ç8ëB$D°@‹$K4@    ⁄YHO"Ä‹ƒ|√áÁ9ìÓH5Ä‹˙’ÕÕÕ‡ `Äx`›ê@" Ä$‹0@"@Ä@Bfl¡∫q∫4ßœXç‡Bz!π⁄‡"LJLH⁄JhÜ@BÓR,‡4HåHàDí*Hƒ@Ñà‰(‡$¥úE&4êHÄâ1‰P‡√PCPhπ$$ëËÅÒ–„#ꇯ ÿ¯@◊˘Ä◊Õ —¸◊ ≥¸        ◊    " ◊    "hˇFÛ¥ ◊    "))â$X◊    DPâ(P◊    fñR»†    ◊    D˚íG <^◊ÕÕÕÕ—˛0#≥ 09¿Á≥¯HDÄ"    HÄÁ" ¸ »Ä$"à!Ê"hˇFÛs¿Á‚0aHá∏·dC{ú?Ê"))â&âA.MGQ!®C%$!ÊDPâ%
  6451. Äàé‚PÅ∞EE!ÊfñR…¬SÑ¢A      I JHBÊD˚íN‰ÉüŒa‡ò #Å 20¿≤pÁÊ
  6452. Û˙ĉ
  6453. Û˙ĉ Û˚¿‰ÕÕÕÕÕÕÕÕÕÕÕò4@Äë@Äë1eqˆÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4Ä¿ëÄ¿ëqe±ˆÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿ë¿ë±eÒˆÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@ë@ëÒe1ˆÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@ë@ëÒe1ˆÕÕÏ30‰Î‰Õ    ÄÌ ‰Î‰    ÄÌ ‰ÕΉՠ   ÄÌ ‰Î‰    ÄÌ ‰J“ ÄH‰
  6454. i Ê0‘Ä Jüˇ‰¸˙ ‰     Jòh¸˙‰Ä… ó0¸˙ ‰
  6455. ˘¸‹˘¸˙‰
  6456. ˘¸‹Ä¸¸˙ ‰¸¸˙‰Ä¸¸˙ ‰¸¸‹¸¸˙‰¸¸‹Ä¸¸˙ ‰¸¸˙‰Ä¸¸˙ ‰¸¸‹¸¸˙‰¸¸‹Ä¸¸˙ ‰¸¸˙‰Ä¸¸˙ ‰¸¸‹¸¸˙‰¸¸‹Ä¸¸˙ ‰¸¸˙‰Ä¸¸˙ ‰¸¸‹¸¸˙‰¸¸‹Ä¸¸˙ ‰¸¸˙‰Ä¸¸˙ ‰¸¸‹¸Å˙‰¸@‹Ä¸Mw˙ ‰¸ìJ˙‰Ä¸J˙ ‰¸K‹¸˝˙‰¸˝‹Ä¸0˝˙ ‰¸`˝˙‰Ä¸¿˝˙ ‰¸Ä˝‹˘¸˙‰ò4@Äë@Äë1eqˆ
  6457. ˘¸‹ Äˇ¸ ‰ ˘˚D˙‰Ä˚¸àå˙ ‰
  6458. ˘¸‹˘¸˙‰
  6459. ˘¸"$‹Ä˚¸˙ ‰ ˘˚D˙‰Ä˚¸àå˙ ‰
  6460. ˘¸‹˘¸˙‰
  6461. ˘¸"$‹Ä˚¸˙ ‰ ˘˚D˙‰Ä˚¸àå˙ ‰
  6462. ˘¸‹˘¸˙‰
  6463. ˘¸"$‹Ä˚¸˙ ‰ ˘˚D˙‰Ä˚¸àå˙ ‰ ˛¸‹ ˛¸˙‰S ˛¸"$‹Ä'†˛¸˙ ‰$/˚ˇ¸˛D˙‰ÄS†˛¸àå˙ ‰
  6464. ˘¸‹˘¸˙‰
  6465. ˘¸"$‹Ä˚¸˙ ‰ ˘˚D˙‰Ä˚¸àå˙ ‰
  6466. ˘¸‹˘¸˙‰
  6467. ˘¸"$‹Ä˚¸˙ ‰ ˘˚D˙‰Ä˚¸àå˙ ‰
  6468. ˘¸‹˘¸˙‰
  6469. ˘¸"$‹Ä˚¸˙ ‰ ˘˚D˙‰Ä˚¸àå˙ ‰
  6470. ˘¸‹˘¸˙‰
  6471. ˘¸"$‹ Äˇ¸ ‰˘¸˙‰Ä˚¸˙ ‰
  6472. ˘¸‹˘¸˙‰
  6473. ˘¸‹Ä˚¸˙ ‰˘¸˙‰Ä˚¸˙ ‰
  6474. ˘¸‹˘¸˙‰
  6475. ˘¸‹Ä˚¸˙ ‰˘¸˙‰Ä˚¸˙ ‰ò4Ä¿ëÄ¿ëqe±ˆ
  6476. ˘¸‹˘¸˙‰
  6477. ˘¸‹Ä˚¸˙ ‰˘¸˙‰Ä˚¸˙ ‰
  6478. ˘¸‹˘¸˙‰
  6479. ˘¸‹Ä˚¸˙ ‰˘¸˙‰Ä˚¸˙ ‰
  6480. ˘¸‹˘¸˙‰
  6481. ˘¸‹Ä˚¸˙ ‰˘¸˙‰Ä˚¸˙ ‰
  6482. ˘¸‹˘¸˙‰
  6483. ˘¸‹Ä˚¸˙ ‰˘¸˙‰Ä˚¸˙ ‰
  6484. ˘¸‹˘¸˙‰
  6485. ˘¸‹Ä˚¸˙ ‰˘¸˙‰Ä˚¸˙ ‰
  6486. ˘¸‹˘¸˙‰
  6487. ˘¸‹Ä˚¸˙ ‰Î‰    ÄÌ ‰ÕΉՠ   ÄÌ ‰Î‰    ÄÌ ‰ÕΉՠ   ÄÌ ‰ÏUT‰LÏÉÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿ë¿ë±eÒˆÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕpÛ˛¿¸ ÊàH§˛ H¸`ÊÑÑ˝pà@ÊÑÑ√;Z
  6488. êˆDp2∏◊áB8ÁÑàF—Lh·â§êR jQ"öMHÁ—íàp    øÅ    »@åt%é Á!$    d∞ÄZ âÑ‚uå–êÁ√‡ xÁ–p‡ÉÂ…¿vs!©é‡Á˝Û"Â˝Û"Â
  6489. ˘‡ÛÂÕ&¿ É˛    √‡ÿ0A¿x˛8˛0!ÄΔ˝˛    B @B $˛DÏ% ˛    ÇÇÑ B˛ÑÔ($<s(ÅJ4«Ó8ˆÅ s¬ÉÇü7<à-ñB—π!·4fi7<pÚ($ñ”ARI,§E:FíâMç2hîà%2TBbI!ñô$hîêÚ($(EÅdä    DÑí'!
  6490. ë"P®àJ$ÑDKA    $P®@Ú($-)|Dûshäd('◊Ñ7Ãë-íÃÍàÑÌÅ("xë- Ú($IŒ≥É\iûHs§E«‰ãÀtÓIs%ÉI‚«!®ÓI¿Úı@¯ ˚Ï Î ¿˚Ï„ÏÕ@˸⁄¿0¸⁄@ ˛Ä⁄Cœ!¥œ5ƒ–    „€A$¶Ñ[Dîö`§Ä‹‚(«RH®ú@H€ò4@ë@ëÒe1ˆ"Ihh§…K ÄiÄ‹ ıñGá$ñ}Ñ:F‹˝Ÿ ˝÷ 8˝8÷Õ    ‡¿$◊ê˛Äl◊0˛H Ä€Δ¥`ÅI£˝Œ–‹#ìA¥H§¶$ë`‹2)Ç8ëB$D°@‹$K4@    ⁄YHO"Ä‹ƒ|√áÁ9ìÓH5Ä‹˙’ÕÕÕ‡ `Äx`›ê@" Ä$‹0@"@Ä@Bfl¡∫q∫4ßœXç‡Bz!π⁄‡"LJLH⁄JhÜ@BÓR,‡4HåHàDí*Hƒ@Ñà‰(‡$¥úE&4êHÄâ1‰P‡√PCPhπ$$ëËÅÒ–„#ꇯ ÿ¯@◊˘Ä◊Õ —¸◊ ≥¸        ◊    " ◊    "hˇFÛ¥ ◊    "))â$X◊    DPâ(P◊    fñR»†    ◊    D˚íG <^◊ÕÕÕÕ—˛0#≥ 09¿Á≥¯HDÄ"    HÄÁ" ¸ »Ä$"à!Ê"hˇFÛs¿Á‚0aHá∏·dC{ú?Ê"))â&âA.MGQ!®C%$!ÊDPâ%
  6491. Äàé‚PÅ∞EE!ÊfñR…¬SÑ¢A      I JHBÊD˚íN‰ÉüŒa‡ò #Å 20¿≤pÁÊ
  6492. Û˙ĉ
  6493. Û˙ĉ Û˚¿‰ÕÕÕÕÕÕÕÕÕÕÕò4@Äë@Äë1eqˆÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4Ä¿ëÄ¿ëqe±ˆÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4¿ë¿ë±eÒˆÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕò4@ë@ëÒe1ˆÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕˇ;.@ˇ ˇˇˇˇ@
  6494. ˇ·ˇ‚7^
  6495. 4H\, Palatino&e.3+ä"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@äDrawing4⁄ä˙(‡äAbout QuickDraw
  6496. (‡ 89
  6497. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6498. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6499.  
  6500.  
  6501.  
  6502.  
  6503.  
  6504. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  6505. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6506. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6507.  
  6508.  
  6509.  
  6510.  
  6511.  
  6512. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˝ˇ˛ˇ    ˛ˇˇ˛ˇ
  6513. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  6514. 4È4fl?òÄ
  6515. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6516. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6517.  
  6518.  
  6519.  
  6520.  
  6521.  
  6522. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˛˙ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ¸˛ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝ˇˇ˛
  6523. ˛ˇˇˇˇ
  6524. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜    ˇ˛ˇ˛ ˇˇ˛ˇˇ ˇˇ˛ˇˇ˚ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\ähê(eäY@Ä°dONLNd\êh)ou can think of a pixel as corrD@°dONLNd \h’)Ç/esponding to the point at the top left of the rè@°dONLNdO\’h˛)√
  6525. ectangle. °dONLNdYiäuû(räTher¿°dONLNd]iüuØ)e ar`°dONLNdaiØu‰)
  6526. e many mor°dONLNdki‰un)5e points in the QuickDraw coorü`°dONLNdâinuœ)ädinate plane than ther‡°dONLNdüi–u‡)be arÄ°dONLNd£i‡u) e pixels on °dONLNdØväǶ(äthe scrO†°dONLNd∂vßǪ)een. U‡°dONLNdªvªÇ‘)As a r °dONLNd¡v’Çó)/esult, you’ll associate small parts of the coorl`°dONLNdvóÇ)¬dinate plane with arkÄ°dONLNdvÇ)Yeas on °dONLNd Éäè¶(åäthe scrO†°dONLNdÉßèç)3een. In general, you don’t need to worry about wher!†°dONLNdEÉéè¿)Áe in that lar(Ä°dONLNdRÉ¿è‡)2ge coor!Ä°dONLNdYɇè˛) dinate °dONLNd`êäúº(ôä plane you’rÄ°dONLNdkêΩúx)3'e working, because QuickDraw always forπ°dONLNdíêxúû)ª    ces you t~°dONLNdõêüúØ)'o w Ä°dONLNdûêØú∏)or2†°dONLNd†êπú…)
  6527. k wò¿°dONLNd£ê…ú )ith a particular °dONLNd¥ùä©G(¶ä+graphics port, which has its own local coorT†°dONLNdflùG©î)Ωdinate system. (A-¿°dONLNdùî©)M graphics port is a complete °dONLNd™ä∂…(≥ädrawing envirú‡°dONLNd™…∂)?onment that defi›`°dONLNd*™∂:)Ines wherÏ`°dONLNd2™:∂    )(/e and how graphics operations will take place; °dONLNda∑ä√ö(¿äsee –@°dONLNde∑ö√±)page ´ °dONLNdj∑≤√º)92´ °dONLNdl∑º√fl)
  6528.  for moru†°dONLNdt∑‡√q)$!e information on graphics ports.)°dONLNdñ…ä’ê(“äTµ¿°dONLNdó…è’`)/o draw a line, you can simply move to the desir[ °dONLNdΔ…a’)“*ed starting point of the line and draw to °dONLNd÷ä‚∞(flä    the desir≠ °dONLNd˘÷∞‚|)&/ed end. For example, to draw a line in the curr
  6529. °dONLNd(÷}‚“)Õent graphics port fr¿°dONLNd<÷“‚¸)U    om point °dONLNdE„äÔe(Ïä4(100,150) to the point (200,250), you could do this:,
  6530. Courier.°dONLNdz˙ä*MoveTo(100, 150);°dONLNdåä*LineTo(200, 250);.°dONLNdû ä,ê*Tµ¿°dONLNdü è,º)
  6531. o draw a r’†°dONLNd© º,&)-ectangle, you need to prÔÄ°dONLNd¡ &,B)joceed @°dONLNd« C,U)in a æ°dONLNdàU,Ö) slightly difêÄ°dONLNdÿ Ö,ë)0fers°dONLNd€ ë,õ) en°dONLNd› ú,√) t mannerF°dONLNd √,≈)'.Δ°dONLNdÊ ≈,«) `°dONLNdÁ »,Œ)Yÿ‡°dONLNdË Õ,·)ou fi‚@°dONLNdÌ ·,) rst need to °dONLNd˘-ä9ö(6ädefir °dONLNd˝-õ9º)ne the rØÄ°dONLNd-º9)!ectangle in the cooru†°dONLNd-9)V7dinate plane and then perform some graphical operation °dONLNdP:äF¨(Cäon the ri@°dONLNdX:¨FÊ)"ectangle. Herÿ°dONLNde:ÊF)):e’s an example:.°dONLNduQä]b(Zä$SetRect(myRect, 100, 200, 300, 400);°dONLNdö_äkˆ*FrameRect(myRect);.°dONLNd≠wäÉ*These two lines of code defi†°dONLNd…wÉ){ne a r`†°dONLNdœwÉ)8ectangle and then frame it (that is, draw its outline). °dONLNdÑäê(çäInstead of just drawing the rㇰdONLNd$Ñê¢)}$ectangle’s outline, you could also fiÓ°dONLNdIÑ¢êæ)õll the ra °dONLNdQÑøê)ectangle with the .°dONLNdcëäùõ(öäcurrR`°dONLNdgëõù)ent pattern (by calling R`°dONLNdëù8)g    PaintRectR`°dONLNdàë8ùÏ)6)) or with some other pattern (by calling °dONLNd±ûä™∫(ßäFillRect°dONLNdπû∫™¡)0).
  6532. ∏HΔ4πHΔ    .°dONLNdº∑ä¬ù(øäNote
  6533. ˇ·ˇ‚7^
  6534. .°dONLNd¡ƒä–ü*CoorR`°dONLNd≈ƒü–Õ)
  6535. dinates ar$¿°dONLNdœƒÕ–). e passed to $¿°dONLNd€ƒ–*)3SetRect$¿°dONLNd‚ƒ*–R)*
  6536.  in the or˜ °dONLNdσQ– )'der left, top, right, bottom °dONLNd    –ä‹Δ(Ÿä(which is difR`°dONLNd–Δ‹”)<fer$¿°dONLNd–”‹Î)ent fr˜ °dONLNd–Í‹)    om the or…Ä°dONLNd(–‹B)* der in the …Ä°dONLNd3–B‹Z).Rect…Ä°dONLNd7–Z‹∑) data type). The worõ‡°dONLNdK–∑‹ø)]d .°dONLNdM‹äËå(ÂälG@°dONLNdN‹çË®)itterbu≠†°dONLNdU‹®Ë≠)g≠†°dONLNdV‹≠Ë≤) i°dONLNdX‹≥ËÖ)4s a useful mnemonic; it contains the letters l, t, rè°dONLNdå‹ÑË¿)—, and b in the °dONLNdõËäÙõ(Òäcorr`°dONLNdüËúÙ¥)ect orT °dONLNd•Ë¥Ù¬)dern¿°dONLNd®ˬÙƒ).,Zapf DingbatsÓ¿°dONLNd≤Î…ÛŒ)u
  6537. °dONLNd¥˘äÇ(ä7QuickDraw does not contain data types that describe cirë°dONLNd΢Ç)¯!cles or ovals. Instead, you draw °dONLNd äÀ(äan oval by defifi`°dONLNdÀÌ)Aning a rΩ†°dONLNd#̯)":ectangle and then asking QuickDraw to draw the oval that fi0Ä°dONLNd^˘(˘ts °dONLNdaäΔ(äinside of the r0@°dONLNdp«®)=3ectangle. The oval is completely enclosed within thA¿°dONLNd£®≥)·e rP`°dONLNd¶≥ ) ectangle, and never °dONLNd∫ ä,Y()ä.includes any pixels lying outside the boundary›`°dONLNdË X,z)Œ
  6538. . If the r2 °dONLNdÚ {,Ã)#ectangle is a squarÄ°dONLNd Ã,”)Qe,R °dONLNd ”,) then the oval °dONLNd-ä9¶(6äis a cir√°dONLNd-¶9¥)cle.
  6539. ^He4_He `ä`
  6540. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd#Oä^º(ZäRegionsˇˇˇˇˇˇ€r(Z5
  6541. °dONLNd+eäq‘(näJOne of QuickDraw’s most powerful capabilities is the ability to work with °dONLNdue‘qı(n‘regionsa¿°dONLNd|eˆq)" of °dONLNdÄrä~-({ä%arbitrary size, shape, and complexityÑ@°dONLNd•r,~1)¢. V†°dONLNdßr1~7)Y °dONLNd®r7~U)ou defi‡°dONLNdØrV~n)ne a re‡°dONLNdµrn~)#egion by drawing its boundary with °dONLNdÿäã(àäVQuickDraw operations. The boundary can be any set of lines and shapes (even including °dONLNd    .åäòß*other r
  6542. Ä°dONLNd    5å®ò!)egions) forming one or morÉ`°dONLNd    Oå!òc)ye closed loops. Ò†°dONLNd    _åcòj)BA,@°dONLNd    `åkòq) rq@°dONLNd    båqòÉ)egio'‡°dONLNd    fåÑò£)n can b¬Ä°dONLNd    må£ò)e concave or convex, can °dONLNd    Üôä•(¢äconsist of one connected ard‡°dONLNd    °ô•ˇ)w9ea or many separate ones, and can even have holes in the ˇ:(@ˇ ˇˇˇˇ@
  6543. ˇ·ˇ‚7^
  6544. 4*\¯, Palatino&e.3+l"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@lDrawing4⁄*˙¯
  6545. (‡*90    )BAbout QuickDraw4^*¿¯
  6546. °dONLNd\lhú(el middle. In ’¿°dONLNd \úh¥)0Figur®Ä°dONLNd\¥h»)e 5-5F°dONLNd\…h‚), the rh`°dONLNd\‚hò)-egion on the left has a hole in it, and the rÿ °dONLNdI\òhÈ)∂egion on the right °dONLNd\ilu‹(rlconsists of two disjoint arø†°dONLNdwi‹uÏ)peas.
  6547. ó*®¯4ò*®¯"ò*]
  6548. ˇ·ˇ‚7^    °dONLNd|çlòñ(ïl
  6549. Figure 5-5°dONLNdáçÆò≥)BTÄ–°dONLNdàç≥òfi)
  6550. wo regions
  6551. .°dONLNdìälñ⁄(ìlQuickDraw describes a rR`°dONLNd™ä⁄ñ9)negion using a data str>`°dONLNd¿ä9ñO)_uctur¿°dONLNd≈äOñx)
  6552. e of type ,
  6553. Courier¿°dONLNdœäxñú))Region¿°dONLNd’äúñƒ)$
  6554. . This str¸¿°dONLNdflä√ñŸ)'ucturœ °dONLNd‰äŸñ‡)e .°dONLNdÊól£≠(†lcontains two fiㇰdONLNdıó≠£Â)A xed-length fi†¿°dONLNdó£Ñ)8$elds followed by a variable-length fi–°dONLNd'óÑ£ã)üelÇ°dONLNd)óå£î)d..°dONLNd,Æl∫∫(∑lTYPE Region =°dONLNd;º~»¢+RECORD°dONLNdD ê÷¿+rgnSize:°dONLNdQ Í÷)ZInteger;°dONLNd^ D÷û)Z{size in bytes}°dONLNdpÿꉿ(·êrgnBBox:°dONLNd}ÿ͉)ZRect;°dONLNdáÿD‰¬)Z{enclosing rectangle}°dONLNdüÊêÚD(Ôê{more data if not rectangular}°dONLNdøÙ~ñ(˝~END;°dONLNdΔ~¢*RgnPtr°dONLNd–Δ)H
  6555. = ^Region;°dONLNd‹~*¥('~    RgnHandle°dONLNdÈΔ*)H
  6556. = ^RgnPtr;ˇˇæΔ°dONLNdÙ6lB(?lThe ˇˇ<R>Δ°dONLNd¯6ÄB™)rgnSizeˇˇæΔ>Δ°dONLNdˇ6™B≤)* fi˝å°dONLNd6≤BY))eld contains the size, in bytes, of the rΔ°dONLNd+6ZB¥)®egion variable. The ˇˇ<Rn°dONLNd?6µBfl)[rgnBBoxˇˇæΔn°dONLNdF6flBÁ)* fi¡4°dONLNdI6ÁB˜)eld .°dONLNdMClOû(Ll contains a r5@°dONLNdYCüOH)3'ectangle that completely encloses the r⁄†°dONLNdÄCHOΩ)©egion. In general, howeveṙ°dONLNdöCΩOÂ)u , you’ll tr°dONLNd•CÊOı))eat .°dONLNd©Pl\~(Ylthe °dONLNd≠P~\¢)Region°dONLNd≥P¢\»)$     data strl°dONLNdºP»\fi)&uctur>`°dONLNd¡Pfi\†)-e like a “black box”; you shouldn’t need to r¿°dONLNdÓP†\¯)¬ead the two named .°dONLNd]lir(flfiå¿°dONLNd]ri‹)elds except in special cir)@°dONLNd]›i)k cumstances.
  6557. ©lr¯4®k©lò2@å@å©lÁ¯œ◊ˇ˙◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚◊ˇÄ˚?◊ˇÄ˚œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœ?@ CáÄ沠   @ÑB@$"@fl$LI"¡D Daƒa ±¿„8ìâMAD Ñ°ö3“@„$RPéBD Ö!ë"ë‚@íêòw‚àNãÒ∞íD†Ä„@ÃπÇÄêA¶cE4Ä„‡ò— Ç`Bÿ¬9'‚˛&˝@0‡˛"˝Ä‡˛˝˝‡‡œ&8Å0`˛     ¸p˛˛Ú&¿Ä˛ DÄàIJÄÚ($éç1ç1-Δ:Ä# ±†ê”»eâ    "dàRjH!t$õ»ÀÙ($.ìh*íJtôK@‘≥“@·$ëûí
  6558. $ïTîHA’$ì=$Ù($$àíp*íÅ$ë"@Ë"í@ë"âí    CHí–A‚$ä)Ù($E$¿L§Ç)"ÄEàD§ÅE%"E
  6559. â#PB#ÇIJÙ($I•≠òI.ìM¢î¿e9E5°
  6560. ◊ö)¢"Á*ër`D%4]úSHÙ($È9`ÎîbI‰àòΔ9"√Òe…A√D…>¢@8Xƒ)ípÙı¯˙@Ôı¯˙@Ô‚‡Ôœ ¸¿›"˛ Ä›◊H@B2flIpí¨`fii©†Äœi±#Ttêfi$I)¿ÄãI*#à%›<ä3ÖR2F)›DíV`âöWd–M fiœeôÄp‰ïöCáH»fi˝˛Ä‹˝€ é˝ÿœ<˛p[Ÿ˛      ›&îå @BR$|ñ…fi8®í–A≠íDò©#*fi$E ‡AŒR(HI"$fiDI!ÄɧH0RDDfiLã•0ÜsÌ]8ódHfiç¡˘å ∂i–äCàfi˘ ÿ˘@ÿœœ<@ flÄÑ    ·&jR5-≠ó 1<äDn „8íùIRv¢ç)Híöîe@„$ëHí4íâHàâDÄ„E!"ê§%xê!1àÄ„Mr$π.Iïìâ"',â‚¢Q&I    !ù|»q‚¯ €¯@€¯`Ÿœ>¿˝ÅÄ⁄
  6561. @B@⁄
  6562. í?IºdÄ¿@⁄
  6563. $¢JRIïÄ⁄
  6564. $î""IÄÄ⁄    I$$í"ÅŸ
  6565. KnñE⁄$    @⁄
  6566. Ì¥‰Bëƒ'Ä⁄œœœœ>¿˛Ä`n`É pÈ@¸    êD@Dí@ Èí?IºÜX8Ñ◊8$É H¢:Á È$¢JRIË&S@ )jH,Å@ê¬I¿È$î""HëHÄH‡J 5Äꬠ   D@ÈI$$ë"P
  6567. &¸`å&ÅDÇ@ÈKnñEŸ¢òKD¿$Äñê$¢RH“ÄÈÌ¥‰Bëêrkd‡$Gå0,ú¿È˜(˛˙ Ê˜˛˙ Ê ÛÄ˚pÊœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@å@å©lÁ¯œL◊Ã˙◊˙@ÿ˙◊˙@◊Ä˚@ÿ˙@◊Ä˚◊˙@ÿ˙◊˙@◊Ä˚@ÿ˙@ˇ¸˛ˇÄ˚ÔD˛Ô˙@ÔD˛Ô˙ÔD˛Ô˙@ˇ¸˛ˇÄ˚@ÔD˛Ô˙@ÔD˛ÔÄ˚ÔD˛Ô˙@ˇ¸˛ˇ˙ÔD˛¸˜˙@ÔD˛¸˜Ä˚@ÔD˛¸˜˙@ˇ¸˛˝ˇ˜ˇÄ˚ÔD˛˝˝¯˙@ÔD˛˝˝¯˙ÔD˛˝˝¯˙@ˇ¸˛˛ˇ˝˘ˇÄ˚@ÔD˛˛¸˘˙@ÔD˛˛¸˘Ä˚ÔD˛˛¸˘˙@ˇ¸˛ˇˇ¸˘ˇ˙ÔD˛˙˙˙@ÔD˛˙˙Ä˚@ÔD˛˙˙˙@ˇ¸˛ˇ˙˙ˇÄ˚ÔD˛˙˙˙@ÔD˛˙˙˙ÔD˛˙˙˙@ˇ¸˛ˇ˙˙ˇÄ˚@ÔD˛˘˙˙@ÔD˛˘˙Ä˚ÔD˛˘˙˙@ˇ¸˛ˇˇ˘˚ˇ˙˝DˆD˛˛˘˙˙@˝DˆD˛˛˘˙Ä˚@˝DˆD˛˛˘˙˙!@˛ˇ¸˜ˇ¸˛ˇˇ˚˙ˇÄ˚˛D@˝˜D˛˛˚˙˙@˛D@˝˜D˛˛˚˙˙˛D@˝˜D˛˛˚˙˙!@˛ˇ¿˝˘ˇ¸˛˛ˇ˚˙ˇÄ˚@DD@¸¯D˛˝˚˙˙@DD@¸¯D˛˝˚˙Ä˚DD@¸¯D˛˝˚˙˙!@ˇˇ¿¸˘ˇ¸˛˛ˇ¸˙ˇ˙DD@˚¯D˛˝¸˙˙@DD@˚¯D˛˝¸˙Ä˚@DD@˚¯D˛˝¸˙˙ @ˇˇ¿˚˙ˇ¸˛˝ˇ¸˙ˇÄ˚DD˙˘D˛¸¸˘˙@DD˙˘D˛¸¸˘˙DD˙˘D˛¸¸˘˙!@ˇ¸˙˙ˇ¸˛˝ˇ˛˘ˇÄ˚@DD˘˘D˛¸˛˘˙@DD˘˘D˛¸˛˘Ä˚DD˘˘D˛¸˛˘˙ @ˇ¸˘˚ˇ¸˛˝ˇ˛˘ˇ˙DD˘˙D˛¸˛˘˙@DD˘˙D˛¸˛˘Ä˚@DD˘˙D˛¸˛˘˙@ˇ¸˘˚ˇ¸˛¸ˇ˛˘ˇÄ˚D@˜˚D˛˚˛˘˙@D@˜˚D˛˚˛˘˙D@˜˚D˛˚˛˘˙@ˇ¿˜˝ˇ¸˛¸ˇ˛˘ˇÄ˚@D@ˆ¸D˛˚˛¯˙@D@ˆ¸D˛˚˛¯Ä˚D@ˆ¸D˛˚˛¯˙@ˇ¿ˆ˛ˇ¸˛¸ˇ˛˘ˇ˙D@ˆ¸D˛˚˛¯˙@D@ˆ¸D˛˚˛¯Ä˚@D@ˆ¸D˛˚˛¯˙$@ˇ¿¸¸˝˛ˇ¸˛¸ˇ˛˘ˇÄ˚D˚D˝˝D˛¸˛¯˙@D˚D˝˝D˛¸˛¯˙D˚D˝˝D˛¸˛¯˙*@¸˚ˇˇ¸˛ˇ¸˛˝ˇ˛˛ˇ˝ˇÄ˚%@D˚˛D˝D˛¸˛˛˛˙&@D˚˛D˝D˛¸˛˛˛Ä˚%D˚˛D˝D˛¸˛˛˛˙*@¸¸˝ˇ¿˛ˇ¸˛˝ˇ˛ˇ˛ˇ˙#D¸˝D@˝D˛¸˛˝˛˙$@D¸˝D@˝D˛¸˛˝˛Ä˚#@D¸˝D@˝D˛¸˛˝˛˙+@ˇ¿˝˝ˇ¿ˇˇ¸˛˝ˇ˛˛ˇ˛ˇÄ˚!D@˝¸D@˛D˛¸˛˝˛˛˙!@D@˝¸D@˛D˛¸˛˝˛˛˙!D@˝¸D@˛D˛¸˛˝˛˛˙*@ˇ¿˝˝ˇ¸ˇˇ¸˛˝ˇ˝ˇ˛ˇˇÄ˚#@D@˝˚D˛D˛˝˝˛˛˙$@D@˝˚D˛D˛˝˝˛˛Ä˚#D@˝˚D˛D˛˝˝˛˛˙*@ˇ¿˝˝ˇ¸ˇˇ¸˛˛ˇ˝ˇ˛ˇˇ˙%D@˝˝D@˛˛D˛˝˝˛˛˙&@D@˝˝D@˛˛D˛˝˝˛˛Ä˚%@D@˝˝D@˛˛D˛˝˝˛˛˙+@ˇ¿˝˝ˇ¿˛ˇ¸˛˛ˇ˝ˇ˛ˇˇÄ˚!D@¸˝D˝˛D˛˝˛˛˝˙!@D@¸˝D˝˛D˛˝˛˛˝˙!D@¸˝D˝˛D˛˝˛˛˝˙)@ˇ¸¸ˇˇ¸˝ˇ¸˛˛ˇ˛˛ˇ˝ˇˇÄ˚%@DD¸DD@¸DD˛˝˛˛˝˙&@DD¸DD@¸DD˛˝˛˛˝Ä˚%DD¸DD@¸DD˛˝˛˛˝˙)@ˇˇ¿˝ˇ¿¸ˇ¸˛˛ˇ˛ˇ˝ˇˇ˙!DD@ıDD˛˝˛˝˙"@DD@ıDD˛˝˛˝Ä˚!@DD@ıDD˛˝˛˝˙#@ˇˇ¿ıˇ¸˛˝ˇ˛ˇ˝ˇˇÄ˚!DD@ıDD˛¸˝˙!@DD@ıDD˛¸˝˙!DD@ıDD˛¸˝˙$@ˇˇ¸ıˇ¸˛˝ˇˇˇ˝ˇˇÄ˚ @˛DıDD˛¸˛˝˙!@˛DıDD˛¸˛˝Ä˚ ˛DıDD˛¸˛˝˙@ˇˇ¸ıˇ¸˛¯ˇ˝ˇˇ˙˛DıDD˛˜˝˙@˛DıDD˛˜˝Ä˚@˛DıDD˛˜˝˙ @˛ˇ¸ˆˇ¸˛¯ˇ˝ˇˇÄ˚˝DˆDD˛˜¸˙@˝DˆDD˛˜¸˙˝DˆDD˛˜¸˙#@˛ˇ¸ˇˇ¸˚ˇ¸˛¯ˇ¸ˇˇÄ˚@˝D˝D˚DD˛˜¸˙@˝D˝D˚DD˛˜¸Ä˚˝D˝D˚DD˛˜¸˙@˘ˇ¸˚ˇ¸˛¯ˇ¸ˇˇ˙¯D˚DD˛˜¸˙@¯D˚DD˛˜¸Ä˚@¯D˚DD˛˜¸˙@˘ˇ¸˚ˇ¸˛¯ˇ¸ˇˇÄ˚˘D@˚DD˛˜¸˛˙@˘D@˚DD˛˜¸˛˙˘D@˚DD˛˜¸˛˙@˘ˇ¿˚ˇ¸˛¯ˇ¸ˇˇÄ˚@˘D@˚˛D˛˜¸˛˙@˘D@˚˛D˛˜¸˛Ä˚˘D@˚˛D˛˜¸˛˙@˘ˇ¿˚ˇ¸˛¯ˇ˝ˇˇ˙˘D@˚˛D˛˜˝˛˙@˘D@˚˛D˛˜˝˛Ä˚@˘D@˚˛D˛˜˝˛˙ @˘ˇ¿¸ˇˇ¸˛˜ˇ˛˛ˇÄ˚˘D˚˛D˛ˆ˛˛˙@˘D˚˛D˛ˆ˛˛˙˘D˚˛D˛ˆ˛˛˙ @˙ˇ¸˚ˇˇ¸˛ˆˇ˛ˇÄ˚@˘D˚˝D˛ı˝˙@˘D˚˝D˛ı˝Ä˚˘D˚˝D˛ı˝˙@˙ˇ¸¸˛ˇ¸˛ˇ˙˘D¸˝D˛Ô˙@˘D¸˝D˛ÔÄ˚@˘D¸˝D˛Ô˙@˘ˇ¿˛˝ˇ¸˛ˇÄ˚˘D@˛¸D˛Ô˙@˘D@˛¸D˛Ô˙˘D@˛¸D˛Ô˙@˘ˇ¸¸ˇ¸˛ˇÄ˚@¯D˚D˛Ô˙@¯D˚D˛ÔÄ˚¯D˚D˛Ô˙@ˇ¸˛ˇ˙ÔD˛Ô˙@ÔD˛ÔÄ˚@ÔD˛Ô˙@ˇ¸˛ˇÄ˚ÔD˛Ô˙@ÔD˛Ô˙ÔD˛Ô˙@ˇ¸˛ˇÄ˚@ÿ˙@◊Ä˚◊˙@ÿ˙◊˙@◊Ä˚@ÿ˙@◊Ä˚◊˙@ÿ˙◊˙L◊ÃÄ˚◊U˙œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœ?@ CáÄ沠   @ÑB@$"@fl$LI"¡D Daƒa ±¿„8ìâMAD Ñ°ö3“@„$RPéBD Ö!ë"ë‚@íêòw‚àNãÒ∞íD†Ä„@ÃπÇÄêA¶cE4Ä„‡ò— Ç`Bÿ¬9'‚˛&˝@0‡˛"˝Ä‡˛˝˝‡‡œ&8Å0`˛     ¸p˛˛Ú&¿Ä˛ DÄàIJÄÚ($éç1ç1-Δ:Ä# ±†ê”»eâ    "dàRjH!t$õ»ÀÙ($.ìh*íJtôK@‘≥“@·$ëûí
  6568. $ïTîHA’$ì=$Ù($$àíp*íÅ$ë"@Ë"í@ë"âí    CHí–A‚$ä)Ù($E$¿L§Ç)"ÄEàD§ÅE%"E
  6569. â#PB#ÇIJÙ($I•≠òI.ìM¢î¿e9E5°
  6570. ◊ö)¢"Á*ër`D%4]úSHÙ($È9`ÎîbI‰àòΔ9"√Òe…A√D…>¢@8Xƒ)ípÙı¯˙@Ôı¯˙@Ô‚‡Ôœ ¸¿›"˛ Ä›◊H@B2flIpí¨`fii©†Äœi±#Ttêfi$I)¿ÄãI*#à%›<ä3ÖR2F)›DíV`âöWd–M fiœeôÄp‰ïöCáH»fi˝˛Ä‹˝€ é˝ÿœ<˛p[Ÿ˛      ›&îå @BR$|ñ…fi8®í–A≠íDò©#*fi$E ‡AŒR(HI"$fiDI!ÄɧH0RDDfiLã•0ÜsÌ]8ódHfiç¡˘å ∂i–äCàfi˘ ÿ˘@ÿœœ<@ flÄÑ    ·&jR5-≠ó 1<äDn „8íùIRv¢ç)Híöîe@„$ëHí4íâHàâDÄ„E!"ê§%xê!1àÄ„Mr$π.Iïìâ"',â‚¢Q&I    !ù|»q‚¯ €¯@€¯`Ÿœ>¿˝ÅÄ⁄
  6571. @B@⁄
  6572. í?IºdÄ¿@⁄
  6573. $¢JRIïÄ⁄
  6574. $î""IÄÄ⁄    I$$í"ÅŸ
  6575. KnñE⁄$    @⁄
  6576. Ì¥‰Bëƒ'Ä⁄œœœœ>¿˛Ä`n`É pÈ@¸    êD@Dí@ Èí?IºÜX8Ñ◊8$É H¢:Á È$¢JRIË&S@ )jH,Å@ê¬I¿È$î""HëHÄH‡J 5Äꬠ   D@ÈI$$ë"P
  6577. &¸`å&ÅDÇ@ÈKnñEŸ¢òKD¿$Äñê$¢RH“ÄÈÌ¥‰Bëêrkd‡$Gå0,ú¿È˜(˛˙ Ê˜˛˙ Ê ÛÄ˚pÊœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœˇ4Œ@ˇ ˇˇˇˇ@
  6578. ˇ·ˇ‚7^
  6579. 4H\, Palatino&e.3+ä"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@äDrawing4⁄ä˙(‡äAbout QuickDraw
  6580. (‡ 91
  6581. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6582. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6583.  
  6584.  
  6585.  
  6586.  
  6587.  
  6588. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  6589. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6590. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6591.  
  6592.  
  6593.  
  6594.  
  6595.  
  6596. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˝ˇ˛ˇ    ˛ˇˇ˛ˇ
  6597. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  6598. 4È4fl?òÄ
  6599. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6600. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6601.  
  6602.  
  6603.  
  6604.  
  6605.  
  6606. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˛˙ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ¸˛ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝ˇˇ˛
  6607. ˛ˇˇˇˇ
  6608. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜    ˇ˛ˇ˛ ˇˇ˛ˇˇ ˇˇ˛ˇˇ˚ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\äh§(eäThe Vÿ °dONLNd\£hw)-enn Diagrammer application uses a number of r–Ä°dONLNd2\wh·)‘egions to pick out the ar†°dONLNdK\‚hÚ)keas °dONLNdOiäuö(rädefir °dONLNdSiõu)ned by the overlapping cirH °dONLNdmiu6)u
  6609. cles. See ˙`°dONLNdwi6u‡)&#“Drawing Shapes” beginning on page : °dONLNdöi·uÎ)´94: °dONLNdúiÎu¸)
  6610.  for °dONLNd°väÇ©(ädetails.
  6611. ßHÆ4®HÆ ©ä©
  6612. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd™òäß *$
  6613. Bit Imagesˇˇˇˇˇˇ€r(£5
  6614. °dONLNdµÆä∫Æ(∑ä    Points, r˝@°dONLNdæÆÆ∫Û)$ectangles, and r˚ °dONLNdŒÆÛ∫)E    egions ar °dONLNd◊Æ∫))0e mathematical models—data types that QuickDraw °dONLNdªä«ø(ƒä uses for defix‡°dONLNdª¿«fl)6ning arÿ °dONLNdªfl«)eas on the scrı@°dONLNd)ª«);8een—but they can also be graphic elements that actually °dONLNda»ä‘÷(—äappear on the scrW°dONLNdr»÷‘Í)Leen. ]@°dONLNdw»Í‘Ò)Aó‡°dONLNdx»Ò‘˜) r‹‡°dONLNdz»˜‘√)-ectangle, for example, can mathematically defi÷°dONLNd®»ƒ‘)Õne a particular °dONLNd∏’ä·≤(fiä
  6615. visible ar≤†°dONLNd¬’≤·¨)(<ea, but it can also be an object to be framed, painted, or fi®‡°dONLNdˇ’≠·)˚lled. QuickDraw also °dONLNd‚äÓö(Îädefir °dONLNd‚õÓI)&nes a number of other graphic elementsa@°dONLNd>‚JÓ˝)Ø*, including icons, bitmaps, patterns, and °dONLNdhÔä˚”(¯äother bit images,J°dONLNdyÔ‘˚,)J that have only a dirˇ°dONLNdéÔ,˚})Xect graphic interpríÄ°dONLNd°Ô~˚ñ)Retatio>¿°dONLNdßÔó˚ü)n.ê °dONLNd©Ôü˚°) ±¿°dONLNd™Ô°˚)An icon, for instance, °dONLNd¡¸äö(ädefir °dONLNd≈¸õï)6nes an image not by mapping an abstract mathematical rΩ °dONLNd˚¸ï£)˙eprM‡°dONLNd˛¸§˙)esentation onto the °dONLNd    äñ(äscrÚ@°dONLNd    ñΩ)     een pixelú°dONLNd    æ )(s b‡†°dONLNd!     )     ut by dir
  6616. °dONLNd*    Ò®)'+ectly indicating which pixels in a given ar√ °dONLNdU    ®Ω)∑ea ar—¿°dONLNdZ    Ω    )e to be black and °dONLNdlä"∞(äwhich ar`°dONLNdt±"∏)'e a°dONLNdv∏"–)to be j °dONLNd|–"Î)white.
  6617. 0H>41H>°dONLNdÉ1ä9©(7äIMPORTÄ°dONLNdâ1©9π)ANT
  6618. ˇ·ˇ‚7^
  6619. °dONLNdç<äHc(Eä3The discussion in this section applies only to blac´°dONLNd¿<cHp)Ÿk-aé°dONLNd√<qHv)n_`°dONLNdƒ<wHà)d-w&°dONLNd«<âH™)    hite bit °dONLNd–HäT’(Qäimages, which ariÄ°dONLNd‡H’T )K8e the simplest cases. For complete information on color °dONLNdTä`((]ä&bit images (such as color icons), see “°dONLNd>T(`î)ûInside Macintosh: Imagingï¿°dONLNdWTï`ó)m.,Zapf Dingbats¿°dONLNdaWù_£)s
  6620. °dONLNdceäqÑ(nä8The Macintosh user interface uses bit images extensivelyw†°dONLNdõeÉq˘)˘, so QuickDraw contains a °dONLNdµrä~o({ä3number of additional data types describing such dir˘°dONLNdËro~∑)Âect entities and rûÄ°dONLNd˙r∏~)Ioutines to draw °dONLNd
  6621. äã¿(àä them. The VâÄ°dONLNdøãÀ)5;enn Diagrammer application uses two kinds of bit images: biqÄ°dONLNdPÃãÿ(àÃtmᇰdONLNdRÿã˝) aps and °dONLNdZåäò∞(ïä    patterns.°dONLNddûä™ë*A∫†°dONLNdeûë™ì) :†°dONLNdfûî™ù)bi™@°dONLNdhûù™©)    tm·¿°dONLNdjû©™¥) ap˝Ä°dONLNdlû¥™Ë)  is a data strfl°dONLNdzûÈ™)5ucturd‡°dONLNdû™-)
  6622. e that defiv¿°dONLNdäû-™Ó),-nes a physical bit image in terms of the coor@°dONLNd∑ûÔ™)¬dinate °dONLNdæ´ä∑ß(¥äplane. ß °dONLNd≈´ß∑Æ)A·¿°dONLNdΔ´Æ∑∏) bi—¿°dONLNd…´π∑≈) tmË °dONLNdÀ´≈∑Ò)
  6623. ap has thr—`°dONLNd’´Ò∑Y),ee parts: a pointer to a r†°dONLNdÔ´Z∑Ï)i$ectangular collection of bits, the rņ°dONLNd´Ï∑¸)íow °dONLNd∏䃠(¡äwidth of that rS`°dONLNd%∏ ƒw)@'ectangular collection, and a boundary rôÄ°dONLNdL∏wƒ‰)≠ectangle that gives the bi °dONLNdf∏‰ƒ)mtmÄ°dONLNdh∏Òƒ)ap both °dONLNdp≈ä—˙(Œäits dimensions and a coorÄ°dONLNdâ≈˚—:)qdinate system..°dONLNdò◊ä„™(‡äThe strl°dONLNdü◊™„¿) uctur>`°dONLNd§◊¿„„)    e of a bi>`°dONLNd≠◊„„Ô)#tm>`°dONLNdØ◊Ô„)     ap is defi>`°dONLNdπ◊„J)* ned by the ,
  6624. Courier>`°dONLNdƒ◊J„n)1BitMap>`°dONLNd ◊n„†)$  data type:°dONLNd÷Óä˙ÿ(˜äTYPE BitMap =°dONLNd¸ú¿+RECORD°dONLNdÓ
  6625. Ɖ+    baseAddr:°dONLNd¸
  6626.  )ZPtr;°dONLNd
  6627. bÊ)Z{pointer to bit image}°dONLNdÆ$‰(!Æ    rowBytes:°dONLNd,$8)ZInteger;°dONLNd9b$§)Z {row width}°dONLNdG&Æ2ÿ(/Æbounds:°dONLNdS&2&)ZRect;°dONLNd]&b2⁄)Z{boundary rectangle}°dONLNds4ú@¥(=úEND;ˇIº@ˇ ˇˇˇˇ@
  6628. ˇ·ˇ‚7^
  6629. 4*\¯, Palatino&e.3+l"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@lDrawing4⁄*˙¯
  6630. (‡*92    )BAbout QuickDraw4^*¿¯
  6631. °dONLNd\lhÑ(elFigurR¿°dONLNd\Ñhò)e 5-6@°dONLNd
  6632. \òhı) shows how these thrb¿°dONLNd\ˆhY)^ee pieces of informatioT`°dONLNd5\Zhs)dn defió‡°dONLNd;\shÖ)ne a≤‡°dONLNd?\ÖhΩ) particular biî¿°dONLNdM\æh )9tm´ °dONLNdO\ h◊) ap.
  6633. ä*õ¯4ã*õ¯"ã*]
  6634. ˇ·ˇ‚7^    °dONLNdSÄlãñ(àl
  6635. Figure 5-6°dONLNd^ÄÆã¥)BA0°dONLNd_Ä¥ã«) bitmÅ@°dONLNddÄ«ã—)ap
  6636. .°dONLNdg»l‘Ä(—lThe ,
  6637. Courier°dONLNdk»Ä‘∞)baseAddr°dONLNds»∞‘π)0 fi°dONLNdv»π‘¬)    <eld is a pointer to the beginning of the bit image in memoryd@°dONLNd≤»¡‘⁄(—¡. The °dONLNd∏’l·ú(filrowBytes°dONLNd¿’ú·¢)0 fPÄ°dONLNd¬’¢·◊)ield is the r"‡°dONLNdœ’◊·M)5ow width, in bytes. (Both "‡°dONLNdÈ’M·})vbaseAddr"‡°dONLNdÒ’}·í)0 and "‡°dONLNdˆ’í·¬)rowBytes"‡°dONLNd˛’¬·€)0 must °dONLNd‚lÓ·(Îlcontain even values.) The °dONLNd‚·Ó)ubounds°dONLNd$‚Ó)$ fi°dONLNd'‚ÓD)    eld is the bi°dONLNd4‚DÓP)6tm°dONLNd6‚PÓì) ap’s bounding rR`°dONLNdE‚ìÓ–)Cectangle. See .°dONLNdSÔl˚%(¯l'“Drawing Bit Images” beginning on page 4†°dONLNdzÔ&˚0)∫994†°dONLNd|Ô0˚›)
  6638. ) for a description of how to display a biõ‡°dONLNd•Ô›˚È)≠tm≤@°dONLNdßÔÈ˚ˆ) ap.
  6639. !*(¯4!*'¯ "l"¯
  6640. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd´l ∑(l Ports and W¯ö°dONLNd∂∑ ·)Kindowsˇˇˇˇˇˇ€r(5
  6641. °dONLNdΩ'l3(0l"All drawing takes place in a contr;°dONLNdfl'3X)ïolled drawing envirÄ°dONLNdÚ'Y3≤)Xonment known as a 7 °dONLNd'≤3)Ygraphics port.¯ °dONLNd'3Ú)> °dONLNd4l@Õ(=lThe graphics port defiE`°dONLNd)4Œ@º)b4nes a number of drawing parameters, such as the curr"Ä°dONLNd]4º@Ù)Ó ent drawing °dONLNdiAlM∂(Jllocation, the currL °dONLNd{A∑MÔ)KIent font and size used for drawing characters, and so forth. In general, °dONLNdƒNlZî(WlAyou can think of a graphics port as the window within which you’rïÄ°dONLNdNîZ≠(Wîe curr °dONLNd NÆZÔ)ently drawing..°dONLNd`llt(ilAÛ`°dONLNd`sl–) graphics port is defiÛ`°dONLNd1`–l)] ned by the Û`°dONLNd<`l1)1GrafPortÛ`°dONLNdD`1lW)0     data strfl`°dONLNdM`Wlm)&uctur±¿°dONLNdR`mlu)e.°dONLNdUwlÉΔ(ÄlTYPE GrafPort =°dONLNdfÖ~ë¢+RECORD°dONLNdoìêü∫+device:°dONLNd{ìÍü)ZInteger;°dONLNdáì2ü‡)H{device-specific information}°dONLNdß°ê≠Δ(™ê    portBits:°dONLNdµ°Í≠)ZBitMap;°dONLNd¿°2≠™)H{GrafPort's bit map}°dONLNd◊ØêªΔ(∏ê    portRect:°dONLNdÂØͪ)ZRect;°dONLNdÓØ2ª∂)H{GrafPort's rectangle}
  6642. õk±¯4öjõkò2@ç@çõk€¯œœ?›ˇı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?˜ˇ‡ÇAÓˇ¯ı?˜ˇ‡ÇAÓˇ¯ı?˜ˇ‡ÇAÓˇ¯ı?˜ˇ‡ÇAÓˇ¯ı?˜ˇ‡ÇAÓˇ¯ı?˜ˇ‡ÇAÓˇ¯ı?›ˇ¯ı?˜ˇ ‡ÇA¯ ÅÛˇ¯ı?˜ˇ ‡ÇA¯ ÅÛˇ¯ı?˜ˇ ‡ÇA¯ ÅÛˇ¯ı?˜ˇ ‡ÇA¯ ÅÛˇ¯ı?˜ˇ ‡ÇA¯ ÅÛˇ¯ı?›ˇ¯ı?˜ˇ ‡ÇA˛ Å¿Ûˇ¯ı?˜ˇ ‡ÇA˛ Å¿Ûˇ¯ı?˜ˇ ‡ÇA˛ Å¿Ûˇ¯ı?˜ˇ ‡ÇA˛ Å¿Ûˇ¯ı?˜ˇ ‡ÇA˛ Å¿Ûˇ¯ı?›ˇ¯ı?˜ˇ ‡Ç ÅÛˇ¯ı?˜ˇ ‡Ç ÅÛˇ¯ı?˜ˇ ‡Ç ÅÛˇ¯ı?˜ˇ ‡Ç ÅÛˇ¯ı?˜ˇ ‡Ç ÅÛˇ¯ı?›ˇ¯ı?˜ˇ ‡Ç¡ Å¸ˇÉÙˇ¯ı?˜ˇ ‡Ç¡ Å¸ˇÉÙˇ¯ı?˜ˇ ‡Ç¡ Å¸ˇÉÙˇ¯ı?˜ˇ ‡Ç¡ Å¸ˇÉÙˇ¯ı?˜ˇ ‡Ç¡ Å¸ˇÉÙˇ¯ı?˜ˇ ‡Ç¡ Å¸ˇÉÙˇ¯ı?›ˇ¯ı?˜ˇ ‡ÇA ˇˇ¿ÉÙˇ¯ı?˜ˇ ‡ÇA ˇˇ¿ÉÙˇ¯ı?˜ˇ ‡ÇA ˇˇ¿ÉÙˇ¯ı?˜ˇ ‡ÇA ˇˇ¿ÉÙˇ¯ı?˜ˇ ‡ÇA ˇˇ¿ÉÙˇ¯ı?›ˇ¯ıò2@Äç@Äç€k¯?˜ˇ ‡É¸A?Åˇ@ÉÙˇ¯ı?˜ˇ ‡É¸A?Åˇ@ÉÙˇ¯ı?˜ˇ ‡É¸A?Åˇ@ÉÙˇ¯ı?˜ˇ ‡É¸A?Åˇ@ÉÙˇ¯ı?˜ˇ ‡É¸A?Åˇ@ÉÙˇ¯ı?›ˇ¯ı?˜ˇ ‡˛A‡ˇ¸@ÉÙˇ¯ı?˜ˇ ‡˛A‡ˇ¸@ÉÙˇ¯ı?˜ˇ ‡˛A‡ˇ¸@ÉÙˇ¯ı?˜ˇ ‡˛A‡ˇ¸@ÉÙˇ¯ı?˜ˇ ‡˛A‡ˇ¸@ÉÙˇ¯ı?›ˇ¯ı?Òˇ¯?ˇ@ÉÙˇ¯ı?Òˇ¯?ˇ@ÉÙˇ¯ı?Òˇ¯?ˇ@ÉÙˇ¯ı?Òˇ¯?ˇ@ÉÙˇ¯ı?Òˇ¯?ˇ@ÉÙˇ¯ı?Òˇ¯?ˇ@ÉÙˇ¯ı?›ˇ¯ı?ˆˇ ÇAˇˇÅ@ÉÙˇ¯ı?ˆˇ ÇAˇˇÅ@ÉÙˇ¯ı?ˆˇ ÇAˇˇÅ@ÉÙˇ¯ı?ˆˇ ÇAˇˇÅ@ÉÙˇ¯ı?ˆˇ ÇAˇˇÅ@ÉÙˇ¯ı?›ˇ¯ı?ˆˇ ÇAˇ‡Å@ÉÙˇ¯ı?ˆˇ ÇAˇ‡Å@ÉÙˇ¯ı?ˆˇ ÇAˇ‡Å@ÉÙˇ¯ı?ˆˇ ÇAˇ‡Å@ÉÙˇ¯ı?ˆˇ ÇAˇ‡Å@ÉÙˇ¯ı?›ˇ¯ı?Òˇ¯ Å@ÉÙˇ¯ı?Òˇ¯ Å@ÉÙˇ¯ı?Òˇ¯ Å@ÉÙˇ¯ı?Òˇ¯ Å@ÉÙˇ¯ı?Òˇ¯ Å@ÉÙˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ıò2Ä¿çÄ¿çk[¯?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ıò2¿ç¿ç[kõ¯?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ıò2@ç@çõk€¯?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı?›ˇ¯ı›ˇ¯ıœœœœœœœœœœœœœœœœ¸ûa¿`ò˛pÄC‰¸H Ä$êIJÄÄĉ¸HAE˛¿ ˛Ä¸DÅÖÌhÄ@pÄ„√L◊Ä˸Eч3E3@ àÄñŵ"@˸Öà@"J#Ä&à¡Å&$@˸êÄIíƒ@êAiNtÄ˸‡c8süCÉÄ`‡èI´Á ı@¯Á ı@¯Á ıįÁœœœ¸` 0¿¿x͸ 0˝@ ¸$Á¸ @P Ä ¸BÁ¸    „ôD
  6643. Q¶?q«∞$â©dÄB—π'·¿Ï¸§∂ö
  6644. íIe")–,¥Ÿ6§ÄBbI,¶ÄϸB(ú $PJ$$êE8ä'-ÑDKIDÄϸiK‡$ÛõDS ÜA H6àÑÌìcθ:Nuú„LÚCù"9w$!ÉIGÎÚ˚ ˝ÄÏÊÄÏÊÎœœœ¸IJ ‡˛0`Å˛¿Îò2@Äç@Äç€k¯¸ĸ    %˝ C˛@θ˚Eê˛@B@Äθ4›0Åœƒ E`˜…1DB8„Çà'Ä̸&”B\ö: J$IföÇD    Dç4“@̸$ìÅ äZHúDB8‰@̸"y4¶ "@îHlõ‡ DHâ¡Ä̸8!©#á?ú<¡ÅdpHÂú2é0,é 8ÎÏÛ¯ ˛ÏÛ¯ ˛ÏÛĢp˛Ïœœœœœœœœœœœœœœœœœ¸˛p¡Ä·¸ Ä@ ‡¸ÄÄ
  6645. @„¸    8˘<
  6646. kÇ–åÁh‰¸”I 1cRH∞‰¸íE
  6647. (@!"C†P†‰¸ aÜí¨Ä!BDÑ&ë@‰¸8„ÑflI‰g¬áÉòé@‰ ˚D˛‹˚Hÿ˙„∞ÿœœœ¸Ä@¸p‡¸Äĸ ‡¸
  6648. Ä@‡¸
  6649. y ¶yÆ&ÄO·¸     %4 "⁄$§”E$·¸ F8 BíED‚ä@·¸ !K@#E&JYãL·¸g¨≤89$≥ˉ!“0Ä‚˚ Ä˝Ä fl ˚ Ä˝Ä‹ ˚q¿˛¿‹œœœ¸Ä@§¸ ·¸ÄÄl¸$·¸
  6650. ÄH Ä"·¸
  6651. 8·H—ˆõ«h0B·¸ DñÇHRc$à∞B·¸ "Öê°"Dê†D·¸ !/âhŸ,ƒO@H·¸ gñpáë˜D5@Ò0·œò2Ä¿çÄ¿çk[¯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2¿ç¿ç[kõ¯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@ç@çõk€¯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@Aç@Aç€k‹¯œò2@ç@çõk€¯œœ‹30ı‹ı ›ı‹ı‹ı‹ı ›ı‹ı ›ı‹ı‹ı‹ı ›ı‹ı ›ı‹ı‹ı˛Ç Èˇ¸ı(  B  ˛ ˝?¿ ˛ı(˛s1NÏ˛A˛    @¡˛Aı)%     ˘”(ˇˇÄ  ?¡ ı'˛        n¬3(Ä˝IJÄ¿˛Äı(˛;:.˲A˛    @¡˛Aı ¯ËÃı$ ˘ ˛ˇ~˚Ôø~?¿ ˛ı"¯˛Afl˛ˇ|¡˛Aı$ ˘ ˇ˚ˇø~?¡ ı!¯Ä˝    fl˛˚Ôø¸¿˛Äı"¯˛Afl˛ˇ|¡˛Aı"¯Ä@fl˛ˇÔˇ¸¿Ä@ı ˘Ò"b˙"$ı"¯˛A|¡˛Aı$ ˘  ?~?¡ ı"¯IJ
  6652. ¯Ä?¸¿˛Äı"¯˛A|¡˛Aı"¯Ä@¯Ä¸¿Ä@ı ˘Ò"b˙"$ı"¯˛A¸¿|¡˛Aı$ ˘ ˛ Ä~?¡ ı"¯IJ
  6653. ¸Äĸ¿˛Äı"¯˛A¸¿|¡˛Aı"¯Ä@¸Ä¿¸¿Ä@ı ˘Ò"b˙"$ı"¯˛˛    |¡˛Aı$ ˘ ? ?~?¡ ı"¯Ä>ć?¸¿˛Äı"¯˛˛    |¡˛Aı"¯Ä~ć¸¿Ä@ı ˘Ò"b˙"$ı"¯˛¡˛    ¸ˇ¡˛Aı$ ˘ Å ¯ø?¡ ı"¯ÄÄįøÄ¿˛Äı"¯˛¡˛    ¸ˇ¡˛Aı"¯Ä¿Ä¸ˇÄ¿Ä@ı$ ˘ Ä ¯ø?¿ ˛ı¯ÈUTı$ ˘  ˇÄ?¡ ı"¯Ä‡˛ÔÄÄ¿˛Äı"¯˛A˛    ˇ¿¡˛Aı"¯Ä‡@˛Ô¿Ä¿Ä@ı$ ˘ ‡ ~ÔÄ?¿ ˛ı¯ÈUTıò2@Äç@Äç€k¯$ ˘ ¯?˚?¡ ı"¯ů˛    Ä˚‡Ä¿˛Äı"¯¸Aˇ@¡˛Aı"¯Ÿ@ġ‡@Ä¿Ä@ı$ ˘ ¯?˚‡?¿ ˛ı˝ÄÈUTı) ˛!Ä ~‡¯?¡ ı&˝is∞¸˝    ¿˛¯Ä¿˛Äı'˝ôL˘ˇ˙|A¿¸@¡˛Aı'˝!ôL˸@¿˛¸@Ä¿Ä@ı) ˛gK∞ ~˛‡~¯?¿ ˛ı¯ÈUTı$ ˘?˚ˇøˇ??¡ ı"¯
  6654. ˝˚Ôæ˝¯˛˛Ä¿˛Äı"¯}˛ˇ ˝@¡˛Aı"¯˝ˇÔ˛˝¯˛@Ä¿Ä@ı$ ˘
  6655. ?˚Ôæˇ?~˛?¿ ˛ı"¯}˛ˇ ˝@¡˛Aı ˘Ò3s˙34ı"¯IJˇflIJÄ¿˛Äı"¯A˜fl@¡˛Aı"¯Ä@ˇflÄ@Ä¿Ä@ı# ˘?˛˜ˇ˝?¿ ˛ı"¯A˜fl@¡˛Aı ˘Ò3s˙34ı"¯IJˇ¿Ä˛Ä¿˛Äı"¯A˜¿@¡˛Aı"¯Ä@ˇ¿Ä@Ä¿Ä@ı# ˘?˛˜‡˝?¿ ˛ı"¯A˜¿@¡˛Aı ˘Ò3s˙34ı"¯
  6656. ˝˚Ôæ˝¯Ä˛Ä¿˛Äı"¯}˛ˇ ˝@¡˛Aı"¯˝ˇÔ˛˝¯Ä@Ä¿Ä@ı# ˘    ?˚Ôæˇ ˝?¿ ˛ı"¯}˛ˇ ˝@¡˛Aı ˘Ò3s˙34ı!¯Ä˝IJÄ¿˛Äı"¯˛A˛    @¡˛Aı"¯Ä@Ä@Ä¿Ä@ı# ˘ ˛ ˝?¿ ˛ı"¯˛A˛    @¡˛Aı$ ˘  ?¡ ı¯Òà»˙àåı"¯˜fl}˛ˇ˝˜fl˛ˇ}˜fl¡˛Aı"¯ˇfl˝ˇÔ˛˝ˇfl˛ˇÔˇ˝ˇfl¿Ä@ı$ ˘˜ˇ˚Ôæˇ˜ˇ~˚Ôø˜ˇ¿ ˛ı"¯˜fl}˛ˇ˝˜fl˛ˇ}˜fl¡˛Aı$ ˘˜ˇ˚ˇøˇ˜ˇ˚ˇø˜ˇ¡ ı¯Òˇ»˙àåı"¯˛A˛@˛A˛Aı"¯Ä@Ä@Ä@Ä@ı# ˘ ˛ ˝ ˛ ˛ı"¯˛A˛@˛A˛Aı$ ˘    ı¯Èàåı"¯˛A˛@˛A˛Aı"¯Ä@Ä@Ä@Ä@ı# ˘ ˛ ˝ ˛ ˛ı"¯˛A˛@˛A˛Aı$ ˘    ı¯Èàåı"¯˛A˛@˛A˛Aı"¯Ä@Ä@Ä@Ä@ıò2Ä¿çÄ¿çk[¯# ˘ ˛ ˝ ˛ ˛ı"¯˛A˛@˛A˛Aı$ ˘    ı¯Ä˝IJĸÄı¯ÈUTı"¯Ä@Ä@Ä@Ä@ı# ˘ ˛ ˝ ˛ ˛ı"¯˛A˛@˛A˛Aı$ ˘    ı¯Ä˝IJĸÄı¯ÈUTı"¯Ä@Ä@Ä@Ä@ı# ˘ ˛ ˝ ˛ ˛ı"¯˛A˛@˛A˛Aı$ ˘    ı¯Ä˝IJĸÄı¯ÈUTı"¯Ä@Ä@Ä@Ä@ı# ˘ ˛ ˝ ˛ ˛ı"¯˛A˛@˛A˛Aı$ ˘    ı¯Ä˝IJĸÄı¯ÈUTı"¯Ä@Ä@Ä@Ä@ı# ˘ ˛ ˝ ˛ ˛ı"¯˛A˛@˛A˛Aı$ ˘    ı¯Ä˝IJĸÄı"¯˛A˛@˛A˛Aı ¯ËÃı# ˘ ˛ ˝ ˛ ˛ı"¯˛A˛@˛A˛Aı$ ˘    ı¯Ä˝IJĸÄı"¯˛A˛@˛A˛Aı ¯ËÃı# ˘ ˛ ˝ ˛ ˛ı"¯˛A˛@˛A˛Aı$ ˘    ı¯Ä˝IJĸÄı"¯˛A˛@˛A˛Aı ¯ËÃı# ˘ ˛ ˝ ˛ ˛ı"¯˛A˛@˛A˛Aı$ ˘    ı¯Ä˝IJĸÄı"¯˛A˛@˛A˛Aı ¯ËÃı# ˘ ˛ ˝ ˛ ˛ı"¯˛A˛@˛A˛Aı$ ˘    ı¯Ä˝IJĸÄı"¯˛A˛@˛A˛Aı"¯Ä@Ä@Ä@Ä@ı ˘È"$ı"¯˛A˛@˛A˛Aı$ ˘    ı¯Ä˝IJĸÄı"¯˛A˛@˛A˛Aı"¯Ä@Ä@Ä@Ä@ı ˘È"$ı"¯˛A˛@˛A˛Aı$ ˘    ı¯Ä˝IJĸÄıò2¿ç¿ç[kõ¯"¯˛A˛@˛A˛Aı"¯Ä@Ä@Ä@Ä@ı ˘È"$ı"¯˛A˛@˛A˛Aı$ ˘    ı¯Ä˝IJĸÄı"¯˛A˛@˛A˛Aı"¯Ä@Ä@Ä@Ä@ı ˘È"$ı"¯˛A˛@˛A˛Aı$ ˘    ı¯Ä˝IJĸÄı"¯˛A˛@˛A˛Aı"¯Ä@Ä@Ä@Ä@ı# ˘ ˛ ˝ ˛ ˛ı¯ÈUTı$ ˘    ı¯Ä˝IJĸÄı"¯˛A˛@˛A˛Aı"¯Ä@Ä@Ä@Ä@ı# ˘ ˛ ˝ ˛ ˛ı¯ÈUTı$ ˘    ı¯Ä˝IJĸÄı"¯˛A˛@˛A˛Aı"¯Ä@Ä@Ä@Ä@ı# ˘ ˛ ˝ ˛ ˛ı¯Èˇ¸ı ›ı‹ı‹ı¯Èı ˘Èı¯Èı ˘Èı¯Èı¯Èı¯Èı ˘Èı¯È ı ˘Èı¯¿Í8ı˜͡‡ı
  6657. ÎÛı  ÏÛı
  6658. ÎÛı  ÏÛı
  6659. ÎÛı
  6660. ÎÛı
  6661. ÎÛı  ÏÛı
  6662. ÎÛı  ÏÛı
  6663. ÎÛı
  6664. ÎÛı
  6665. ÎÛı  ÏÛı‹ı ›ı ÎÙı ÎÅÙıÌöTØÊıı Ó&◊)ˇııÌ%T©çııò2@ç@çõk€¯ Ó'ˆıı
  6666. ÍÙı
  6667. Í Ùı‹ı ›ı‹ı ›ı‹ı‹ı‹ı ›ı‹ı ›ı‹ı‹ı‹ı ›ı›UPı›30ıœœœœœœœœœœœœœœœœ¸ûa¿`ò˛pÄC‰¸H Ä$êIJÄÄĉ¸HAE˛¿ ˛Ä¸DÅÖÌhÄ@pÄ„√L◊Ä˸Eч3E3@ àÄñŵ"@˸Öà@"J#Ä&à¡Å&$@˸êÄIíƒ@êAiNtÄ˸‡c8süCÉÄ`‡èI´Á ı@¯Á ı@¯Á ıįÁœœœ¸` 0¿¿x͸ 0˝@ ¸$Á¸ @P Ä ¸BÁ¸    „ôD
  6668. Q¶?q«∞$â©dÄB—π'·¿Ï¸§∂ö
  6669. íIe")–,¥Ÿ6§ÄBbI,¶ÄϸB(ú $PJ$$êE8ä'-ÑDKIDÄϸiK‡$ÛõDS ÜA H6àÑÌìcθ:Nuú„LÚCù"9w$!ÉIGÎÚ˚ ˝ÄÏÊÄÏÊÎœœœ¸IJ ‡˛0`Å˛¿Îò2@Äç@Äç€k¯¸ĸ    %˝ C˛@θ˚Eê˛@B@Äθ4›0Åœƒ E`˜…1DB8„Çà'Ä̸&”B\ö: J$IföÇD    Dç4“@̸$ìÅ äZHúDB8‰@̸"y4¶ "@îHlõ‡ DHâ¡Ä̸8!©#á?ú<¡ÅdpHÂú2é0,é 8ÎÏÛ¯ ˛ÏÛ¯ ˛ÏÛĢp˛Ïœœœœœœœœœœœœœœœœœ¸˛p¡Ä·¸ Ä@ ‡¸ÄÄ
  6670. @„¸    8˘<
  6671. kÇ–åÁh‰¸”I 1cRH∞‰¸íE
  6672. (@!"C†P†‰¸ aÜí¨Ä!BDÑ&ë@‰¸8„ÑflI‰g¬áÉòé@‰ ˚D˛‹˚Hÿ˙„∞ÿœœœ¸Ä@¸p‡¸Äĸ ‡¸
  6673. Ä@‡¸
  6674. y ¶yÆ&ÄO·¸     %4 "⁄$§”E$·¸ F8 BíED‚ä@·¸ !K@#E&JYãL·¸g¨≤89$≥ˉ!“0Ä‚˚ Ä˝Ä fl ˚ Ä˝Ä‹ ˚q¿˛¿‹œœœ¸Ä@§¸ ·¸ÄÄl¸$·¸
  6675. ÄH Ä"·¸
  6676. 8·H—ˆõ«h0B·¸ DñÇHRc$à∞B·¸ "Öê°"Dê†D·¸ !/âhŸ,ƒO@H·¸ gñpáë˜D5@Ò0·œò2Ä¿çÄ¿çk[¯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2¿ç¿ç[kõ¯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@ç@çõk€¯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@Aç@Aç€k‹¯œˇ3‰@ˇ ˇˇˇˇ@
  6677. ˇ·ˇ‚7^
  6678. 4H\, Palatino&e.3+ä"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@äDrawing4⁄ä˙(‡äAbout QuickDraw
  6679. (‡ 93
  6680. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6681. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6682.  
  6683.  
  6684.  
  6685.  
  6686.  
  6687. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  6688. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6689. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6690.  
  6691.  
  6692.  
  6693.  
  6694.  
  6695. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˝ˇ˛ˇ    ˛ˇˇ˛ˇ
  6696. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  6697. 4È4fl?òÄ
  6698. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6699. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6700.  
  6701.  
  6702.  
  6703.  
  6704.  
  6705. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˛˙ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ¸˛ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝ˇˇ˛
  6706. ˛ˇˇˇˇ
  6707. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜    ˇ˛ˇ˛ ˇˇ˛ˇˇ ˇˇ˛ˇˇ˚ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  6708. Courier.°dONLNd\Æhÿ(eÆvisRgn:°dONLNd \hD)Z
  6709. RgnHandle;°dONLNd\Ph∞)H{visible region}°dONLNd-jÆvfi(sÆclipRgn:°dONLNd:jvD)Z
  6710. RgnHandle;°dONLNdHjPv∂)H{clipping region}°dONLNd\xÆÑ“(ÅÆbkPat:°dONLNdgxÑ8)ZPattern;°dONLNdsxPÑ»)H{background pattern}°dONLNdäÜÆífi(èÆfillPat:°dONLNdóÜí8)ZPattern;°dONLNd£ÜPí§)H{fill pattern}°dONLNd¥îƆ“(ùÆpnLoc:°dONLNdøî†,)ZPoint;°dONLNd…îP†§)H{pen location}°dONLNd⁄¢ÆÆÿ(´ÆpnSize:°dONLNdÊ¢Æ,)ZPoint;°dONLNd¢PÆå)H
  6711. {pen size}°dONLNd˝∞ƺÿ(πÆpnMode:°dONLNd    ∞º8)ZInteger;°dONLNd∞PºŒ)H{pen's transfer mode}°dONLNd-æÆ “(«ÆpnPat:°dONLNd8æ 8)ZPattern;°dONLNdDæP û)H{pen pattern}°dONLNdTÃÆÿ“(’ÆpnVis:°dONLNd_Ãÿ8)ZInteger;°dONLNdkÃPÿ∞)H{pen visibility}°dONLNd~⁄ÆÊÿ(„ÆtxFont:°dONLNdä⁄Ê8)ZInteger;°dONLNdñ⁄PÊ‘)H{font number for text}°dONLNdØËÆÙÿ(ÒÆtxFace:°dONLNdªËÙ,)ZStyle;°dONLNd≈ËPÙ‡)H{text's character style}°dONLNd‡ˆÆÿ(ˇÆtxMode:°dONLNdψ8)ZInteger;°dONLNd¯ˆP‘)H{text's transfer mode}°dONLNdÆÿ(ÆtxSize:°dONLNd8)ZInteger;°dONLNd)P»)H{font size for text}°dONLNd@Æfi(ÆspExtra:°dONLNdM,)ZFixed;°dONLNdWPû)H{extra space}°dONLNdg Æ,fi()ÆfgColor:°dONLNdt ,8)ZLongInt;°dONLNdÄ P,º)H{foreground color}°dONLNdï.Æ:fi(7ÆbkColor:°dONLNd¢.:8)ZLongInt;°dONLNdÆ.P:º)H{background color}°dONLNd√<ÆHfi(EÆcolrBit:°dONLNd–<H8)ZInteger;°dONLNd‹<PHí)H {color bit}°dONLNdÍJÆV(SÆ patStretch:°dONLNd˙JV8)ZInteger;°dONLNdJPV∂)H{used internally}°dONLNdXÆdfi(aÆpicSave:°dONLNd'Xd2)ZHandle;°dONLNd2XPdŒ)H{picture being saved}°dONLNdJfÆrfi(oÆrgnSave:°dONLNdWfr2)ZHandle;°dONLNdbfPr»)H{region being saved}°dONLNdytÆĉ(}Æ    polySave:°dONLNdátÄ2)ZHandle;°dONLNdítPÄŒ)H{polygon being saved}°dONLNd™ÇÆéÍ(ãÆ
  6712. grafProcs:°dONLNdπÇéJ)Z QDProcsPtr;°dONLNd»ÇPé¯)H{low-level drawing routines}°dONLNdÊêúú¥(ôúEND;°dONLNd̨ú∏*GrafPtr = ^GrafPort;°dONLNdƒä–•(ÕäThe fi°dONLNdƒ•–Õ)
  6713. elds of a °dONLNdƒÕ–˝)(GrafPort°dONLNdƒ˝–#)0     data strl°dONLNd#ƒ#–9)&uctur>`°dONLNd(ƒ9–J)e ar¿°dONLNd,ƒJ– )e maintained by QuickDraw%¿°dONLNdEƒ…–), and you should .°dONLNdV—ä›Ã(⁄änever write dirц°dONLNde—Û)Bectly into those fi†°dONLNdx—›/)Lelds. „¿°dONLNd~—.›4)Y§@°dONLNd—4›¢)ou can, and often must, rdONLNdò—¢› )n    ead the fie`°dONLNd¢—À›Ú))
  6714. elds of a .°dONLNd¨fiäÍ∫(ÁäGrafPort°dONLNd¥fi∫Í»)0 strl°dONLNd∏fi»Ífi)uctur>`°dONLNdΩfifiÍ{)&e. For example, it’s often useful to r¿°dONLNd„fi{͆)ùead the ¿°dONLNdÎfi†Í–)%portRect¿°dONLNdÛfi–Í÷)0 f·@°dONLNdıfi’Í˝)
  6715. ield of a °dONLNdˇÎä˜÷(Ùävariable of type °dONLNdÎ÷˜)LGrafPort°dONLNdΘi)0, because it gives the rR`°dONLNd0Îi˜õ)c ectangle ar$¿°dONLNd;Îõ˜)2ound the content ar˜ °dONLNdNÎÔ˜)Tea of a .°dONLNdV¯äÆ(äwindowé°dONLNd\¯Æ;)$ . (That information was used in …°dONLNd|¯;ë)çListing 1-1 on page ã°dONLNdê¯íó)W3ã°dONLNdë¯ó¸) to center a text string.)°dONLNd¨
  6716. äñ(ä8QuickDraw always performs drawing operations on the currLÄ°dONLNd‰
  6717. óÁ(óent graphics port. c°dONLNd˜
  6718. Á˝)PAs a °dONLNd¸ä#ç( ärE°dONLNd˝é#{)8esult, you should explicitly set the graphics port beforÄ°dONLNd5|#›)Óe doing any drawing. ·†°dONLNdJ‹#„)`A@°dONLNdK‰#˙) safe °dONLNdQ$ä0(-ästrategy is to save and later r?Ä°dONLNdp$    0)estor√°dONLNdu$0Ì)0e the original graphics port upon entry to any r臰dONLNd•$Ó0 )–outine °dONLNd¨1ä=¶(:äthat af|`°dONLNd≥1¶=Ÿ)fects the scrŸ °dONLNd¿1Ÿ=Ë)3een=¿°dONLNd√1È=Ó). =¿°dONLNd≈1Ó=) Listing 5-1fi°dONLNd–1=O).  shows an e‡°dONLNd€1P=k)4xampl¯°dONLNd‡1k=r)e.
  6719. `Hh4aHh"aH_
  6720. ˇ·ˇ‚7^    °dONLNd„Väa∂(^ä Listing 5-1°dONLNdÔVŒaÑ)D.Saving and restoring the current graphics port
  6721. .°dONLNdpä|t(yä'PROCEDURE DrawInPort(thePort: GrafPtr);°dONLNdG~úäÆ+VAR°dONLNdMåÆò‰+    origPort:°dONLNdZåˆò)HGrafPt°dONLNd`åò&)$r;°dONLNdcö䶮(£äBEGIN°dONLNdj®ú¥+GetPort(origPort);ˇˆ@ˇ ˇˇˇˇ@
  6722. ˇ·ˇ‚7^
  6723. 4*\¯, Palatino&e.3+l"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@lDrawing4⁄*˙¯
  6724. (‡*94    )BDrawing Shapes4^*¿¯,
  6725. Courier
  6726. .°dONLNd\~h‰(e~SetPort(thePort);°dONLNdx~Ñh*'{Do your drawing (erasing, etc.) here.}°dONLNd>î~†Í*SetPort(origPort);°dONLNdQ¢lÆÑ(´lEND;°dONLNdV∫lΔ*Notice that QuickDraw uses the °dONLNdu∫Δ+)ïGrafPtr°dONLNd|∫+Δk)* data type to rR`°dONLNdã∫kΔ·)@efer to graphics ports. For °dONLNdß«l”†(–l historical rR`°dONLNd≥«†”‘)4 easons, the R`°dONLNdø«‘”)4GrafPortR`°dONLNd««”*)0     data str>`°dONLNd–«*”@)&uctur¿°dONLNd’«@”Œ)#e is one of the few objects in the .°dONLNd¯‘l‡fl(›lMacintosh system softwar3`°dONLNd‘‡‡)t
  6727. e that’s r`°dONLNd‘‡)&eferrª °dONLNd‘‡*)ed tb‡°dONLNd#‘+‡E)o by aÔ °dONLNd)‘E‡Δ) pointer rather than a handle.
  6728. Á*¯4Ë*¯
  6729. *¯4*¯ *˛
  6730. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdHˇ*°(*Drawing ShapesˇˇˇˇˇˇU˛(5
  6731. .°dONLNdW#l/t(,lA°dONLNdX#t/˚)s you’ve seen, you can draw cirR`°dONLNdw#˚/=)ácles by calling R`°dONLNdá#=/s)B    FrameOvalR`°dONLNdê#s/î)6. The V6†°dONLNdó#ì/‡) enn Diagrammer .°dONLNd¶0l<o(9l=application uses code like this to draw the outlines of the fiE@°dONLNd‰0p<à(9pve cirR¿°dONLNdÍ0à<ö)cles:.°dONLNdGlS(PlFOR count := 1 TO 5 DO°dONLNdU~az+*FrameOval(gGeometry^^.circleRects[count]);.°dONLNd3mlyÉ(vlThe rÄ¿°dONLNd8mÉyø)ectangles defi憰dONLNdFmøyÒ)< ning the cir”‡°dONLNdRmÒy )2cles arx °dONLNdYmy%)e stor{†°dONLNd_m%yt)ed in an array of rn‡°dONLNdrmtyÍ)Oectangles that is one of the .°dONLNdèzlÜs(Élfi°dONLNdëzsÜÏ)elds of an application-defi°dONLNd¨zÏÜ")y ned data strl°dONLNd∏z"Ü8)6uctur>`°dONLNdΩz8Üa)
  6732. e of type >`°dONLNd«zaÜØ))MyGeometryRec>`°dONLNd‘zØܺ)N. V"†°dONLNd◊zªÜÃ) enn .°dONLNd€álì(êl(Diagrammer allocates just one of these rk@°dONLNdáì/)±ecorfl†°dONLNdá/ì°)ds when the application fiú¿°dONLNd!á¢ìÓ)srst starts up. The .°dONLNd4îl†µ(ùlglobal variable °dONLNdDÎ)I    gGeometry°dONLNdMîΆH)6 is a handle to that rR`°dONLNdcîH†Z)]ecor$¿°dONLNdgîZ†c)d.°dONLNdj´l∑~(¥lVAR°dONLNdoπ~≈∫+
  6733. gGeometry:°dONLNd}πΔ≈)HMyGeometryHnd;°dONLNdíπD≈Ú)~{handle to a geometry record}.°dONLNd∞—l›ö(⁄l Listing 5-2 @°dONLNdª—õ›˜)/ shows part of the strÙ°dONLNd——˜›)\uctury‡°dONLNd÷—›8) e of this rã°dONLNd·—8›J))ecorˇ`°dONLNd—J›R)d.
  6734. *¯4*¯"*_
  6735. ˇ·ˇ‚7^    °dONLNdˈlò(˛l Listing 5-2°dONLNdÙˆ∞Á)DThe structure P°dONLNdˆËí)8)of a record describing a document window’_P°dONLNd+ˆíæ)™
  6736. s geometry
  6737. .°dONLNd6*¢(*TYPE MyGeometryRec =°dONLNdL<*`+RECORD°dONLNdU,N8ú+circleRects: °dONLNdg,®8 )ZARRAY[1..5] OF Rect;°dONLNdÑ,J8Ï)¢{squares for the 5 circles}°dONLNd¢:NFê(CN circleRgns:°dONLNd≤:®F>)ZARRAY[1..5] OF RgnHandle;°dONLNd‘:JFÏ)¢{regions for the 5 circles}°dONLNdÚHNTñ(QN premiseRgns:°dONLNdH®T>)ZARRAY[1..8] OF RgnHandle;°dONLNd%HJTŒ)¢{regions for premises}°dONLNd>VNbÑ(_N    concRgns:°dONLNdLV®b>)ZARRAY[1..4] OF RgnHandle;°dONLNdnVJb⁄)¢{regions for conclusion}°dONLNdâdNp“(mN{other fields omitted}°dONLNd°r<~T({<END;°dONLNdßÄ<åˆ*MyGeometryPtr = ^MyGeometryRec;°dONLNd»é<öˆ*MyGeometryHnd = ^MyGeometryPtr;ˇ4V@ˇ ˇˇˇˇ@
  6738. ˇ·ˇ‚7^
  6739. 4H\, Palatino&e.3+ä"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@äDrawing4⁄ä˙(‡äDrawing Shapes
  6740. (‡ 95
  6741. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6742. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6743.  
  6744.  
  6745.  
  6746.  
  6747.  
  6748. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  6749. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6750. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6751.  
  6752.  
  6753.  
  6754.  
  6755.  
  6756. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˝ˇ˛ˇ    ˛ˇˇ˛ˇ
  6757. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  6758. 4È4fl?òÄ
  6759. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6760. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6761.  
  6762.  
  6763.  
  6764.  
  6765.  
  6766. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˛˙ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ¸˛ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝ˇˇ˛
  6767. ˛ˇˇˇˇ
  6768. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜    ˇ˛ˇ˛ ˇˇ˛ˇˇ ˇˇ˛ˇˇ˚ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\äh£(eäThis r‹Ä°dONLNd\£hµ)ecorP‡°dONLNd
  6769. \∂h)Ld contains all the information needed to perform graphics operations on the °dONLNdViäuë(räVú`°dONLNdWiêu1) enn diagram in a document windowd`°dONLNdwi1uO)°. The fi¨‡°dONLNdiOul)elds ar¸†°dONLNdÜilu)$e initialized at application launch .°dONLNd™väÇ (ätime by the application-defi°dONLNdΔv Ç")Çned rR`°dONLNdÀv"Ç@)outine ,
  6770. CourierR`°dONLNd“v@Çî)DoInitGeometry6†°dONLNd‡vìǬ)S , shown in 6†°dONLNdÎv¬ÇÚ)/ Listing 5-36†°dONLNdˆvÚÇı)0.
  6771. •H≠4¶H≠"¶H_
  6772. ˇ·ˇ‚7^    .°dONLNd¯õä¶∂(£ä Listing 5-3°dONLNdõŒ¶H)D Initializing the geometry record
  6773. .°dONLNd%µH¡fi(æHPROCEDURE DoInitGeometry;°dONLNd?√Hœf*BEGIN°dONLNdF—Z›¬+<{Allocate the memory needed to hold the diagram's geometry.}°dONLNdÑflZÎÊ*BgGeometry := MyGeometryHnd(NewHandleClear(sizeof(MyGeometryRec)));°dONLNd…˚Z‰*IF gGeometry = NIL THEN°dONLNdÓ˚Vû)¸ {make sure w°dONLNd˙˚ûŒ)He have t°dONLNd˚Œ)0    he memory°dONLNd ˚
  6774. )6}°dONLNd    l(lDoBadError(eNotEnoughMemory);°dONLNd9    Vt)Í{see °dONLNd>    tÏ)Listing 9-5 on page °dONLNdR    Ï˛)x178°dONLNdU    ˛)}°dONLNdY%Z1z(.Z0{Set up the rectangles that define the circles.}°dONLNdã3Z?fi*FOR count := 1 TO 5 DO°dONLNd§AlM‘+<gGeometry^^.circleRects[count] := MyGetIndCircleRect(count);°dONLNd„]Zih(fZ-{Set up the regions that the circles define.}°dONLNdkZwÿ*DoSetupCircleRegions;°dONLNd*áZìí*4{Set up the overlapping regions within the circles.}°dONLNd`ïZ°fi*DoSetupOverlapRegions;°dONLNdw£HØ`(¨HEND;°dONLNd|ªä«û+BThe °dONLNdĪû«Ú)DoInitGeometry°dONLNdéªÚ«Ù)T °dONLNdèªÙ«˛)prR`°dONLNdëª˛«)
  6775. ocedur$¿°dONLNdóª«")e $¿°dONLNdôª"«Ü)allocates a geometry r˜ °dONLNdت֫ó)cecor…Ä°dONLNd≥ªó«Â)d and calls other .°dONLNd≈»ä‘œ(—äapplication-defi|‡°dONLNd’»–‘Á)Fned rx†°dONLNd⁄»Á‘T)outines to initialize the fi@°dONLNdˆ»U‘å)nelds of that rpÄ°dONLNd»å‘û)7ecor‰‡°dONLNd»û‘‡)d. First, it calls .°dONLNd’ä·ˆ(fiäMyGetIndCircleRect°dONLNd-’ˆ·I)l to determine the rR`°dONLNd@’I·‘)Sectangle bounding each of the f"‡°dONLNd_’‘·Ò)ãive cirı@°dONLNdf’·)cles.
  6776. ÔH˝4H˝    .°dONLNdlÓä˘ù(ˆäNote
  6777. ˇ·ˇ‚7^
  6778. .°dONLNdq˚äû*The °dONLNdu˚û
  6779. )MyGetIndCircleRect°dONLNdá˚
  6780. ^)l function is not defi°dONLNdú˚^™)Tned in this book. R`°dONLNdÆ˚™±)LYg`°dONLNdØ˚∞º)ou .°dONLNd≤ä∂(ä    could defi„ °dONLNdº∂L),!ne such a function in many ways. ı‡°dONLNd›LR)ñY∂`°dONLNdfiR∂)ou could determine in °dONLNdÙä»(ä advance wherÑ@°dONLNd»()>e in the window the fiH °dONLNd)9)ave r˝°dONLNd9ª)ectangles should be and then °dONLNd7ä+ò((ähar`°dONLNd:ô+>)&d-code that information in constants. E@°dONLNd`>+x)•Alternativelyª@°dONLNdmw+™)9 , you could °dONLNdy+ä7Q(4ä.calculate desirable positions dynamically at rp¿°dONLNdß+Q7í)«un time. The VÈ¿°dONLNdµ+ë7£)@enn °dONLNdπ7äC%(@ä!Diagrammer application uses the fi˜`°dONLNd€7%CÖ)õrst method, for speed.,Zapf Dingbats÷ °dONLNd˙:ãBê)fu
  6781. .°dONLNd¸HäT£(QäThen °dONLNdH£T˜)DoInitGeometry°dONLNdH˜Tã)T  calls two other application-defi°dONLNd0HãT°)îned rR`°dONLNd5H°T)outines to set up a number °dONLNdPUäaô(^äof rR`°dONLNdTUôa¯)egions in the windowg`°dONLNdhU˜a¸)^. g`°dONLNdjU¸a)The fig`°dONLNdpUa()rst, g`°dONLNduU(a†)DoSetupCircleRegionsg`°dONLNdâU†a∑)x, defig`°dONLNdèU∑a‘)ned in g`°dONLNdñU‘a) Listing 5-4g`°dONLNd°Ua    )0, .°dONLNd£bäní(käcrµ@°dONLNd•bínÆ)eates r ‡°dONLNd¨bØn‡) egions corrÔ@°dONLNd∑bfln4)0esponding to the ar}¿°dONLNd b5nñ)Vea inside each of the fiJ†°dONLNd‚bónØ)bve cirX °dONLNdËbØn‰)cles. These ræ¿°dONLNdıb‰n¸)5egionF¿°dONLNd˙b˝n )s ar»¿°dONLNd˛b n)e .°dONLNdoä{è(xäu°dONLNdoè{´)sed in °dONLNdo´{Ã)turn by °dONLNdoÃ{fi)!the °dONLNdofi{\)DoSetupOverlapRegions°dONLNd)o\{h)~ prR`°dONLNd,oh{Ö) ocedur$¿°dONLNd2oÖ{Ÿ)e to calculate the r˜ °dONLNdFoÿ{)Segion˜ °dONLNdKo{)s of .°dONLNdP|äà¿(Öäintersection.ˇà@ˇ ˇˇˇˇ@
  6782. ˇ·ˇ‚7^
  6783. 4*\¯, Palatino&e.3+l"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@lDrawing4⁄*˙¯
  6784. (‡*96    )BDrawing Shapes4^*¿¯
  6785. g*n¯4g*n¯"h*_
  6786. ˇ·ˇ‚7^°dONLNd\lgò(dl Listing 5-4°dONLNd \∞g¿)DDefiÄ °dONLNd\¿g)ning circular regions,
  6787. Courier
  6788. .°dONLNd&vlÇ&(lPROCEDURE DoSetupCircleRegions;°dONLNdFÑlê~*VAR°dONLNdKí~û¢+count:°dONLNdTí¥û‰)6Integer;°dONLNd]†l¨ä(©lBEGIN°dONLNddÆ~∫+FOR count := 1 TO 5 DO°dONLNd|º~»ú*BEGIN°dONLNdÑ ê÷Ä+(gGeometry^^.circleRgns[count] := NewRgn;°dONLNdØÿꉿ*OpenRgn;°dONLNd∫ÊêÚå**FrameOval(gGeometry^^.circleRects[count]);°dONLNdÁÙêÄ*(CloseRgn(gGeometry^^.circleRgns[count]);°dONLNd~ñ( ~END;°dONLNdlx(lEN°dONLNdxÑ) D;°dONLNd(l4s(1lYï°dONLNd(r4Ü)ou crg`°dONLNd!(Ü4º) eate a new r9¿°dONLNd-(º4)6egion by calling the 9¿°dONLNdB(4;)[NewRgn9¿°dONLNdH(;4\)$ functio9¿°dONLNdP(\4å)!
  6789. n, which a9¿°dONLNdZ(å4ˆ)0llocates storage in your °dONLNds5lA·(>lapplication heap for a strl°dONLNdç5·A˜)uuctur>`°dONLNdí5˜A )
  6790. e of type >`°dONLNdú5 AD))Region>`°dONLNd¢5DA])$ and r¿°dONLNd®5]A•)eturns a handle ¿°dONLNd∏5•AÀ)H    (of type ˇˇ√|°dONLNd¡BlN¢(Kl    RgnHandleˇˇÎ‘°dONLNd B¢Nß)6) k‘°dONLNdÃB®NÕ)    to that r‹°dONLNd’BŒN·)&egio‹°dONLNdŸB·NÈ)n.‹°dONLNd€BÈN)     The newlÌÑ°dONLNd‰BN)+y cŸX°dONLNdÁB N$) r´∏°dONLNdËB$NC)eated riÏ°dONLNdÔBDNÑ) egion is empty%‘°dONLNd˝BÑNé)@. T&®°dONLNdBéN…)
  6791. o add to the r®X°dONLNdB…N˜); egion, you °dONLNdOl[í(Xl    call the °dONLNd"Oí[º)&OpenRgn°dONLNd)Oº[»)* prR`°dONLNd,O»[Â) ocedur$¿°dONLNd2OÂ[ã)%e and then draw the outline of the ar˜ °dONLNdWOä[˜)•ea you want enclosed by °dONLNdo\lhÇ(elthe rR`°dONLNdt\Çhü)egion. Ù°dONLNd{\ûh‚)As you can see, Ù°dONLNdã\‚hZ)DDoSetupCircleRegionsÙ°dONLNdü\Zh±)x indicates the desirΔ`°dONLNd≥\±h»)Wed arò¿°dONLNd∏\»h‚)ea by °dONLNdæilu†(rl calling the °dONLNd i†u÷)4    FrameOval°dONLNd”i÷u‚)6 prR`°dONLNd÷i‚uˇ) ocedur$¿°dONLNd‹iˇu&)
  6792. e on a cir˜ °dONLNdÊi%uM)&    cle’s defi˜ °dONLNdiMuf)(ning r…Ä°dONLNdˆifuΔ)ectangle. When you’rõ‡°dONLNd
  6793. iΔu‰)`e done ˇˇë®°dONLNdvlÇ(l#drawing that outline, you call the ˇ˛¥¯È°dONLNd4vÇ5)ôCloseRgnˇˇë®È°dONLNd<v5Ç@)0 prM¯°dONLNd?vAÇ^) ocedur X°dONLNdEv^Çfi)e, passing it a handle to the rÓP°dONLNddvfiǘ)Äegion .°dONLNdjÉlèè(ål    to close..°dONLNdtïl°÷*If you simply want to crR`°dONLNdåï÷°¯)jeate a r$¿°dONLNdîﯰM)"egion that’s empty    °dONLNd¶ïL°à)T, you can call     °dONLNdµïà°¨)<NewRgn    °dONLNdªï¨°±)$,     °dONLNdΩï±°€)OpenRgn    °dONLNdƒï€°Û)*, and °dONLNd ¢lÆñ(´lCloseRg°dONLNd—¢ñÆú)*n°dONLNd“¢úÆÀ)
  6794.  without d°dONLNd‹¢ÀÆ)/oing any drawin°dONLNd΢Æ)Ig.°dONLNdÓπl≈fi(¬lmyRegion := NewRgn;°dONLNd π2≈¬)Δ{create an empty region}°dONLNd%«l”ú(–lOpenRgn;°dONLNd.’l·fi*CloseRgn(myRegion);°dONLNdBÌl˘Ä*The °dONLNdFÌĢ˛)DoSetupOverlapRegions°dONLNd[Ì˛˘
  6795. )~ prR`°dONLNd^Ì
  6796. ˘') ocedur$¿°dONLNddÌ'˘C)e, defi$¿°dONLNdkÌC˘`)ned in $¿°dONLNdrÌ`˘ê) Listing 5-5$¿°dONLNd}Ìê˘ª)0 , uses the $¿°dONLNdà̪˘«)+cir˜ °dONLNdãÌΔ˘fl) cular °dONLNdë˙lp(lrR`°dONLNdí˙p†)
  6797. egions defiR`°dONLNdù˙†ø)0ned by R`°dONLNd§˙ø1)DoSetupCircleRegionR`°dONLNd∑˙17)rsR`°dONLNd∏˙7=) tR`°dONLNd∫˙=V)o defiR`°dONLNd¿˙Vx)ne the r$¿°dONLNd»˙xß)" egions corr˜ °dONLNd”˙¶Ú).esponding to the .°dONLNd‰lt(larE°dONLNdÊuñ)    eas defiΩ¿°dONLNdÓñ )!ned by the overlapping cirì¿°dONLNd )uclesÛ°dONLNd ).
  6798. 6*>¯47*>¯"7*_
  6799. ˇ·ˇ‚7^    °dONLNd,l7ò(4l Listing 5-5°dONLNd,∞7¿)DDefiÄ °dONLNd,¿7›)ning no†°dONLNd%,fi7Á)ncÑp°dONLNd',Á7)    ircular regions
  6800. .°dONLNd7FlR®(Ol
  6801. PROCEDURE °dONLNdAF®R&)<DoSetupOverlapRegions°dONLNdVF&R,)~;°dONLNdXTl`~(]lVAR°dONLNd]b~n¥+    myRegion:°dONLNdjbΔn)H
  6802. RgnHandle;°dONLNd{bDn∞)~{a scratch region}°dONLNdèp~|¢(y~count:°dONLNdôpΔ|ˆ)HInteger;°dONLNd¢~lää(álBEGIN°dONLNd©å~ò+FOR count := 1 TO 8 DO°dONLNd åDòÊ)Δ{create new, empty regions}°dONLNdËöê¶Æ(£êBEGIN°dONLNdÒ®¢¥ò+)gGeometry^^.premiseRgns[count] := NewRgn;ˇ-R@ˇ ˇˇˇˇ@
  6803. ˇ·ˇ‚7^
  6804. 4H\, Palatino&e.3+ä"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@äDrawing4⁄ä˙(‡äDrawing Shapes
  6805. (‡ 97
  6806. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6807. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6808.  
  6809.  
  6810.  
  6811.  
  6812.  
  6813. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  6814. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6815. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6816.  
  6817.  
  6818.  
  6819.  
  6820.  
  6821. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˝ˇ˛ˇ    ˛ˇˇ˛ˇ
  6822. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  6823. 4È4fl?òÄ
  6824. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6825. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6826.  
  6827.  
  6828.  
  6829.  
  6830.  
  6831. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˛˙ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ¸˛ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝ˇˇ˛
  6832. ˛ˇˇˇˇ
  6833. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜    ˇ˛ˇ˛ ˇˇ˛ˇˇ ˇˇ˛ˇˇ˚ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  6834. Courier.°dONLNd\¿h(e¿OpenRgn;°dONLNd j¿v∂*)CloseRgn(gGeometry^^.premiseRgns[count]);°dONLNd8xÆÑΔ(ÅÆEND;°dONLNd?îú†(ùúmyRegion := NewRgn;°dONLNd]îb†¯)Δ{create a scratch region}°dONLNdx¢úÆÃ(´úOpenRgn;°dONLNdÇ∞úº*CloseRgn(myRegion);°dONLNdòÃúÿÏ*8{Calculate the overlap regions in the premises diagram.}°dONLNd“⁄úÊ2*HLock(Handle(gGeometry));°dONLNd˜⁄tÊ⁄)ÿ{lock the handle}°dONLNd
  6835. ËúÙ(ÒúWITH gGeometry^^ DO°dONLNd ˆÆÃ+BEGIN°dONLNd)¿‡+0DiffRgn(circleRgns[1], circleRgns[2], myRegion);°dONLNd]¿Ê*1DiffRgn(myRegion, circleRgns[3], premiseRgns[1]);°dONLNdì.¿:‡*0SectRgn(circleRgns[1], circleRgns[2], myRegion);°dONLNd«<¿HÊ*1DiffRgn(myRegion, circleRgns[3], premiseRgns[2]);°dONLNd˝X¿d‡*0DiffRgn(circleRgns[2], circleRgns[1], myRegion);°dONLNd1f¿rÊ*1DiffRgn(myRegion, circleRgns[3], premiseRgns[3]);°dONLNdgÇ¿é‡*0SectRgn(circleRgns[1], circleRgns[3], myRegion);°dONLNdõê¿úÊ*1DiffRgn(myRegion, circleRgns[2], premiseRgns[4]);°dONLNd—¨¿∏‡*0SectRgn(circleRgns[1], circleRgns[2], myRegion);°dONLNd∫¿ΔÊ*1SectRgn(myRegion, circleRgns[3], premiseRgns[5]);°dONLNd;÷¿‚‡*0SectRgn(circleRgns[2], circleRgns[3], myRegion);°dONLNdo‰¿Ê*1DiffRgn(myRegion, circleRgns[1], premiseRgns[6]);°dONLNd•¿ ‡*0DiffRgn(circleRgns[3], circleRgns[1], myRegion);°dONLNdŸ¿Ê*1DiffRgn(myRegion, circleRgns[2], premiseRgns[7]);°dONLNdÆ(Δ(%ÆEND;°dONLNd8úD>(AúHUnlock(Handle(gGeometry));°dONLNd:8bD‘)Δ{unlock the handle}°dONLNdOFúR(OúDisposeRgn(myRegion);°dONLNdoFbRÚ)Δ{dispose scratch region}°dONLNdàTä`¢(]äEND;ˇˇv–°dONLNdçläxù*The ˇ˛dpˆ–°dONLNdëlùx)DoSetupOverlapRegionsˇˇv–ˆ–°dONLNd¶lx&)~ pr@°dONLNd©l'xD) ocedur`°dONLNdØlDxW)e is r“`°dONLNdµlWxœ)emarkably straightforwarê°dONLNdÕl–x)yd. It initializes .°dONLNdflyäÖû(Çäthe r¢`°dONLNd‰yûÖ‚)egions in the prE†°dONLNdÙy„Ö[)Eemises diagram and also cr&`°dONLNdy[Ö—)xeates a temporary scratch ṙ°dONLNd)y—Ö)vegion. Then it .°dONLNd8ÜäíÁ(èäcalculates the seven °dONLNdMÜÁíÎ)]rR`°dONLNdNÜÎí)
  6836. egions of R`°dONLNdXÜí2))overlaR`°dONLNd^Ü2í>)p iR`°dONLNdaÜ>í¥) n that diagram by calling R`°dONLNd{Ü¥ífi)vSectRgnR`°dONLNdÇÜfiíÛ)* and °dONLNdáìäü¥(úäDiffRgn°dONLNdéì¥ü‡)*  on the cirR`°dONLNdôì‡ü˝),cular r$¿°dONLNd†ì˝ü*)
  6837. egions defı@°dONLNd™ì)üJ),ined in ı@°dONLNd≤ìJüz)! Listing 5-4ı@°dONLNdΩìzüì)0. The ı@°dONLNd√ììüΩ)SectRgnı@°dONLNd ìΩü…)* pr«†°dONLNdÕì…üÊ) ocedurö°dONLNd”ìÊü)e takes °dONLNd€†ä¨ı(©äthe intersection of two rR`°dONLNdÙ†ı¨~)k egions and places it into a thir$¿°dONLNd†~¨ä)âd r˜ °dONLNd†â¨∫) egion. The ˜ °dONLNd"†∫¨‰)1DiffRgn˜ °dONLNd)†‰¨)* pr…Ä°dONLNd,†¨) ocedurõ‡°dONLNd2†¨)e .°dONLNd4≠äπ¯(∂ätakes the portion of the fiD‡°dONLNdO≠˘π
  6838. )orst r˚‡°dONLNdT≠
  6839. πõ)"egion that is outside the second rE°dONLNdv≠úπ)íegion and places it into the ˇ.Ü@ˇ ˇˇˇˇ@
  6840. ˇ·ˇ‚7^
  6841. 4*\¯, Palatino&e.3+l"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@lDrawing4⁄*˙¯
  6842. (‡*98    )BDrawing Shapes4^*¿¯
  6843. °dONLNd\lh{(elthirA °dONLNd\|hà)d r°‡°dONLNd\àh†) egion)‡°dONLNd \°h¶). )‡°dONLNd\¶hæ)Figur¸†°dONLNd\Ωh—)e 5-7ö °dONLNd\“hA) shows how the overlap r4¿°dONLNd0\Bhj)p    egions ar>¿°dONLNd9\jhÇ)(e defizÄ°dONLNd?\Çh¡)ned by taking °dONLNdMilu(rl#intersections and unions of the thrè@°dONLNdpiu)óee cir¿ °dONLNdviu,)cles.
  6844. ó*®¯4ò*®¯"ò*]
  6845. ˇ·ˇ‚7^    °dONLNd|çlòñ(ïl
  6846. Figure 5-7°dONLNdáçÆòC)B&Calculating the overlap regions of a Vä`°dONLNd≠çCòu)ï enn diagram
  6847. ⁄*˯4€*˯°dONLNdπŸl‰(·lNote
  6848. ˇ·ˇ‚7^
  6849. .°dONLNdæÊlÚí*The defi°dONLNdΔÊíÚ∫)&
  6850. nition of ,
  6851. Courier°dONLNd–Ê∫Ú8)(DoSetupOverlapRegions°dONLNdÂÊ8Ú`)~
  6852.  given in °dONLNdÔÊ`Úê)( Listing 5-5°dONLNd˙ÊêÚú)0 is .°dONLNdˇÚl˛W(˚l7not complete. It omits calculations of the conclusion r´ °dONLNd6ÚW˛•)Îegions and of the .°dONLNdH˛l
  6853. s(lfi°dONLNdJ˛s
  6854. ∂)elds omitted frR`°dONLNdY˛∂
  6855. ◊)Com the R`°dONLNd`˛◊
  6856. %)!MyGeometryRecR`°dONLNdm˛%
  6857. K)N     data str>`°dONLNdv˛K
  6858. a)&uctur¿°dONLNd{˛a
  6859. z)e defi¿°dONLNdÅ˛z
  6860. ó)ned in .°dONLNdà
  6861. lö(l Listing 5-2 @°dONLNdì
  6862. õù)/.,Zapf Dingbats†@°dONLNdù¢ß)u
  6863. °dONLNdül'∞($lNow that the Vk@°dONLNd≠Ø'S)C"enn Diagrammer application has defi†°dONLNd–T'ü)•ned the various r.†°dONLNd·ü'·)Kegions in the V' °dONLNd‡'Ú)Aenn °dONLNdÙ(l4
  6864. (1l%diagram, it’s easy to draw in those r Ä°dONLNd(
  6865. 4Ü)ûegions. For instance, to shad≠ °dONLNd6(á4ë)}e t9 °dONLNd9(í4Ó) he very center of the .°dONLNdO5lAº(>ldiagram, you coul°dONLNd`5ºAÍ)P d call the °dONLNdk5ÍA).FillRgn°dONLNdr5A )* prR`°dONLNdu5 A=) ocedur$¿°dONLNd{5=Ax)e, as follows:°dONLNdäLlXÊ(Ul?FillRgn(gGeometry^^.premiseRgns[5], gEmptyPats[gEmptyIndex]^^);.°dONLNd dlpá*This fi$@°dONLNd—dàp¡)lls the specifi}Ä°dONLNd‡d¡p“)9ed r߇°dONLNd‰d“p&)egion with the curr`°dONLNd˜d'pâ)Uent emptiness pattern.
  6866. ®k¡¯4ßj®kò2@ç@ç®k˯œœ?·ˇÒ?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Òò2@Äç@ÄçËk(¯?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Òò2Ä¿çÄ¿ç(kh¯?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Òò2¿ç¿çhk®¯?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Òò2@ç@ç®k˯?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò?·ˇ¯Ò·ˇ¯Òœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@Äç@ÄçËk(¯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2Ä¿çÄ¿ç(kh¯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2¿ç¿çhk®¯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@ç@ç®k˯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@ç@ç®k˯œœ‡30Ò‡Ò ·Ò‡Ò‡Ò‡Ò ·Ò‡Ò ·Ò‡Ò‡Ò‡Ò ·Ò‡Ò ·Ò‡Ò‡Ò‡Ò ·Ò‡Ò ·Ò‡Ò¯U@˜T¯Ò¯à ¿˘L¿Ã˘Ò ˙"˛˙˝ ˙Ò˙@˛@˚˝˙Ò ˚¸0¸0˝˙Ò˙˚Ä˝˚à˚Ò˚@˚@˝˚˚Ò˚˙˝¿˙ĸÒ Ù˛ÛÒ˚P˙˛˘P¸Ò ˝¯ ˘¸Ò
  6867. ÚÒ¸¯@˘@˝Ò¸¯ı@˝Ò ˝ ¯˜ ˝Ò¸@˜@˜˝Ò ˛ˆ 0ÚÒ‡Ò˝ˆ@˜˝Ò˝ ˆĈ¿˛Ò ˛ ˆı ˛Ò˝@ˆı˛Ò  Â˛Ò˝Äˆı˛Ò˛ıı˛Ò
  6868. Ò@ÒÒ  ‰Ò˛Ùˆ˛Ò ˆÚÒ‡ÒÚıÒ˛@ˆ ĈÒ ·ÒÚ@ˆÒ ı0 ÛÒ‡Òı@ÛÒı@ÛÒ ·ÒÚˆÒò2@Äç@ÄçËk(¯  ÙÔÒ
  6869. „ÒˆÒ@Ò‡Ò  ˆÒ Ò@ˆ˛ıÒ
  6870.  „ÒÛ˝ÄˆÒ@Ò@ÙÒ¿ˆ˝@ˆÒ ·ÒÛ˝@ˆÒ ı˝ ÙÒ‡Ò ‰Ò‡Ò ı ÒÒÛ@˝ˆÒ ˆÒ
  6871. ÓÙÒı@ÒÒı@˝ÙÒ ·Òı@ÒÒ
  6872.  „ÒÛÄ˝ıÄÒ    ‚ÒıÄ˝ıÄÒ ·ÒÙÒ ·ÒıÄÄÒ
  6873. ÓÙÒıÄ˝ıÄÒ ·ÒÙÒ ·ÒÛÄ˝ıÄÒ    ‚ÒıÄ˝ıÄÒ ·Òı@ÒÒ
  6874.  „Ò
  6875. ÓÙÒı@ÒÒı@˝ÙÒ     ‚ÒÛ@˝ˆÒ ı 30ˆÒÚààÛÒı˛ÙÒÛ¿˝¿ˆÒ ı¸"ÙÒˆP˝A@˜Ò ˆ¸0ıÒĈ¸˜Ò@¯˚@ıÒ@¯˝Ä¿¯Ò ˆ ˘ ˆÒ@˘˛¯Ò  ˘˚¯0Òˆ˜Ä˜Ò˘˚˛@˘@Ò˘@˚˛@˘@Òò2Ä¿çÄ¿ç(kh¯  Ï ˜Ò˙˙˛˜Ò ¯ˆ˙Ò˜˙ÛÒ˜˝@˛˙Ò
  6876. Í¿¯Ò ¯ ˝  ˝ ˚Ò˙@˝@˝˚Ò ˘¸˙¯ÒÚÄ˝˚Ò˛@¸¸¸˚Ò¯¸˙˚@Ò Û¸¯Ò˛¸¸¸˚@Ò ˘0Ó˛Ò
  6877. ÚÒ˛¸@˙˚@˝˛Ò˝Ä˝@˙@ˆ˛Ò  Í ˘Ò˝@˛˙˙˝˛Ò ˛0˛˙ı0˛Ò˝Ó˝Ä˛Ò˝ˆ@˚˛˝Ò˝˛˙@˚˘Ò ˛ˆ  ˚˛˝Ò¸@˙@˚˛˝Ò ˝ ¯˘˛0˝Ò˘ÒÄ˙Ò¸˚˜@˝Ò¸¯¿˚¿Ä˝Ò ˙ ˚  ˘¸Ò˚@˙@˚@¸Ò ¸0 ¸˛˚  ¸Ò˚˙˝Ä˙ĸÒ˚@¸P˝P˚˚Ò˙¿@¸¿˝ ˚ ˚Ò ˚¸¸¸  ˚Ò˙@˝P˚P˝˙Ò ˙0˛˙˝0˙Ò˘àÄà˘àà˙Ò˙UU¯UU@˘Ò˜ ıÄ˙Ò ·Ò˙˙Ò  ˚ËÒ‡Ò
  6878. Ë˙Ò
  6879. Ë˙Ò  ˚ËÒ
  6880. Ë˙Ò  ˚ËÒ‡Ò
  6881. Ë˙Ò˙˙Ò  È˙Ò
  6882. ˙ËÒ  È˙Ò‡Ò
  6883. ˙ËÒ˙˙Ò  ˚ËÒ
  6884. Ë˙Ò  ˚ËÒ‡Òò2¿ç¿çhk®¯
  6885. Ë˙Ò
  6886. Ë˙Ò  ˚ËÒ
  6887. Ë˙Ò  ˚ËÒ
  6888. Ë˙Ò
  6889. ˙ËÒ
  6890. Ë˙Ò ·Ò˙˙Ò  È˙Ò
  6891. ˘ÄÈÒ
  6892. Ë˙Ò
  6893. ˘¿ÈÒ  È ˙Ò
  6894. ˘@ÈÒ ˙ Ò ˙Ò‡Ò
  6895. Ë@˙Ò
  6896. Ë¿˙Ò ·Ò˘Ú˘Ò  Í˘Ò
  6897. ˘ÈÒ
  6898. ˘ÈÒ˘Ú˘Ò  ˙ÈÒ˘Ú˘Ò  ˙ÈÒ¯ÄÛ˘Ò
  6899. È˘Ò
  6900. ¯¿ÍÒ ˘ Û ˘Ò
  6901. È@˘Ò  ˘0ÍÒ¯ÛĢÒ¯Ù¯Ò¯Ù¯Ò  ˘ÍÒ
  6902. ¯ÍÒ ˘Ù¯Ò
  6903. ˜ÄÎÒ˜@ı@¯Ò
  6904. Í¿¯Ò ·Ò˜ˆ˜Ò ¯ˆ˜ÒˆÄ˜˜Òˆ@˜˜Òˆ@˜@˜Ò  ˜ ÏÒˆ¯ˆÒ ˜¯ˆÒıĢˆÒı@˘PˆÒı˘¿ˆÒ  ÓıÒı˙ıÒ ˆ˙0ıÒÙ˚ÄıÒÙ¸ÙÒÛ¿˝HÙÒ Ù"˛ÛÒÛTTÛÒò2@ç@ç®k˯ Û32ÚÒ‡Ò‡Ò‡Ò ·Ò‡Ò ·Ò‡Ò‡Ò‡Ò ·Ò‡Ò ·Ò‡Ò‡Ò‡Ò ·Ò‡Ò ·Ò‡Ò‡Ò ·Ã»Ò·30Òœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@Äç@ÄçËk(¯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2Ä¿çÄ¿ç(kh¯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2¿ç¿çhk®¯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœò2@ç@ç®k˯œœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœœˇ≤^@ˇ ˇˇˇˇ@
  6905. ˇ·ˇ‚7^
  6906. 4H\, Palatino&e.3+ä"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@äDrawing4⁄ä˙(‡äDrawing Bit Images
  6907. (‡ 99
  6908. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6909. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6910.  
  6911.  
  6912.  
  6913.  
  6914.  
  6915. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  6916. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6917. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6918.  
  6919.  
  6920.  
  6921.  
  6922.  
  6923. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˝ˇ˛ˇ    ˛ˇˇ˛ˇ
  6924. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  6925. 4È4fl?òÄ
  6926. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  6927. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  6928.  
  6929.  
  6930.  
  6931.  
  6932.  
  6933. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˛˙ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ¸˛ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝ˇˇ˛
  6934. ˛ˇˇˇˇ
  6935. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜    ˇ˛ˇ˛ ˇˇ˛ˇˇ ˇˇ˛ˇˇ˚ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  6936. ^Hx4^Hx
  6937. àHê4âHê äHä
  6938. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNduHà◊(ÉHDrawing Bit ImagesˇˇˇˇˇˇU˛(É5
  6939. °dONLNdô䕧(¢äThe Vÿ °dONLNdô£• )Oenn Diagrammer application uses bit images to draw several parts of a document °dONLNdg¶ä≤Æ(Øäwindowé°dONLNdm¶Æ≤›)$ , including,Zapf Dingbats°dONLNdyºä√è(¬än
  6940. °dONLNd{πñ≈¥) the too
  6941. ¿°dONLNdÇπµ≈æ)l s∞ °dONLNdÖπæ≈t)    &ymbols at the top of a document window°dONLNd¨Œä’è(‘än
  6942. °dONLNdÆÀñ◊¨) the fiÍ °dONLNd¥À¨◊ª)gurE`°dONLNd∑Àº◊è),e and mood symbols at the bottom of a window°dONLNd‰‡äÁè(Êän
  6943. °dONLNdÊ›ñÈ+) !the existence symbol within the VòÄ°dONLNd›*Èz)îenn diagram itself°dONLNdÓä˙¢(˜äFigurR¿°dONLNdÓ¢˙∂)e 5-8@°dONLNd$Ó∂˙L)# shows the location of these items.
  6944. H-4H-"H]
  6945. ˇ·ˇ‚7^    °dONLNdHä¥(ä
  6946. Figure 5-8°dONLNdSÃQ)BBit images in a document window
  6947. °dONLNds0ä<æ(9ä The standarÌ@°dONLNd~0æ<M)4!d way to draw a bit image is to rˆ °dONLNdü0M<¿)èead into memory the appr\†°dONLNd∑0¡<)topriate bit data .°dONLNd»=äI⁄(Fäand then call the ,
  6948. Courier°dONLNd⁄=⁄I
  6949. )PCopyBits°dONLNd‚=
  6950. I)0 rR`°dONLNd‰=I∫)&outine to move the data into the desir$¿°dONLNd
  6951. =∫I )™ed position in the .°dONLNdJäV„(Sädestination windowû °dONLNd/J‚V)X. The Vˆ@°dONLNd6JVì)enn Diagrammer application storfl°dONLNdUJìV‚)ìes the bit data in r“@°dONLNdiJ‚V˙)OesourÄ°dONLNdnJ˚V)ces of ˇˇçZ.°dONLNduWäc†(`ätype ˇ˛®Z°dONLNdzW°c≈)'ICON'ˇˇçZZ°dONLNdÄW≈cp)$'. Then it calls its own application-defi]v°dONLNd®WpcÖ)´ned rΩ0°dONLNd≠WÖc¢)outine ˇ˛®Jä°dONLNd¥W£cfl)
  6952. DoPlotIconˇˇçZJä°dONLNdæWflc)< to move the .°dONLNdÀdäpû(mäapprI@°dONLNdœdüpÑ)2opriate portion of the icon into a document window†°dONLNddÑp˛)Â. Notice that none of the bit °dONLNdqä}\(zä.images in a document window is actually as larh@°dONLNdMq\})“(ge as an icon (which is 32 pixels by 32 °dONLNdu~ää≥(áä
  6953. pixels). VÚ`°dONLNd~≤ä¢)(4enn Diagrammer uses this strategy because ResEdit pr7¿°dONLNd≥~£ä
  6954. )Òovides a simple way to .°dONLNd ãäóí(îäcrR`°dONLNdÃãíóª)    eate and R`°dONLNd’ãªó–))edit R`°dONLNd⁄ã–óÙ)'ICON'R`°dONLNd‡ãÙó˙)$ r$¿°dONLNd‚ã˙ó)esour˜ °dONLNdÁãó )ces.
  6955. /H4.A/BòR@à@à/BYÁØÛ»ˇ¸˜
  6956. ÛÄ…˜
  6957. ÛÄ…˜
  6958. ÛÄ…˜Ûø˜Ôˇ¸ÛÏˇˆ˜ÛÄ@Ó`˛|`¸Î˜Ûø@Ôˇ¸`˛f˚Ïˇˆ˜ÛÄ@Ó c««¿fc√ÊœΘÛø@Ôˇ¸˛f    `fdfgôòÏˇˆ˜ÛÄ@Ó˛f`fcÊfôòΘÛø@Ôˇ¸gÊf`˝fôòÏˇˆ˜ÛÄ@Óff`˝fôòΘÛø@Ôˇ¸F&f`˝fôòÏˇˆ˜ÛÄ@Ó ÉΔf`|c„ÊôòΘÛø˜Ôˇ¸˘`¸Ïˇˆ˜ÛÄÂ`Á˜ÛÄ¿Á˜
  6959. ÛÄ…˜Û»ˇ˛˜ÛÄ @÷˜ÛÄ Ò@÷˜¯ ˘Ä <@÷˜@¯ÄÄ 9√8@÷˜/AÉ#å<0¸Ä0Ä  Y    àp@˙˚     @!ûÁ˜/BDà$R"H¸Ä0Ä @±`h‡@"˚ ˛Á˜3    D(H(!"@˝ˇ‡ Åa#êhA¿@#å ≥•ÿŒpŒ1ge≥Á˜3    D(H(!"8˝ˇ‡!¡N~h„Ä@"Rƒ•%) P
  6960.     )ñàÁ˜2D(H(a"¸ÄÄ"Åhw@"^Ñ•%È L
  6961. 9)ÙàÁ˜2BDà$R"ѸÅÜÄ'˚!Äh>@"PÑ•%     BI)ÑàÁ˜2AÉ#å"x¸ÅÜÄ$@~h@"LÉù$…\9' êdÁ˜"ÛÄ$ Ë@˝Ä˘@ Á˜ÛÄ'¯(@˛⁄˜ÛÄ @÷˜Û»ˇ˛˜
  6962. ÛÄ…˜Û»ˇ˛˜
  6963. ÛÄ…˜
  6964. ÛÄ…˜
  6965. ÛÄ…˜
  6966. ÛÄ…˜
  6967. ÛÄ…˜ÛÄÒ¿Ë ˙˜ÛÄÒ Ë ˙˜&ÛÄ˙;‡˚òƒòÛÿ«˙,Δ$¿˚˜'ÛÄ˙$§ê˚%%$Û%$Ä˚1)) ˚˜'ÛÄ˙$ºê˚d=ÊÛ%‰Ä˚!Ô0¿˚˜'ÛÄ˙$†ê˚$!Û%Ä˚!0 ˚˜'ÛÄ˙$§ê˚$%%$Û%$Ä˚!)) ˚˜'ÛÄ˙$òê˚ƒƒòÛ$ƒÄ˚ Δ$¿˚˜
  6968. ÛÄ…˜
  6969. ÛÄ…˜
  6970. ÛÄ…˜!ÛĢˇ¿¸ˇ¯Ô˛˚ˇ¿˘˜&ÛÄ˙>¸>¿ÒÄ˝>˘˜)ÛÄ˙‡˛¿<Ò˝‡˙˜+ÛÄ˙p˛8˛˛ÚÄ¿˛p˛8˙˜+ÛÄ˚IJ˛p˝‡Û˝8IJ˙˜(ÛÄ˚ ¸¿Ä˝Û`˝ ¸¿˚˜(ÛÄ˚0¸0¸ÙÄ˝Ä0¸0˚˜&ÛÄ˚`¸ ¸Ù˚¿`¸˚˜'Ûĸĸ0˚¿ı ˚0ĸ˚˜%Ûĸ˚@˚ ı˚˚˚˜$Ûĸ ˙¡Ä˚ı`˚ ˙¿¸˜ò
  6971. à@”à@”/ÁY˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@Äà@ÄàYBÇÁ#Ûĸ˙c˙ ı¿˚˙`¸˜"Ûĸ ˙˙ˆ˘†˙¸˜"Ûĸ@˙˙ˆ˘@˙¸˜"ÛĸÄ˙˘Ä˜˘†˙¸˜#ÛÄ˝˘"˘@˜˙˙¸˜#ÛÄ˝˘A˘ ˜˙˙¸˜$ÛÄ˝˘ÄÄ˙˜ ˙˘Ä˝˜%ÛÄ˝˙@˙˜@˙˘@˝˜%ÛÄ˝˙`˙ ˜¿˙˘`˝˜%ÛÄ˝˙ ˙˜Ä˙˘ ˝˜&ÛÄ˝ ˙˙¯˘ Ä˙˝˜&ÛÄ˝@˙˙¯˘@@˙˝˜&ÛÄ˝@˙˙¯˘@@˙˝˜&ÛÄ˝Ä˙˘Ä˘˘Ä ˙˝˜(ÛIJÄ˙0˘¿˘ ˙Ä0˙˝˜'ÛIJ˘ ˘@˘˙˙˝˜'ÛIJ˘@˘ ˘˙˙˝˜'ÛIJ˘@˘ ˘˙˙˝˜(ÛIJ˘ÄÄ˙˘ ˙˘Ä˛˜(ÛIJ˘ÄÄ˙˘ ˙˘Ä˛˜(ÛIJ˘ÄÄ˙˘ ˙˘Ä˛˜)ÛIJ˙˛@˙˘@˙˘@˛˜)ÛIJ˙˛@˙˘@˙˘@˛˜)ÛIJ˙˛`˙ ˘¿˙˘`˛˜)ÛIJ˙˛ ˙˘Ä˙˘ ˛˜)ÛIJ˙˛ ˙˘Ä˙˘ ˛˜)ÛIJ˙˛ ˙˘Ä˙˘ ˛˜*ÛIJ ˙˛˙˙˘ ˛Ä˙˛˜*ÛIJ ˙˛˙˙˘ ˛Ä˙˛˜*ÛIJ ˙˛˙˙˘ ˛Ä˙˛˜*ÛIJ ˙˛˙˙˘ ˛Ä˙˛˜*ÛIJ ˙˛˙˙˘ ˛Ä˙˛˜*ÛIJ@˙˛˙˙˘@˛@˙˛˜0ÛIJ@˙˛˙˙˘@˛@˙˛˝¸˛0ÛIJ@˙˛˙˙˘@˛@˙˛˝Ä˛4ÛIJ@˙˛˙˙˘@˛@√˝˛˝Ää3é<p4ÛIJ@˙˛˙˙˘@˛@f˝˛˝ÄRI"â.ÛIJ@˙˛˙˙˘@˛@<ˆˇ‡¸"A#.ÛIJ@˙˛˙˙˘@˛@ˆˇ‡Ä"9#4ÛIJ@˙˛˙˙˘@˛@<˝˛˝ÄR#    4ÛIJ@˙˛˙˙˘@˛@f˝˛˝ÄRÖ"â4ÛIJ@˙˛˙˙˘@˛@√˝˛˝¸äyé"p*ÛIJ@˙˛˙˙˘@˛@˙˛˜*ÛIJ@˙˛˙˙˘@˛@˙˛˜*ÛIJ@˙˛˙˙˘@˛@˙˛˜*ÛIJ@˙˛˙˙˘@˛@˙˛˜*ÛIJ ˙˛˙˙˘ ˛Ä˙˛˜/ÛIJ ˙˛˙˙˘ ˛Ä˙˛˚/ÛIJ ˙ˇ‡˙˙˘ ˛Ä˙˛˚1ÛIJ ˙˙™ø˙˙˘ ˛Ä˙˛˝dOs√1ÛIJ ˙˛U˙˙˘ ˛Ä˙˛˝îHä$à0ÛIJ˙:˛™º˙˘Ä˙˘ ˛˝ÇHä(H2ÛIJ˚◊˛UcÄ˚˘Ä˙˘ ˛˝ràä(H1ÛIJ˚˝™†`˚˘Ä˙˘ ˛˝
  6972. àä(H3ÛIJ˚W˛U`˚ ˘¿˙˘`˛˛    ä$à2ÛIJ˚:´˛™¿ ˚˘@˙˘@˛˝Òã√.ÛIJ˚’˝U@˚˘@˙˘@˛˝¸/ÛIJ¸¸™Äĸ˘ ˙˘Ä˛˝¸1ÛIJ¸UU’UUÄ`¸˘ ˙˘Ä˛˝¸+ÛIJ¸¸™Ä0¸˘ ˙˘Ä˛˜+ÛIJ¸¸U¸ ˘˙˙˝˜-ÛIJ¸*™™Í™´¸ ˘˙˙˝˜,ÛIJ¸˛UuUV¸@˘˙˙˝˜-ÛIJÄ˝˛™∫™Æ¸¿˘ ˙Ä0˙˝˜ò
  6973. @àÄ”@àÄ”YÁǘ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜p‡˘â˘˘˘    ¯â˘p‡˘˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òRÄ¿àÄ¿àÇB¨Á,ÛĽIJ¸UT˛Ä˝Ä˘˘Ä ˙˝˜,ÛÄ˝@˛¸™®˛@˛¯˘@@˙˝˜.ÛÄ˝@˛˛U]UX˛ ˛¯˘@@˙˝˜.ÛÄ˝ ˛˛™Æ™∞˛0˛¯˘ Ä˙˝˜-ÛÄ˝˛˛UWU`˛˛˜Ä˙˘ ˝˜-ÛÄ˝˛˛™´™‡0¿˛ ˜¿˙˘`˝˜+ÛÄ˝˛5¸U@IJ˜@˙˘@˝˜+ÛÄ˝˛*¸™Ä˛˜ ˙˘Ä˝˜)ÛÄ˝˛˚U˛ ˜˙˙¸˜+ÛÄ˝˛Í¸™˛@˜˙˙¸˜*ÛĸÄ’˝UTÄ˛Ä˜˘†˙¸˜(Ûĸ@¸™®0¿Äˆ˘@˙¸˜&Ûĸ ¸UT¸Äˆ˘†˙¸˜'Ûĸ¸™„¸@ ı¿˚˙`¸˜(Ûĸ ¸U¡Ä˝@ı`˚ ˙¿¸˜)Ûĸ˝™´@˝@ ı˚˚˚˜*ÛĸÄ˝UV0˝ ¿ı ˚0ĸ˚˜(ÛÄ˚`˝™∏ ˝ Ù˚¿`¸˚˜*ÛÄ˚0˝Up˝0ÙÄ˝Ä0¸0˚˜*ÛÄ˚
  6974. ˝™¿IJÛ`˝ ¸¿˚˜,ÛÄ˚ç˛UW˛p˛‡Û˝8IJ˙˜+ÛÄ˙z˛™∏˛˛ÚÄ¿˛p˛8˙˜)ÛÄ˙˛U‡˛¿<Ò˝‡˙˜&ÛÄ˙˙™æ¸>»ÒÄ˝>˘˜#ÛÄ˙ˇ¿¸ˇ¯˛˚ˇ¿˘˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ ˆ0›˜ÛÄ˙ˆ ›˜ÛÄ˙ˆ ›˜ÛÄ˙ˆ@›˜ÛÄ˙ˆ@›˜ÛÄ˙ˆ@›˜ÛÄ˙ˆÄ›˜ÛÄ˙ˆÄ›˜ÛÄ˘Ä¯‹˜ÛĢ¿¯‹˜ÛĢ@¯‹˜ÛĢ ¯‹˜ÛĢ ¯‹˜ÛĢ¯‹˜ÛĢ¯‹˜ò
  6975. Äà¿”Äà¿”ÇÁ¨˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR¿à¿à¨B’ÁÛĢ ¯0‹˜ÛĢ¯ ‹˜ÛĢ¯@‹˜ÛĢ¯Ä‹˜ÛįÄ˙€˜Ûį@˙€˜Ûį ˙€˜Ûį˙€˜Ûį ˙0€˜Ûį˙`€˜Ûį˙Ä€˜ÛĘ¿¸⁄˜ÛĘ0¸ ⁄˜Ûʸ⁄˜Ûʸ`⁄˜ÛĘ¿˛Ä⁄˜ÛĈ8˛Ÿ˜ÛĈ˛Ÿ˜ÛÄı¯ÿ˜ÛÄıˇ‡ÿ˜
  6976. ÛÄ…˜
  6977. ÛÄ…˜
  6978. ÛÄ…˜ÛÄÙÿ˜ÛÄÙÿ˜ÛĈ;∑1Ÿ˜ÛĈ$§¬I$Ÿ˜ÛĈ$§Ç9Ÿ˜ÛĈ$§ÇIŸ˜ÛĈ$§ÇI$Ÿ˜ÛĈ$òÅ9Ÿ˜
  6979. ÛÄ…˜
  6980. ÛÄ…˜
  6981. ÛÄ…˜
  6982. ÛÄ…˜
  6983. ÛÄ…˜
  6984. ÛÄ…˜
  6985. ÛÄ…˜
  6986. ÛÄ…˜
  6987. ÛÄ…˜
  6988. ÛÄ…˜
  6989. ÛÄ…˜ÛÄÊ˙ÄÄŸ˜ÛĢÅÄÄŸ˜ÛÄ>fl˛√èÄŸ˜ÛÄffqò˛Á˛ôÄŸ˜ÛÄΔffaò˛}˛ôÄŸ˜ÛÄffa¯˛9˛ôÄŸ˜ÛÄffaIJ˛ôÄŸ˜ÛÄffaà˛˛ôÄŸ˜ÛÄ>>`˛èÄŸ˜ÛIJÕ˜ÛIJFÕ˜ÛIJ<Õ˜
  6990. ÛÄ…˜ÛÄ˙ˇ˚ˇ¸⁄˜Ûġ‡@Ä@ˇˇ⁄˜Ûġ‡@Ä@ˇˇ⁄˜ÛÄœ‡CÄ¡A‡¯?⁄˜#ÛÄè·@`Å¡C0˘ˇÑb˝`„˜#ÛÄœ‡@¿Ç¡C0˘ˇÑb˝ „˜+Û!Äœ‡A‡Ñ¡C0˘ˇÑR8 0‚Ó!¿8π¿Yá͘+Û!Äœ‡0@0à¡C¯ÑRD …"" D¬ fHô͘+Û!Äœ‡`@0è·C0˘ˇÑJDâ"<Ç DHë͘ò
  6991. ¿à”¿à”¨Á’˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@à@à’BˇÁ+Û!Äœ‡¿@0Ä¡C0˘ˇÑJDâ"!¿DɇDOë͘+Û!Äœ·ÄB0Ä¡C0˘ˇÑFDâ"  DÇDH͘+Û!Äœ·¯A‡Ä¡C0¯?FDâ"" DÇ DHë͘,Û"ġ‡@Ä@ˇˇB8à‚!¿<Å¿DG Î˜Ûġ‡@Ä@ˇˇ⁄˜Ûġ‡@Ä@ˇˇ⁄˜ÛÄ˙ˇ˚ˇ¸⁄˜
  6992. ÛÄ…˜
  6993. ÛÄ…˜
  6994. ÛÄ…˜
  6995. ÛÄ…˜Ûį˚ˇ¸⁄˜Ûį@ġ˛⁄˜Ûį@ġ˛⁄˜ÛįA‡á¡¸˛⁄˜%Ûį    C0ܸ˛Ñ<˛‡ ˙`Ó˜%Ûį    C0ܸ˛ÑB˛ ˙ Ó˜*ÛįC0ܸ˛Ñ@8≥Á"88 0‚Ó!¿Ô˜*ÛįCáŸ˛Ñ@DÃëë$DòD …"" Ô˜)ÛįC0ܸ˛Ñ<Dàërë(@êDâ"Ó˜*ÛįC0ܸ˛ÑDàüü08ê|â"!¿Ô˜*ÛįC0ܸ˛ÑDàê(ê@â"  Ô˜*ÛįC0ᡸ˛BDàëë$DêDâ"" Ô˜*Ûį@ġ˛<8àé‚"8ê8à‚!ƒÔ˜Ûį@ġ˛⁄˜Ûį@ġ˛⁄˜Ûį˚ˇ¸⁄˜
  6996. ÛÄ…˜
  6997. ÛÄ…˜ÛÄ‹ˇ˜
  6998. ÛÄ…˜Ûį˚ˇ¸⁄˜Ûį@ġ¸⁄˜Ûį@ġ¸⁄˜ÛįA‡á¡¸⁄˜#Ûį    C0ÜÊ|<˛‡ ˚Θ#Ûį    C0ÜÊ|B˛ ˚Θ*ÛįC0ÜÊ|@8≥Á"88 8 0‚¿Ô˜*ÛįCáÅÊ|@DÃëë$DòD ë … Ô˜*ÛįC0ÜÊ|<Dàërë(@êDëâ Ô˜*ÛįC0ÜÊ|Dàüü08ê|ëâÚ Ô˜*ÛįC0ÜÊ|Dàê(ê@ëâ Ô˜*ÛįC0á¡¸BDàëë$DêDëâ Ô˜*Ûį@ġ¸<8àé‚"8ê8é à‚$Ô˜Ûį@ġ¸⁄˜Ûį@ġ¸⁄˜Ûį˚ˇ¸⁄˜
  6999. ÛÄ…˜
  7000. ÛÄ…˜
  7001. ÛÄ…˜
  7002. ÛÄ…˜
  7003. ÛÄ…˜
  7004. ÛÄ…˜
  7005. ÛÄ…˜Û»ˇ˛˜
  7006. Û…ˇ˛˜ØØØØØØ
  7007. ڠڜ
  7008. Ú Úœò
  7009. à@”à@”’Áˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@Và@VàˇBÁ
  7010. ڠڜ
  7011. ڠڜ
  7012. Ú0Úœ
  7013. ÚÚœ
  7014. ÚÚœ
  7015. ÚÚ œ
  7016. ÚÚxœ
  7017. ÚÚˇ¿œÍ «Í «Í «Í «Í «Í «Í «Í «Í «Í «Í «ØØØò
  7018. @àV”@àV”ˇÁ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@à@à/BYÁØÛ»ˇ¸˜
  7019. ÛÄ…˜
  7020. ÛÄ…˜
  7021. ÛÄ…˜Ûø˜Ôˇ¸ÛÏˇˆ˜ÛÄ@Ó`˛|`¸Î˜Ûø@Ôˇ¸`˛f˚Ïˇˆ˜ÛÄ@Ó c««¿fc√ÊœΘÛø@Ôˇ¸˛f    `fdfgôòÏˇˆ˜ÛÄ@Ó˛f`fcÊfôòΘÛø@Ôˇ¸gÊf`˝fôòÏˇˆ˜ÛÄ@Óff`˝fôòΘÛø@Ôˇ¸F&f`˝fôòÏˇˆ˜ÛÄ@Ó ÉΔf`|c„ÊôòΘÛø˜Ôˇ¸˘`¸Ïˇˆ˜ÛÄÂ`Á˜ÛÄ¿Á˜
  7022. ÛÄ…˜Û»ˇ˛˜ÛÄ @÷˜ÛÄ Ò@÷˜¯ ˘Ä <@÷˜@¯ÄÄ 9√8@÷˜/AÉ#å<0¸Ä0Ä  Y    àp@˙˚     @!ûÁ˜/BDà$R"H¸Ä0Ä @±`h‡@"˚ ˛Á˜3    D(H(!"@˝ˇ‡ Åa#êhA¿@#å ≥•ÿŒpŒ1ge≥Á˜0D(H(!"8˙!¡N~h„Ä@"Rƒ•%) P
  7023.     )ñàÁ˜2D(H(a"¸ÄÄ"Åhw@"^Ñ•%È L
  7024. 9)ÙàÁ˜2BDà$R"ѸÅÜÄ'˚!Äh>@"PÑ•%     BI)ÑàÁ˜2AÉ#å"x¸ÅÜÄ$@~h@"LÉù$…\9' êdÁ˜"ÛÄ$ Ë@˝Ä˘@ Á˜ÛÄ'¯(@˛⁄˜ÛÄ @÷˜Û»ˇ˛˜
  7025. ÛÄ…˜Û»ˇ˛˜
  7026. ÛÄ…˜
  7027. ÛÄ…˜
  7028. ÛÄ…˜
  7029. ÛÄ…˜
  7030. ÛÄ…˜ÛÄÒ¿Ë ˙˜ÛÄÒ Ë ˙˜&ÛÄ˙;‡˚òƒòÛÿ«˙,Δ$¿˚˜'ÛÄ˙$§ê˚%%$Û%$Ä˚1)) ˚˜'ÛÄ˙$ºê˚d=ÊÛ%‰Ä˚!Ô0¿˚˜'ÛÄ˙$†ê˚$!Û%Ä˚!0 ˚˜'ÛÄ˙$§ê˚$%%$Û%$Ä˚!)) ˚˜'ÛÄ˙$òê˚ƒƒòÛ$ƒÄ˚ Δ$¿˚˜
  7031. ÛÄ…˜
  7032. ÛÄ…˜
  7033. ÛÄ…˜!ÛĢˇ¿¸ˇ¯Ô˛˚ˇ¿˘˜&ÛÄ˙>¸>¿ÒÄ˝>˘˜)ÛÄ˙‡˛¿<Ò˝‡˙˜+ÛÄ˙p˛8˛˛ÚÄ¿˛p˛8˙˜+ÛÄ˚IJ˛p˝‡Û˝8IJ˙˜(ÛÄ˚ ¸¿Ä˝Û`˝ ¸¿˚˜(ÛÄ˚0¸0¸ÙÄ˝Ä0¸0˚˜&ÛÄ˚`¸ ¸Ù˚¿`¸˚˜'Ûĸĸ0˚¿ı ˚0ĸ˚˜%Ûĸ˚@˚ ı˚˚˚˜$Ûĸ ˙¡Ä˚ı`˚ ˙¿¸˜ò
  7034. à@”à@”/ÁY˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@Äà@ÄàYBÇÁ#Ûĸ˙c˙ ı¿˚˙`¸˜"Ûĸ ˙˙ˆ˘†˙¸˜"Ûĸ@˙˙ˆ˘@˙¸˜"ÛĸÄ˙˘Ä˜˘†˙¸˜#ÛÄ˝˘"˘@˜˙˙¸˜#ÛÄ˝˘A˘ ˜˙˙¸˜$ÛÄ˝˘ÄÄ˙˜ ˙˘Ä˝˜%ÛÄ˝˙@˙˜@˙˘@˝˜%ÛÄ˝˙`˙ ˜¿˙˘`˝˜%ÛÄ˝˙ ˙˜Ä˙˘ ˝˜&ÛÄ˝ ˙˙¯˘ Ä˙˝˜&ÛÄ˝@˙˙¯˘@@˙˝˜&ÛÄ˝@˙˙¯˘@@˙˝˜&ÛÄ˝Ä˙˘Ä˘˘Ä ˙˝˜(ÛIJÄ˙0˘¿˘ ˙Ä0˙˝˜'ÛIJ˘ ˘@˘˙˙˝˜'ÛIJ˘@˘ ˘˙˙˝˜'ÛIJ˘@˘ ˘˙˙˝˜(ÛIJ˘ÄÄ˙˘ ˙˘Ä˛˜(ÛIJ˘ÄÄ˙˘ ˙˘Ä˛˜(ÛIJ˘ÄÄ˙˘ ˙˘Ä˛˜)ÛIJ˙˛@˙˘@˙˘@˛˜)ÛIJ˙˛@˙˘@˙˘@˛˜)ÛIJ˙˛`˙ ˘¿˙˘`˛˜)ÛIJ˙˛ ˙˘Ä˙˘ ˛˜)ÛIJ˙˛ ˙˘Ä˙˘ ˛˜)ÛIJ˙˛ ˙˘Ä˙˘ ˛˜*ÛIJ ˙˛˙˙˘ ˛Ä˙˛˜*ÛIJ ˙˛˙˙˘ ˛Ä˙˛˜*ÛIJ ˙˛˙˙˘ ˛Ä˙˛˜*ÛIJ ˙˛˙˙˘ ˛Ä˙˛˜*ÛIJ ˙˛˙˙˘ ˛Ä˙˛˜*ÛIJ@˙˛˙˙˘@˛@˙˛˜0ÛIJ@˙˛˙˙˘@˛@˙˛˝¸˛0ÛIJ@˙˛˙˙˘@˛@˙˛˝Ä˛4ÛIJ@˙˛˙˙˘@˛@√˝˛˝Ää3é<p4ÛIJ@˙˛˙˙˘@˛@f˝˛˝ÄRI"â.ÛIJ@˙˛˙˙˘@˛@<ˆˇ‡¸"A#,ÛIJ@˙˛˙˙˘@˛@ÙÄ"9#4ÛIJ@˙˛˙˙˘@˛@<˝˛˝ÄR#    4ÛIJ@˙˛˙˙˘@˛@f˝˛˝ÄRÖ"â4ÛIJ@˙˛˙˙˘@˛@√˝˛˝¸äyé"p*ÛIJ@˙˛˙˙˘@˛@˙˛˜*ÛIJ@˙˛˙˙˘@˛@˙˛˜*ÛIJ@˙˛˙˙˘@˛@˙˛˜*ÛIJ@˙˛˙˙˘@˛@˙˛˜*ÛIJ ˙˛˙˙˘ ˛Ä˙˛˜/ÛIJ ˙˛˙˙˘ ˛Ä˙˛˚/ÛIJ ˙ˇ‡˙˙˘ ˛Ä˙˛˚1ÛIJ ˙˙™ø˙˙˘ ˛Ä˙˛˝dOs√1ÛIJ ˙˛U˙˙˘ ˛Ä˙˛˝îHä$à0ÛIJ˙:˛™º˙˘Ä˙˘ ˛˝ÇHä(H2ÛIJ˚◊˛UcÄ˚˘Ä˙˘ ˛˝ràä(H1ÛIJ˚˝™†`˚˘Ä˙˘ ˛˝
  7035. àä(H3ÛIJ˚W˛U`˚ ˘¿˙˘`˛˛    ä$à2ÛIJ˚:´˛™¿ ˚˘@˙˘@˛˝Òã√.ÛIJ˚’˝U@˚˘@˙˘@˛˝¸/ÛIJ¸¸™Äĸ˘ ˙˘Ä˛˝¸1ÛIJ¸UU’UUÄ`¸˘ ˙˘Ä˛˝¸+ÛIJ¸¸™Ä0¸˘ ˙˘Ä˛˜+ÛIJ¸¸U¸ ˘˙˙˝˜-ÛIJ¸*™™Í™´¸ ˘˙˙˝˜,ÛIJ¸˛UuUV¸@˘˙˙˝˜-ÛIJÄ˝˛™∫™Æ¸¿˘ ˙Ä0˙˝˜ò
  7036. @àÄ”@àÄ”YÁǘ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜p‡˘â˘˘˘    ¯â˘p‡˘˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òRÄ¿àÄ¿àÇB¨Á,ÛĽIJ¸UT˛Ä˝Ä˘˘Ä ˙˝˜,ÛÄ˝@˛¸™®˛@˛¯˘@@˙˝˜.ÛÄ˝@˛˛U]UX˛ ˛¯˘@@˙˝˜.ÛÄ˝ ˛˛™Æ™∞˛0˛¯˘ Ä˙˝˜-ÛÄ˝˛˛UWU`˛˛˜Ä˙˘ ˝˜-ÛÄ˝˛˛™´™‡0¿˛ ˜¿˙˘`˝˜+ÛÄ˝˛5¸U@IJ˜@˙˘@˝˜+ÛÄ˝˛*¸™Ä˛˜ ˙˘Ä˝˜)ÛÄ˝˛˚U˛ ˜˙˙¸˜+ÛÄ˝˛Í¸™˛@˜˙˙¸˜*ÛĸÄ’˝UTÄ˛Ä˜˘†˙¸˜(Ûĸ@¸™®0¿Äˆ˘@˙¸˜&Ûĸ ¸UT¸Äˆ˘†˙¸˜'Ûĸ¸™„¸@ ı¿˚˙`¸˜(Ûĸ ¸U¡Ä˝@ı`˚ ˙¿¸˜)Ûĸ˝™´@˝@ ı˚˚˚˜*ÛĸÄ˝UV0˝ ¿ı ˚0ĸ˚˜(ÛÄ˚`˝™∏ ˝ Ù˚¿`¸˚˜*ÛÄ˚0˝Up˝0ÙÄ˝Ä0¸0˚˜*ÛÄ˚
  7037. ˝™¿IJÛ`˝ ¸¿˚˜,ÛÄ˚ç˛UW˛p˛‡Û˝8IJ˙˜+ÛÄ˙z˛™∏˛˛ÚÄ¿˛p˛8˙˜)ÛÄ˙˛U‡˛¿<Ò˝‡˙˜&ÛÄ˙˙™æ¸>»ÒÄ˝>˘˜#ÛÄ˙ˇ¿¸ˇ¯˛˚ˇ¿˘˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ˆ›˜ÛÄ˙ ˆ0›˜ÛÄ˙ˆ ›˜ÛÄ˙ˆ ›˜ÛÄ˙ˆ@›˜ÛÄ˙ˆ@›˜ÛÄ˙ˆ@›˜ÛÄ˙ˆÄ›˜ÛÄ˙ˆÄ›˜ÛÄ˘Ä¯‹˜ÛĢ¿¯‹˜ÛĢ@¯‹˜ÛĢ ¯‹˜ÛĢ ¯‹˜ÛĢ¯‹˜ÛĢ¯‹˜ò
  7038. Äà¿”Äà¿”ÇÁ¨˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR¿à¿à¨B’ÁÛĢ ¯0‹˜ÛĢ¯ ‹˜ÛĢ¯@‹˜ÛĢ¯Ä‹˜ÛįÄ˙€˜Ûį@˙€˜Ûį ˙€˜Ûį˙€˜Ûį ˙0€˜Ûį˙`€˜Ûį˙Ä€˜ÛĘ¿¸⁄˜ÛĘ0¸ ⁄˜Ûʸ⁄˜Ûʸ`⁄˜ÛĘ¿˛Ä⁄˜ÛĈ8˛Ÿ˜ÛĈ˛Ÿ˜ÛÄı¯ÿ˜ÛÄıˇ‡ÿ˜
  7039. ÛÄ…˜
  7040. ÛÄ…˜
  7041. ÛÄ…˜ÛÄÙÿ˜ÛÄÙÿ˜ÛĈ;∑1Ÿ˜ÛĈ$§¬I$Ÿ˜ÛĈ$§Ç9Ÿ˜ÛĈ$§ÇIŸ˜ÛĈ$§ÇI$Ÿ˜ÛĈ$òÅ9Ÿ˜
  7042. ÛÄ…˜
  7043. ÛÄ…˜
  7044. ÛÄ…˜
  7045. ÛÄ…˜
  7046. ÛÄ…˜
  7047. ÛÄ…˜
  7048. ÛÄ…˜
  7049. ÛÄ…˜
  7050. ÛÄ…˜
  7051. ÛÄ…˜
  7052. ÛÄ…˜ÛÄÊ˙ÄÄŸ˜ÛĢÅÄÄŸ˜ÛÄ>fl˛√èÄŸ˜ÛÄffqò˛Á˛ôÄŸ˜ÛÄΔffaò˛}˛ôÄŸ˜ÛÄffa¯˛9˛ôÄŸ˜ÛÄffaIJ˛ôÄŸ˜ÛÄffaà˛˛ôÄŸ˜ÛÄ>>`˛èÄŸ˜ÛIJÕ˜ÛIJFÕ˜ÛIJ<Õ˜
  7053. ÛÄ…˜ÛÄ˙ˇ˚ˇ¸⁄˜Ûġ‡@Ä@ˇˇ⁄˜Ûġ‡@Ä@ˇˇ⁄˜ÛÄœ‡CÄ¡A‡¯?⁄˜#ÛÄè·@`Å¡C0˘ˇÑb˝`„˜#ÛÄœ‡@¿Ç¡C0˘ˇÑb˝ „˜+Û!Äœ‡A‡Ñ¡C0˘ˇÑR8 0‚Ó!¿8π¿Yá͘+Û!Äœ‡0@0à¡C¯ÑRD …"" D¬ fHô͘+Û!Äœ‡`@0è·C0˘ˇÑJDâ"<Ç DHë͘ò
  7054. ¿à”¿à”¨Á’˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@à@à’BˇÁ+Û!Äœ‡¿@0Ä¡C0˘ˇÑJDâ"!¿DɇDOë͘+Û!Äœ·ÄB0Ä¡C0˘ˇÑFDâ"  DÇDH͘+Û!Äœ·¯A‡Ä¡C0¯?FDâ"" DÇ DHë͘,Û"ġ‡@Ä@ˇˇB8à‚!¿<Å¿DG Î˜Ûġ‡@Ä@ˇˇ⁄˜Ûġ‡@Ä@ˇˇ⁄˜ÛÄ˙ˇ˚ˇ¸⁄˜
  7055. ÛÄ…˜
  7056. ÛÄ…˜
  7057. ÛÄ…˜
  7058. ÛÄ…˜Ûį˚ˇ¸⁄˜Ûį@ġ˛⁄˜Ûį@ġ˛⁄˜ÛįA‡á¡¸˛⁄˜%Ûį    C0ܸ˛Ñ<˛‡ ˙`Ó˜%Ûį    C0ܸ˛ÑB˛ ˙ Ó˜*ÛįC0ܸ˛Ñ@8≥Á"88 0‚Ó!¿Ô˜*ÛįCáŸ˛Ñ@DÃëë$DòD …"" Ô˜)ÛįC0ܸ˛Ñ<Dàërë(@êDâ"Ó˜*ÛįC0ܸ˛ÑDàüü08ê|â"!¿Ô˜*ÛįC0ܸ˛ÑDàê(ê@â"  Ô˜*ÛįC0ᡸ˛BDàëë$DêDâ"" Ô˜*Ûį@ġ˛<8àé‚"8ê8à‚!ƒÔ˜Ûį@ġ˛⁄˜Ûį@ġ˛⁄˜Ûį˚ˇ¸⁄˜
  7059. ÛÄ…˜
  7060. ÛÄ…˜ÛÄ‹ˇ˜
  7061. ÛÄ…˜Ûį˚ˇ¸⁄˜Ûį@ġ¸⁄˜Ûį@ġ¸⁄˜ÛįA‡á¡¸⁄˜#Ûį    C0ÜÊ|<˛‡ ˚Θ#Ûį    C0ÜÊ|B˛ ˚Θ*ÛįC0ÜÊ|@8≥Á"88 8 0‚¿Ô˜*ÛįCáÅÊ|@DÃëë$DòD ë … Ô˜*ÛįC0ÜÊ|<Dàërë(@êDëâ Ô˜*ÛįC0ÜÊ|Dàüü08ê|ëâÚ Ô˜*ÛįC0ÜÊ|Dàê(ê@ëâ Ô˜*ÛįC0á¡¸BDàëë$DêDëâ Ô˜*Ûį@ġ¸<8àé‚"8ê8é à‚$Ô˜Ûį@ġ¸⁄˜Ûį@ġ¸⁄˜Ûį˚ˇ¸⁄˜
  7062. ÛÄ…˜
  7063. ÛÄ…˜
  7064. ÛÄ…˜
  7065. ÛÄ…˜
  7066. ÛÄ…˜
  7067. ÛÄ…˜
  7068. ÛÄ…˜Û»ˇ˛˜
  7069. Û…ˇ˛˜ØØØØØØ
  7070. ڠڜ
  7071. Ú Úœò
  7072. à@”à@”’Áˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@Và@VàˇBÁ
  7073. ڠڜ
  7074. ڠڜ
  7075. Ú0Úœ
  7076. ÚÚœ
  7077. ÚÚœ
  7078. ÚÚ œ
  7079. ÚÚxœ
  7080. ÚÚˇ¿œÍ «Í «Í «Í «Í «Í «Í «Í «Í «Í «Í «ØØØò
  7081. @àV”@àV”ˇÁ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@à@àB7ÁÚ»¸ÀÚ˚0 Ú    §Jp<t1É8√√ŒÚ
  7082. dLà"åRD£E"$ÄœÚå$Hà"ÑT(aÇ$ŒÚ $H¯"Ñî(aÇ#ÄœÚ $HÄ"Ñî(aÜ @œÚ d»à"ÑíD°E"(@œÚ £Hp ¢|É8¬'Äœ ¡Ò@¡Ò¿¡ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7083. à@”à@”Á7˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@Äà@Äà7BaÁØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7084. @àÄ”@àÄ”7Áa˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òRÄ¿àÄ¿àaBäÁØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ&ÒÒ<~@˛8¯Ä@˝˙ Ä(Â%ÚàBÑÄ@˛DÑ ˘¸˛Ä(Â%ÚàBHÄ@˛DÑ ˘¸˛Ä(Â,Ú&à H@_"sŇDÑOqœé¿p:‰Oqœ8DgéºàÄÂ+Ú%PO|a"DA8¯†Hä0ë  àG Hä(ê*§Q¬U‰+Ú%PdHÄ@a"G¿DцHàü< 8C
  7085. HãËê*§P¬U‰+Ú%PBHÄ@a"DDцHã0ê »C
  7086. Häê*§P¬U‰+Ú%0BàÄ@c&DADцHäqëB òC
  7087. »ä(ê$P¬"‰*Ò$ <@]Cć8¯∞Hâûé< d>Ò„Hâ»ò$Oº"‰
  7088. Ȉđ
  7089. Ș    ”
  7090. Ș”Ú‚˛Ç˝@Œò
  7091. Äà¿”Äà¿”aÁ䘘˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR¿à¿àäB¥ÁڲĽàÅ
  7092. $ŒÚ˛Ä˝ HÅDŒÚ8„éÇ{é|p HÄÄ@ŒÚ‚GQÇDQÑà EpxŒÚ–ÇDGѯ E    ëDŒÚfÇDYÑÄ EDŒÚNPÇDSåàÉ
  7093. DŒÚ3„èÇDLÙp8ŒÍ«ÍH«Í8«Ú‡ ˛@A$@@–Ú˝!˚a$`¿–Ú˝@ĸQ$`¿–Ú    Œàßü @ƒq‚ND@Q$Q@–Ú    U$a @ƒâ"Q*ÄI$Q@–Ú    U$a @®˘_*ÄE$J@–Ú    U$a@@®ÅP*ÄE$J@–Ú"$c@!(âQC$J@–Ú· ¢$]ÄqNA$D@–
  7094. Ì˙Ã
  7095. Ì˙Ã̃ÒADz
  7096. @Äp‡Ä“ÒBB˛˛    ÄâÄ“ÒƒF˛˛    ÄâÄ“ÚD
  7097. èú‡àŒéÅc≈Á88q`’ÚGíPîIUQëdÅî%@#Dâê’ÚDRPîI‡UPü Å%x!|˘’Ú‰PîHUPêB¡%!@Å’ÒDBPîJ"PëÇÅ%Ñ!Dâ’ÒCÇèM‡"Oé@˘‡Å„≈x8q‡’Ô˙@˚‘Ô˙@˚‘Ô˜˚‘ÚD<˚˚‘Ú@    @‚«Ú@A«ÚÁHé8y«ÚÒ»±DDË«Ú    ¯H†| «Ú        H†@ÑĻڠ       I°DD$Ä»ÚÁΔû88#«Í@«ØØØØØØØØØØØØØØÒ@8˚ÀÒ¿D˛ÀÒ†DzÀÒ¢≈ë¿ÄyÓXãúp„ÄÕÚ#&R ÄÖdâ"@@Õò
  7098. ¿à”¿à”äÁ¥˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@à@à¥BfiÁÚÚ$S‡ÄÖDâ>@ÃÚ$RÇÖDâ @ÃÚ$R DÖDô"@@ÕÚ «ë¿8yxiúDÄÕÒ¸@ Ò¸@  Ò¸@«Ú‚0$@«Ú @$  Ú Ä$  Ú ^<%›ŒwéÀÚ ‡ÑQ%    (HÀÚ ÑQ%…(HÀÚ DQ%)(HÀÚ $— %4)(HÀÚ 3Q|Å$”Õ ∑àÀÏÄ≈ÏÄ≈Ø ÚH¸«Ú    H@Ļڠ   H@@»Ú    IπŒÁú@»Ú    IHP@»Ú    IëHP@»Ú    IQHP!@»Ú    I8QHP!Ä»ÚH◊ô ÁêA«ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7099. à@”à@”¥Áfi˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@Và@VàfiBÏÁØØØØØØØØØØØØØØØØØØØØØØò
  7100. @àV”@àV”fiÁϘ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@à@àB7ÁÚ»¸ÀÚ˚0 Ú    §Jp<t1É8√√ŒÚ
  7101. dLà"åRD£E"$ÄœÚå$Hà"ÑT(aÇ$ŒÚ $H¯"Ñî(aÇ#ÄœÚ $HÄ"Ñî(aÜ @œÚ d»à"ÑíD°E"(@œÚ £Hp ¢|É8¬'Äœ ¡Ò@¡Ò¿¡ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7102. à@”à@”Á7˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@Äà@Äà7BaÁØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7103. @àÄ”@àÄ”7Áa˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òRÄ¿àÄ¿àaBäÁØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ&ÒÒ<~@˛8¯Ä@˝˙ Ä(Â%ÚàBÑÄ@˛DÑ ˘¸˛Ä(Â%ÚàBHÄ@˛DÑ ˘¸˛Ä(Â,Ú&à H@_"sŇDÑOqœé¿p:‰Oqœ8DgéºàÄÂ+Ú%PO|a"DA8¯†Hä0ë  àG Hä(ê*§Q¬U‰+Ú%PdHÄ@a"G¿DцHàü< 8C
  7104. HãËê*§P¬U‰+Ú%PBHÄ@a"DDцHã0ê »C
  7105. Häê*§P¬U‰+Ú%0BàÄ@c&DADцHäqëB òC
  7106. »ä(ê$P¬"‰*Ò$ <@]Cć8¯∞Hâûé< d>Ò„Hâ»ò$Oº"‰
  7107. Ȉđ
  7108. Ș    ”
  7109. Ș”Ú‚˛Ç˝@Œò
  7110. Äà¿”Äà¿”aÁ䘘˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR¿à¿àäB¥ÁڲĽàÅ
  7111. $ŒÚ˛Ä˝ HÅDŒÚ8„éÇ{é|p HÄÄ@ŒÚ‚GQÇDQÑà EpxŒÚ–ÇDGѯ E    ëDŒÚfÇDYÑÄ EDŒÚNPÇDSåàÉ
  7112. DŒÚ3„èÇDLÙp8ŒÍ«ÍH«Í8«Ú‡ ˛@A$@@–Ú˝!˚a$`¿–Ú˝@ĸQ$`¿–Ú    Œàßü @ƒq‚ND@Q$Q@–Ú    U$a @ƒâ"Q*ÄI$Q@–Ú    U$a @®˘_*ÄE$J@–Ú    U$a@@®ÅP*ÄE$J@–Ú"$c@!(âQC$J@–Ú· ¢$]ÄqNA$D@–
  7113. Ì˙Ã
  7114. Ì˙Ã̃ÒADz
  7115. @Äp‡Ä“ÒBB˛˛    ÄâÄ“ÒƒF˛˛    ÄâÄ“ÚD
  7116. èú‡àŒéÅc≈Á88q`’ÚGíPîIUQëdÅî%@#Dâê’ÚDRPîI‡UPü Å%x!|˘’Ú‰PîHUPêB¡%!@Å’ÒDBPîJ"PëÇÅ%Ñ!Dâ’ÒCÇèM‡"Oé@˘‡Å„≈x8q‡’Ô˙@˚‘Ô˙@˚‘Ô˜˚‘ÚD<˚˚‘Ú@    @‚«Ú@A«ÚÁHé8y«ÚÒ»±DDË«Ú    ¯H†| «Ú        H†@ÑĻڠ       I°DD$Ä»ÚÁΔû88#«Í@«ØØØØØØØØØØØØØØÒ@8˚ÀÒ¿D˛ÀÒ†DzÀÒ¢≈ë¿ÄyÓXãúp„ÄÕÚ#&R ÄÖdâ"@@Õò
  7117. ¿à”¿à”äÁ¥˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@à@à¥BfiÁÚÚ$S‡ÄÖDâ>@ÃÚ$RÇÖDâ @ÃÚ$R DÖDô"@@ÕÚ «ë¿8yxiúDÄÕÒ¸@ Ò¸@  Ò¸@«Ú‚0$@«Ú @$  Ú Ä$  Ú ^<%›ŒwéÀÚ ‡ÑQ%    (HÀÚ ÑQ%…(HÀÚ DQ%)(HÀÚ $— %4)(HÀÚ 3Q|Å$”Õ ∑àÀÏÄ≈ÏÄ≈Ø ÚH¸«Ú    H@Ļڠ   H@@»Ú    IπŒÁú@»Ú    IHP@»Ú    IëHP@»Ú    IQHP!@»Ú    I8QHP!Ä»ÚH◊ô ÁêA«ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7118. à@”à@”¥Áfi˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@Và@VàfiBÏÁØØØØØØØØØØØØØØØØØØØØØØò
  7119. @àV”@àV”fiÁϘ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@à@àÏBÁØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7120. à@”à@”ÏÁ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@Äà@ÄàB?ÁØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7121. @àÄ”@àÄ”Á?˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òRÄ¿àÄ¿à?BiÁØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7122. Äà¿”Äà¿”?Ái˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR¿à¿àiBíÁØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7123. ¿à”¿à”iÁ혘˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@à@àíBºÁØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7124. à@”à@”íÁº˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@Và@VàºB ÁØØØØØØØØØØØØØØØØØØØØØØò
  7125. @àV”@àV”ºÁ ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@à@àÏBÁØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7126. à@”à@”ÏÁ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@Äà@ÄàB?ÁØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7127. @àÄ”@àÄ”Á?˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òRÄ¿àÄ¿à?BiÁØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7128. Äà¿”Äà¿”?Ái˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR¿à¿àiBíÁØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7129. ¿à”¿à”iÁ혘˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@à@àíBºÁØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØò
  7130. à@”à@”íÁº˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜òR@Và@VàºB ÁØØØØØØØØØØØØØØØØØØØØØØò
  7131. @àV”@àV”ºÁ ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ˇö@ˇ ˇˇˇˇ@
  7132. ˇ·ˇ‚7^
  7133. 4*\¯, Palatino&e.3+l"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@lDrawing4⁄*˙¯
  7134. (‡*100    )BDrawing Bit Images4^*¿¯
  7135. °dONLNd\lhê(elWhen Và¿°dONLNd\èh)#enn Diagrammer starts up, it rk °dONLNd$\hÇ)Üeads the necessary icon r†°dONLNd=\Çhö)mesourË@°dONLNdB\öhÂ)ces into memory °dONLNdRiluπ(rlusing the code in o@°dONLNddi∫uË)N Listing 5-6Ä°dONLNdoiÈuÎ)/.
  7136. ò*†¯4ô*†¯"ô*_
  7137. ˇ·ˇ‚7^    °dONLNdqélôò(ñl Listing 5-6.°dONLNd}é∞ô”)DReading ,
  7138. Courier
  7139. °dONLNdÖç”ô˜)#'ICON'    °dONLNdãé˜ôU)$ resources into memory
  7140. °dONLNd¢®*¥ú(±*{Get handles to too°dONLNdµ®ú¥Æ)rl i°dONLNd∏®Æ¥“)cons.}°dONLNdø∂*¬fi(ø*FOR count := 1 TO kNumTools DO°dONLNdflƒ<–Ú+IgToolsIcons[count] := GetResource('ICON', kToolsIconStart + (count - 1));°dONLNd*‡*Ïn(È*6{Get handles to available existence-indicating icons.}°dONLNdaÓ*˙Æ*FOR count := 1 TO 4 DO°dONLNdy¸<\+0gExistIcons[count] := GetResource('ICON', kExist°dONLNd©¸\t(\ID +°dONLNd≠¸t») (count - 1));°dONLNdΩ*$“(!*{Get handles to mood icons.}°dONLNd⁄&*2Æ*FOR count := 1 TO 4 DO°dONLNdÚ4<@Ê+GgMoodIcons[count] := GetResource('ICON', kMoodIconStart + (count - 1));°dONLNd;P*\fi(Y*{Get handles to figure icons.}°dONLNdZ^*jÆ*FOR count := 1 TO 4 DO°dONLNdrl<xÏ+HgFigureIcons[count] := GetResource('ICON', kFigIconStart + (count - 1));.°dONLNdªÑlê+0$As you can see, the icons in each grÙ‡°dONLNdflÑê#)õoup ar∏†°dONLNdÂÑ$êJ)    e given c´@°dONLNdÓÑKê~)' ontiguous r±¿°dONLNd˘Ñ~êñ)3esour˙°dONLNd˛Ññê±)ce IDs †°dONLNdÑ≤ê‘)     in the rË¿°dONLNdÑ”êÎ)!esour1°dONLNdÑÏê˜)ce °dONLNdëlùr(ölfiå¿°dONLNdërùy)le>¿°dONLNdëzù˜). The handles to each icon arO†°dONLNd6ë˜ù)}e storS °dONLNd<ëùL)ed in the appr‡°dONLNdJëMùÜ)>opriate arrayP °dONLNdWëÖù©)8    , accesse=‡°dONLNd`ë™ù≈)%d by gˇÄ°dONLNdfë≈ù›)lobal °dONLNdlûl™ì(ßl    variablesw‡°dONLNduûî™ñ)(.
  7141. ∏*Δ¯4π*Δ¯°dONLNdwπl¡ã(ølIMPORTÄ°dONLNd}πã¡õ)ANT
  7142. ˇ·ˇ‚7^
  7143. °dONLNdŃl–Z(Õl5As always, you should make certain that none of the r£¿°dONLNd∂ƒZ–§)Óeturned handles .°dONLNdΔ–l‹≠(Ÿlhas the value °dONLNd‘–≠‹ø)ANIL°dONLNd◊–ø‹fi). For brR`°dONLNdfl–fi‹˜)evity6†°dONLNd‰–ˆ‹p), this check is not shown in 6†°dONLNd–p‹†)z Listing 5-66†°dONLNd –†‹£)0.,Zapf Dingbats.6†°dONLNd”®€Æ)s
  7144. °dONLNd·lÌr(ÍlTµ¿°dONLNd·qÌ√)o draw the tools arÖ¿°dONLNd,·ƒÌ)Sea of a window¶¿°dONLNd:·ÌL)C, for example, VyÄ°dONLNdJ·L̘)E#enn Diagrammer uses the code shown °dONLNdmÓl˙w(˜lin π¿°dONLNdpÓw˙•) Listing 5-7Z°dONLNd{Ó¶˙®)/.
  7145. *%¯4*%¯"*_
  7146. ˇ·ˇ‚7^    °dONLNd}lò(l Listing 5-7°dONLNdâ∞f)D+Drawing the tools area of a document window
  7147. .°dONLNdµ-*9Ñ(6*{Redraw the too°dONLNdƒ-Ñ9ñ)Zl a°dONLNd«-ñ9)rea in the window.}°dONLNd€;*Gfi(D*FOR count := 1 TO kNumTools DO°dONLNd˚I<UZ+BEGIN°dONLNdWNcÊ+DSetRect(myRect, kToolWd * (count - 1), 0, kToolWd * count, kToolHt);°dONLNdJeNq™*:DoPlotIcon(myRect, gToolsIcons[count], myWindow, srcCopy);°dONLNdÜs<T(|<END;ˇ;@ˇ ˇˇˇˇ@
  7148. ˇ·ˇ‚7^
  7149. 4H\, Palatino&e.3+ä"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@äDrawing4⁄ä˙(‡äDrawing ÷ )#TV )ext
  7150. (‡101
  7151. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7152. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7153.  
  7154.  
  7155.  
  7156.  
  7157.  
  7158. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  7159. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7160. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7161.  
  7162.  
  7163.  
  7164.  
  7165.  
  7166. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˝ˇ˛ˇ    ˛ˇˇ˛ˇ
  7167. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  7168. 4È4fl?òÄ
  7169. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7170. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7171.  
  7172.  
  7173.  
  7174.  
  7175.  
  7176. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˛˙ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ¸˛ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝ˇˇ˛
  7177. ˛ˇˇˇˇ
  7178. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜    ˇ˛ˇ˛ ˇˇ˛ˇˇ ˇˇ˛ˇˇ˚ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿.°dONLNd\ähX(eä,This code fragment calls the application-defi°dONLNd-\Xhn)Œned rR`°dONLNd2\nhå)outine ,
  7179. CourierR`°dONLNd9\åh»)
  7180. DoPlotIconR`°dONLNdC\»h)< to draw the ˇˇ“ˆ°dONLNdPiäu†(räapprR`°dONLNdTi†uQ))opriate portion of the icon in the specifi°dONLNd~iRub)≤ed rºp°dONLNdÇibuå)
  7181. ectangle. èf°dONLNdåiçu†)+The ˇˇx‚b\°dONLNdêi°u›)
  7182. DoPlotIconˇˇ“ˆb\°dONLNdöi›ufi)< 5R°dONLNdõifluÈ)pr≤°dONLNdùiÈu)
  7183. ocedur⁄°dONLNd£iu )e ≠°dONLNd•i u)is .°dONLNd®väÇö(ädefir °dONLNd¨võÇπ)ned in ‚†°dONLNd≥vπÇÁ) Listing 5-8LJ°dONLNdævËÇÍ)/.
  7184. •H≠4¶H≠"¶H_
  7185. ˇ·ˇ‚7^    °dONLNd¿õä¶∂(£ä Listing 5-8°dONLNdÃõŒ¶>)DDrawing a portion of an icon
  7186. .°dONLNdȵH¡¯(æHHPROCEDURE DoPlotIcon (myRect: Rect; myIcon: Handle; myWindow: WindowPtr;°dONLNd=√œz+Δ myMode: Integer);°dONLNdQ—Z›l(⁄ZVAR°dONLNdWfll΢+    myBitMap:°dONLNdeflΔÎ)ZBitMap;°dONLNdmÌH˘f(ˆHBEGIN°dONLNdt˚Z+myBitMap.baseAddr := myIcon^;°dONLNdì    Z‰*myBitMap.rowBytes := 4;°dONLNd¨Z#ˆ*myBitMap.bounds := myRect;°dONLNd»%Z1Ú*DCopyBits(myBitMap, myWindow^.portBits, myRect, myRect, myMode, NIL);°dONLNd3H?`(<HEND;°dONLNdKäWû+BThe °dONLNdKûW⁄)
  7187. DoPlotIcon°dONLNd K⁄WÊ)< prR`°dONLNd#KÊW) ocedur$¿°dONLNd)KWô)#e plots a portion of an icon by defi$¿°dONLNdMKôWø)ñ    ning a bi$¿°dONLNdVKøWÀ)&tm$¿°dONLNdXKÀW) ap that .°dONLNd`Xädÿ(aäincludes the desiri°dONLNdrXÿdh)N"ed portion of the icon. (The desirœ‡°dONLNdîXhdÔ)ê ed portion of the icon is specifij‡°dONLNdµXd
  7188. )àed by .°dONLNdªeäqú(näthe °dONLNdøeúq¿)myRect°dONLNd≈e¿qÚ)$
  7189.  parameter¬†°dONLNdœeÒq˙)1.) ¬†°dONLNd“e˙q)    Then ¬†°dONLNd◊eqI)    DoPlotIco¬†°dONLNd‡eIqO)6n¬†°dONLNd·eOqU) c¬†°dONLNd„eUq∂)alls the QuickDraw rï°dONLNd˜e∂q‘)aoutine ï°dONLNd˛e‘q)CopyBitsï°dONLNdeq)0 to .°dONLNd
  7190. rä~«({äcopy the apprù†°dONLNdr«~)=opriate bits frÄ°dONLNd&r~µ)<(om their location in memory to the desirM¿°dONLNdNrµ~)≤ed location in the °dONLNdaäã¶(àäspecifiÓ °dONLNdh¶ãÿ)    ed windowaÄ°dONLNdqÿã⁄)2..°dONLNdsëäùû(öäThe °dONLNdwëûùŒ)CopyBits°dONLNdëŒù–)0 °dONLNdÄë–ù⁄)prR`°dONLNdÇë⁄ù˜)
  7191. ocedur$¿°dONLNdàë˜ù˛)e $¿°dONLNdäë˛ù    )=transfers a bit image between two existing bit maps. In this .°dONLNd«ûä™Õ(ßäcase, the two biS °dONLNd◊ûŒ™⁄)DtmiÄ°dONLNdŸû⁄™Ù) aps ar̆°dONLNdflûÙ™)e the bi†°dONLNdÁû™!)!tm°dONLNdÈû!™Â) .apped portion of the icon and the bits in the .°dONLNd´ä∑(¥ädestination window (which arR`°dONLNd3´∑9)äe specifiR`°dONLNd<´9∑e)%
  7192. ed by the R`°dONLNdF´e∑ï),portBitsR`°dONLNdN´ï∑û)0 fiR`°dONLNdQ´û∑Ë)    eld of the windoR`°dONLNda´Ë∑˘)Jw’s °dONLNde∏䃠(¡ägraphics port;°dONLNds∏ ƒ’)@ se°dONLNdv∏’ƒ‹) e °dONLNdx∏‹ƒ2)Listing 6-1 on page °dONLNdå∏2ƒ7)V1Û`°dONLNdç∏6ƒ@)12Û`°dONLNdè∏@ƒF)
  7193.  fÛ`°dONLNdë∏Fƒè)or details). The Û`°dONLNd¢∏èƒ≥)ImyRectÛ`°dONLNd®∏≥ƒ)$ parameter specifiÛ`°dONLNd∫∏ƒ)Res °dONLNdΩ≈ä—†(Œäthe rR`°dONLNd¬≈†—*)!ectangle to copy; it’s passed to R`°dONLNd„≈*—f)ä
  7194. DoPlotIconR`°dONLNdÌ≈f—p)< fr$¿°dONLNd≈p—∑)
  7195. om the calling r˜ °dONLNd≈∂—ˆ)Foutine so that °dONLNd“äfiΔ(€ä
  7196. DoPlotIcon°dONLNd“Δfi))< can be used to plot difR`°dONLNd1“)fi6)cfer$¿°dONLNd4“6fiè)ent parts of the sour˜ °dONLNdI“éfi”)Xce icon. Finally€`°dONLNdY““fi◊)D, €`°dONLNd[“◊fi)
  7197. DoPlotIcon€`°dONLNde“fi)< .°dONLNdffläκ(Ëä is passed a ܇°dONLNdrflºβ)2transfer mode,† °dONLNdÄfl˛Îä)B  which indicates how the bits arô@°dONLNd†fläΠ   )åe to be drawn in the existing .°dONLNdæÏä¯(ıäbit image of the destination rR`°dONLNd‹Ï¯t)Ñectangle. The constant R`°dONLNdÛÏt¯û)fsrcCopyR`°dONLNd˙Ïû¯÷)* is passed in R`°dONLNdÏ÷¯)8 Listing 5-7R`°dONLNdϯ)0 to .°dONLNd˘äÁ(äindicate that the sourÏ@°dONLNd-˘Á˚)]ce bi °dONLNd2˘¸)tm,Ä°dONLNd4˘§) %ap is to overwrite the destination biˇ`°dONLNdY˘§∞)útm¿°dONLNd[˘±æ)ap.
  7198.  H'4H'
  7199. 7H?48H? 9H9
  7200. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd_$H7ñ(2H    Drawing Tji°dONLNdh$ï7©)MextˇˇˇˇˇˇU˛(25
  7201. °dONLNdlHäT¯(QäIn addition to the many rP °dONLNdÖH˘T.)ooutines it pr¡`°dONLNdíH.Tm)5ovides for defiñ°dONLNd°HnT
  7202. )@!ning and drawing both simple and °dONLNd¬Uäaœ(^äcomplex graphi‘ °dONLNd–Uœa⁄)Ec eé°dONLNd”U€aW) lements, QuickDraw also prb°dONLNdÌUWaË)|!ovides support for drawing text. /°dONLNdUÈaÔ)íYÔÄ°dONLNdUÓa)ou can °dONLNdbän:(kä%use QuickDraw to draw characters, worÓ@°dONLNd;b:nÌ)∞*ds, or other textual elements at any desir7¿°dONLNdebÓn)¥ed size °dONLNdmoä{ (xäVand in any available font. It might seem odd that QuickDraw handles these operations, °dONLNd√|äà∏* until you r<`°dONLNdŒ|πàÌ)/Iealize that text, like graphics, permeates the Macintosh user interface. °dONLNdâäïî(íäWÛ`°dONLNdâìï)    indows, menus, and some contrÅ@°dONLNd5â ïÎ)ç1ols (for instance, buttons) have titles, which arê`°dONLNdfâÎïÚ)Àe °dONLNdhñ䢷(üäessential to the userD¿°dONLNd}ñ‚¢”)X6’s understanding and manipulation of the application. å@°dONLNd≥ñ”¢Ï)ÒAs a rUÄ°dONLNdπñÌ¢)
  7203. esult, it °dONLNd√£äØ’(¨ämakes sense to tr†°dONLNd‘£÷Øl)L"eat text fundamentally as a graphifi†°dONLNdˆ£lØx)ñc oD`°dONLNd˘£yØÂ)bject and to assign basic ˇN@ˇ ˇˇˇˇ@
  7204. ˇ·ˇ‚7^
  7205. 4*\¯, Palatino&e.3+l"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@lDrawing4⁄*˙¯
  7206. (‡*102    )BDrawing ÷ )#TV )ext4^*¿¯
  7207. °dONLNd\lhy(eltex¥†°dONLNd\yhÖ)t-df†°dONLNd\Üh¨)rawing r> °dONLNd\¨h,)&esponsibilities to QuickDraw√¿°dONLNd*\+h›)(, which manages all graphics within the °dONLNdRilufl(rlMacintosh system softwar3`°dONLNdji‡uÁ)te.°dONLNdm{lá (Ñl"Although QuickDraw is ultimately rN@°dONLNdè{á≥)°&esponsible for drawing text on the scrt†°dONLNdµ{≥á˜)¶een, you might °dONLNdƒàlî¿(ëlneed to use other TA@°dONLNd◊à¿îÏ)TCoolbox managers for other text-handling needs. For example, if you °dONLNdïl°‘(ûlRwant the user to be able to input and edit some small amount of text, you can use °dONLNdl¢lÆr*Tµ¿°dONLNdm¢qÆõ)
  7208. extEdit. TÇ`°dONLNdw¢õÆ«)*
  7209. extEdit pr``°dONLNdÅ¢«Æ€),Bovides basic text-editing capabilities, such as cutting, copying, °dONLNd√Ølªfi(∏lpasting, and entering wor´Ä°dONLNd‹Øfiª6)rds and characters. T@°dONLNdØ6ª„)X'extEdit calls QuickDraw to display the °dONLNdºl»œ(≈leditable text. Similarly‹°dONLNd/ºŒ»Ì)bF, if your application allows the user to display text in a variety of °dONLNdu…l’:(“l-fonts, you might need to use the Font ManagerïÄ°dONLNd¢…:’Ú)Œ&. The Font Manager supports QuickDraw °dONLNd»÷l‚É(fllby pr›‡°dONLNdÕ÷É‚1)(oviding the character bitmaps it needs t∑ °dONLNdı÷2‚D)Øo drª°dONLNd˘÷D‚ï)aw text in a specifi∞‡°dONLNd÷ñ‚„)Red font, size, and °dONLNd „lÔ(Ïl&style. For a complete description of T °dONLNdF„Ôì)£extEdit and the Font Manager`Ä°dONLNdb„íÔß)É, see ∞¿°dONLNdh„ßÔÒ)Inside Macintosh: °dONLNdzl¸r(˘lT°dONLNd{q¸})ext∑Ä°dONLNd~}¸) .°dONLNdÄlÜ( lThe Vÿ °dONLNdÖÖô);enn Diagrammer application has very minimal text-handling rπ °dONLNd¿ô∞( ôequir–`°dONLNd≈∞Ù)ements. It does °dONLNd’l@(l1not support any text entry or editing by the user´°dONLNd@Î)‘,. Instead, it obtains all the text it needs °dONLNd2l(s(%lfrò‡°dONLNd4s(á)om r'`°dONLNd8à(†)esouro†°dONLNd=†(¿)ces stor `°dONLNdE¡(Í)! ed in its rl@°dONLNdPÍ())esour¥Ä°dONLNdU(%)    ce fork. [ °dONLNd^%(>)#As a r$`°dONLNdd?(p) esult, the V÷†°dONLNdpo(Ò)0enn Diagrammer application °dONLNdã)l5(2l&can use basic QuickDraw text-drawing r|`°dONLNd±)5Â)≤/outines to display its text. For example, the V∏Ä°dONLNd‡)‰5ˆ)Δenn °dONLNd‰6lBò(?l@Diagrammer application draws the message in a window’s status ar¥Ä°dONLNd$6òB‚(?òea by calling the .°dONLNd6ClO∏(Llapplication-defi°dONLNdFC∏OŒ)Lned rR`°dONLNdKCŒOÏ)outine ,
  7210. CourierR`°dONLNdRCÏO4) DoStatusMesgR`°dONLNd^C4OK)H, defiR`°dONLNddCKOh)ned in R`°dONLNdkChOò) Listing 5-9R`°dONLNdvCòOõ)0.
  7211. r*z¯4s*z¯"s*_
  7212. ˇ·ˇ‚7^    .°dONLNdxhlsò(pl Listing 5-9°dONLNdÑh∞sc)D+Retrieving a status message from a resource
  7213. .°dONLNd∞Ç*én(ã*6PROCEDURE DoStatusMesg (myWindow: WindowPtr; myMessage°dONLNdÊÇnéz(ãnID°dONLNdËÇzéº) : Integer);°dONLNdıê<úN(ô<VAR°dONLNd˚ûN™x+myText:°dONLNdûñ™¿)HStr255;°dONLNd¨*∏H(µ*BEGIN°dONLNd∫<ΔÆ+GetIndString(myText°dONLNd(∫ÆΔΔ)r, rV°dONLNd,∫ΔΔfi)ennD°dONLNd0∫fiΔ2), myMessageID)°dONLNd>∫2Δ8)T;°dONLNdA»<‘ˆ(—<DoStatusText(myWindow, myText);°dONLNda÷*‚B(fl*END;°dONLNdfÓl˙¬+BAs you can see, the °dONLNdzÓ¬˙
  7214. )V DoStatusMesg°dONLNdÜÓ
  7215. ˙)H rR`°dONLNdàÓ˙Ê).outine takes two parameters, a window pointer .°dONLNd∂˚l(l%specifying the window whose status ar”°dONLNd€˚L)¨ea is to be fi◊‡°dONLNdÈ˚LÌ)4&lled in and an integer specifying the .°dONLNdl®(lindex into an °dONLNd®Ã)<'STR#'°dONLNd#Ó)$ rR`°dONLNd%“È)esour$¿°dONLNd*Ș)ce. $¿°dONLNd.˜)Then $¿°dONLNd3R) DoStatusMes$¿°dONLNd>RX)Bg$¿°dONLNd?X^) r˜ °dONLNdA]¨)etrieves the appr…Ä°dONLNdR¨˜)Oopriate message ˇˇ«ö°dONLNdbl!(l"text and calls the application-defiûh°dONLNdÖ!#)úned pr8b°dONLNdã$!A)ocedur
  7216. ¬°dONLNdëA!G)e ˇˇVŒ“\°dONLNdìG!è) DoStatusTextˇˇ«ö“\°dONLNdüè!˜)H to print the message in .°dONLNd∏"l.°(+l
  7217. the windowÎ`°dONLNd¬"†.¢)4..°dONLNdƒ4l@t(=lVd@°dONLNd≈4s@ÿ)enn Diagrammer calls d@°dONLNd⁄4ÿ@)e DoStatusMesd@°dONLNdÂ4@ )Bgd@°dONLNdÊ4 @*) wd@°dONLNdË4*@K)
  7218. heneved@°dONLNdÓ4K@`)!r it nd@°dONLNdÙ4`@Û)!eeds to display a message in the .°dONLNdAlMë(Jl    status ar ‡°dONLNdAëMÓ)%Qea. For instance, when the user wants to determine if a syllogism is valid or not ‡°dONLNdoAÔMÙ(JÔ, °dONLNdqNlZs(WlVú`°dONLNdrNrZπ)enn Diagramme!¿°dONLNdN∫Zƒ)Hr c†°dONLNdÇN≈Zî) /hecks the syllogism’s validity and then executeÄ@°dONLNd±NîZÕ)œs the code in °dONLNd¿[lgü(dl Listing 5-10 @°dONLNdÃ[†g¢)4.ˇ0J@ˇ ˇˇˇˇ@
  7219. ˇ·ˇ‚7^
  7220. 4H\, Palatino&e.3+ä"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@äDrawing4⁄ä˙(‡äDrawing ÷ )#TV )ext
  7221. (‡103
  7222. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7223. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7224.  
  7225.  
  7226.  
  7227.  
  7228.  
  7229. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  7230. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7231. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7232.  
  7233.  
  7234.  
  7235.  
  7236.  
  7237. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˝ˇ˛ˇ    ˛ˇˇ˛ˇ
  7238. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  7239. 4È4fl?òÄ
  7240. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7241. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7242.  
  7243.  
  7244.  
  7245.  
  7246.  
  7247. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˛˙ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ¸˛ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝ˇˇ˛
  7248. ˛ˇˇˇˇ
  7249. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜    ˇ˛ˇ˛ ˇˇ˛ˇˇ ˇˇ˛ˇˇ˚ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  7250. gHn4gHn"hH_
  7251. ˇ·ˇ‚7^    °dONLNd\ägª(dä Listing 5-10°dONLNd\ŒgW)D"Informing the user of an argument’›@°dONLNd/\Wg®)âs validity or invalidity,
  7252. Courier
  7253. .°dONLNdHväÇÿ(äIF valid THEN°dONLNdWÑúê∫+BEGIN°dONLNd_íÆû+IF gShowNames THEN°dONLNdyí>û)ê!{show names of valid syllogisms?}°dONLNdû†¿¨fi(©¿BEGIN°dONLNd®Æ“∫D+GetIndString(myMesg°dONLNdªÆD∫\)r, rV°dONLNdøÆ\∫Œ)ennD, eArgIsValid);°dONLNd◊º“»z(≈“DoGetName(myWindow, myName);°dONLNd¯ “÷⁄*,myMesg := concat(myMesg, ' (', myName, ')');°dONLNd)ÿ“‰å*DoStatusText(myWindow, myMesg);°dONLNdLÊ¿Ú“(Ô¿END°dONLNdRÙÆΔ(˝ÆELSE°dONLNdZ¿ò+$DoStatusMesg(myWindow, eArgIsValid);°dONLNdÄúÆ(úEND°dONLNdÑä*¢('äELSE°dONLNdä,ú8z+%DoStatusMesg(myWindow, eArgNotValid);.°dONLNd∞DäP=(Mä(This code fragment illustrates why the V °dONLNdÿD=P–)≥enn Diagrammer application defi7 °dONLNd˜D–PÙ)ìnes two .°dONLNdˇQä]ò(ZädifR`°dONLNdQò]•)fer$¿°dONLNdQ•]π)ent r˜ °dONLNd
  7254. Q∏]›)    outines, ˜ °dONLNdQ›]%)% DoStatusMesg˜ °dONLNdQ%]:)H and ˜ °dONLNd$Q:]Ç) DoStatusText˜ °dONLNd0QÇ]á)H. ˜ °dONLNd2Qá]¢)The fi˜ °dONLNd8Q¢]≥)rst, ˜ °dONLNd=Q≥]˚) DoStatusMesg˜ °dONLNdIQ˚]˛)H,˜ °dONLNdJQ˛]) ˇˇ˝⁄°dONLNdK^äjé(gärR`°dONLNdL^éj›)etrieves the desir t°dONLNd^^fij-)Ped message text frÏb°dONLNdp^-jG)Oom a r∫v°dONLNdv^Hj_)esourå÷°dONLNd{^_jî)ce and calls Üd°dONLNdà^ïj»)6 the second, ˇˇ˘éÇ°dONLNdî^…j)4 DoStatusTextˇˇ˝⁄Ç°dONLNd†^j)H,Ç°dONLNd°^j) ˇˇæΔ°dONLNd¢käwé(tät°dONLNd£kéwö)o d>Δ°dONLNd¶kõwÌ)isplay it on the scr >°dONLNd∫kÓwy)S een. The application also calls ˇˇ<RΔ°dONLNd⁄kyw¡)ã DoStatusTextˇˇæΔΔ°dONLNdÊk¡w)H at other times, for .°dONLNd˚xäÑÆ(Åäinstanceƒ`°dONLNdxÆÑ∞)$,D`°dONLNdx±Ñc)( when it needs to add something to the rf@°dONLNd,xcÑ{)≤esourÆÄ°dONLNd1x{Ñ) ce-based message string. In the °dONLNdQÖäë›(éäexample shown in ‡`°dONLNdbÖ›ë)S Listing 5-10Ć°dONLNdnÖë)4, thî`°dONLNdrÖë`)e application nÊ@°dONLNdÅÖ`ëÒ)A"eeds to get the name of the valid °dONLNd£íäûí(õä>syllogism, if the user has indicated that this should be done..°dONLNd‚§ä∞û*The °dONLNdʧû∞Ê) DoStatusText°dONLNdÚ§Ê∞Ú)H prR`°dONLNdı§Ú∞) ocedur$¿°dONLNd˚§∞2)e is defi$¿°dONLNd§2∞O)#ned in $¿°dONLNd §O∞) Listing 5-1ò °dONLNd§~∞É)/1ò °dONLNd§É∞)!. Its job is to display the text .°dONLNd8±äΩ/(∫ä&passed as a parameter in the status arëÄ°dONLNd^±/Ωs)•ea of the specifi°dONLNdo±sΩ•)D    ed windowc`°dONLNdx±•Ωß)2.
  7255. ‡HË4·HË"·H_
  7256. ˇ·ˇ‚7^    °dONLNdz÷ä·ª(fiä Listing 5-11°dONLNdá÷Œ·@)DDisplaying a status message
  7257. .°dONLNd£H¸∂(˘H=PROCEDURE DoStatusText (myWindow: WindowPtr; myText: Str255);°dONLNd‚˛Z
  7258. l+VAR°dONLNdË lñ+myRect:°dONLNdÛ ¥“)HRect;°dONLNd˚l&¢(#l    origSize:°dONLNd¥&‰)HInteger;°dONLNd(l4¢(1l    origFont:°dONLNd (¥4‰)HInteger;°dONLNd+6lB¢(?l    myHandle:°dONLNd86¥B¸)H MyDocRecHnd;°dONLNdFDZPx(MZCONST°dONLNdNRl^®+
  7259. kSlop = 4;°dONLNd[`ll®*
  7260. kSize = 9;°dONLNdhnlzê*kFont °dONLNdnnêz“)$ = applFont;°dONLNdz|Hàf(ÖHBEGIN°dONLNdÅäZñ‰+IF myWindow <> NIL THEN°dONLNdõòl§ä+BEGIN°dONLNd§¶~≤Í+SetPort(myWindow);°dONLNd∫¥~¿,*origSize := myWindow^.txSize;°dONLNd‚¥D¿
  7261. )Δ!{remember original size and font}ˇ@ˇ ˇˇˇˇ@
  7262. ˇ·ˇ‚7^
  7263. 4*\¯, Palatino&e.3+l"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@lDrawing4⁄*˙¯
  7264. (‡*104    )BDrawing ÷ )#TV )ext4^*¿¯,
  7265. Courier
  7266. .°dONLNd\`h(e`origFont := myWindow^.txFont;°dONLNd!j`v¿*TextSize(kSize);°dONLNd<j&v»)Δ{set desired size and font}°dONLNd[x`Ñ¿(Å`TextFont(kFont);°dONLNdpî`†J*'SetRect(myRect, kToolWd * kNumTools, 0,°dONLNd°¢ÃƧ+l$ myWindow^.portRect.right, kToolHt);°dONLNd…∞`ºÃ(π`EraseRect(myRect);°dONLNdflæ` ¸*IF length(myText) > 0 THEN°dONLNd˛Ãrÿê+BEGIN°dONLNd    ⁄ÑÊ∂+3MoveTo(myRect.left + kSlop, myRect.bottom - kSlop);°dONLNdBËÑÙˆ*DrawString(myText);°dONLNdZˆrä(ˇrEND;°dONLNdc`“(`TextSize(origSize);°dONLNdÅ&Ê)Δ {restore original size and font}°dONLNd• `,“()`TextFont(origFont);°dONLNdΩ<`Hí*3{Remember the last message printed in this window.}°dONLNdÙJ`Vt*.myHandle := MyDocRecHnd(GetWRefCon(myWindow));°dONLNd&X`d * myHandle^^.statusText := myText;°dONLNdIfNrf(oNEND;°dONLNdNt*ÄB(}*END;°dONLNdSålòÄ+BThe °dONLNdWåÄò») DoStatusText°dONLNdcå»ò‘)H prR`°dONLNdfå‘òÒ) ocedur$¿°dONLNdlåÒòˇ)e fi$¿°dONLNdpåˇò)rst r˜ °dONLNduåò„)/emembers the graphics port’s existing font and ˇˇ„Ú°dONLNd§ôl•((¢l,size, so that it can change and then later rU‚°dONLNd–ô(•>)ºestor(B°dONLNd’ô>•õ)e those values. Then ˇˇ´÷∏
  7267. °dONLNdÍôõ•„)] DoStatusTextˇˇ„Ú∏
  7268. °dONLNdˆô„•˜)H sets .°dONLNd¸¶l≤í(Øl    the desir≠ °dONLNd¶í≤≤)&Aed font and size of the status message by calling the QuickDraw r}`°dONLNdF¶≥≤’(Ø≥outines .°dONLNdN≥løú(ºlTextFont°dONLNdV≥úø±)0 and °dONLNd[≥±ø·)TextSize°dONLNdc≥·øÊ)0. R`°dONLNde≥ÊøÌ)Yg`°dONLNdf≥Ïøl)ou should always use these r9¿°dONLNdÇ≥lø)Äoutines—instead of changing °dONLNdû¿lÃÖ(…lthe fi°dONLNd§¿ÖÃ∑) elds of the °dONLNd∞¿∑ÃÁ)2grafPort°dONLNd∏¿ÁÃÌ)0 rR`°dONLNd∫¿ÌÃˇ)ecor$¿°dONLNdæ¿ˇÃ¯)5d—whenever you want to change a graphics port’s font .°dONLNdÛÕlŸí(÷l    and size.
  7269. Á*ı¯4Ë*ı¯°dONLNd˝Ëlã*IMPORTÄ°dONLNdËãõ)ANT
  7270. ˇ·ˇ‚7^
  7271. °dONLNdÛlˇÈ(¸lAlthough you should never ∏‡°dONLNd!ÛÈˇ)}change≠¿°dONLNd'Ûˇ) the fió‡°dONLNd.Ûˇè)elds of a graphics port dirL†°dONLNdIÛêˇ§)rectly$†°dONLNdNÛ§ˇ©), °dONLNdPˇl ‘(lyou sometimes need to Ä°dONLNdfˇ’ ÿ)irœÄ°dONLNdgˇÿ Â)ead#`°dONLNdjˇÊ ) those fi¿°dONLNdsˇ ))"elds dir‡°dONLNd{ˇ* >)"ectly·°dONLNdġ= M). In õ¿°dONLNdÖˇN |) Listing 5-1Ø`°dONLNdêˇ| Å).1Ø`°dONLNdëˇÅ ñ), the °dONLNdó l’(loriginal font and size ar°dONLNd∞ ’#)ie determined by r¸Ä°dONLNd¡ #i)Neading the appr—`°dONLNd– iê)F    opriate fiº¿°dONLNd⁄ ë£)(elds«Ä°dONLNdfi £•) .°dONLNdfll#p( l(°dONLNd‡p#î)txFont°dONLNdÊî#©)$ and °dONLNdΩ#Õ)txSize°dONLNdÒÕ#—)$)°dONLNdÚ—#3) of the graphics port rR`°dONLNd    3#E)becor$¿°dONLNdE#N)d.$¿°dONLNdN#û)     This is necessary .°dONLNd"#l/Ù(,lbecause QuickDraw doesn’t pr⁄‡°dONLNd>#Ù/)àovide r    `°dONLNdE#/F)  outines to r†°dONLNdQ#F/£)2ead that information °dONLNdf/l;s(8lfrò‡°dONLNdh/s;Ã)om a graphics port r>‡°dONLNd|/Õ;fl)Zecor≥@°dONLNdÄ/fl;Á)d.,Zapf DingbatsO°dONLNdã2Ì:Û)s
  7272. .°dONLNdç@lLt(IlO°dONLNdé@tLÕ)nce it’s set the desirR`°dONLNd§@ÕL*)Yed font and size, the R`°dONLNd∫@*Lr)] DoStatusTextR`°dONLNdΔ@rL~)H pr$¿°dONLNd…@~Lõ) ocedur˜ °dONLNdœ@öLπ)e calls ˜ °dONLNd◊@πL„)SetRect˜ °dONLNdfi@„L)* to ˇˇzÇ°dONLNd‚MlY~(Vldefi°dONLNdÊM~Yû)ne the rGd°dONLNdÓMüYz)!3ectangle into which the text is to be drawn. Then, ˇ˛oÜx°dONLNd!M{Y√)‹ DoStatusTextˇˇzÇx°dONLNd-M√Y¯)H erases that °dONLNd:Zlfp(clrR`°dONLNd;Zpf«)ectangle by calling R`°dONLNdOZ«f˝)W    EraseRectR`°dONLNdXZ˝fJ)6. If the string to bR`°dONLNdlZJfÜ)Me displayed cR`°dONLNdyZÜfÁ)<onsists of at least one ˇˇî
  7273. °dONLNdëglsò(pl    character¬†°dONLNdögósõ)+, ˇ˛ºV™°dONLNdúgús‰) DoStatusTextˇˇî
  7274. V™°dONLNd®g‰s5)H moves to the appry2°dONLNd∫g5sØ)Qopriate spot in the status ar/ƒ°dONLNd◊g∞s¯){ea and calls the °dONLNdËtlÄß(}l QuickDraw rR`°dONLNdÛtßÄ≈);outine R`°dONLNd˙t≈Ä˚)    DrawStrinR`°dONLNdt˚Ä)6gR`°dONLNdtÄ,)    , which dR`°dONLNdt,Ät)+raws the specifiR`°dONLNdttÄÃ)Hed string at the curr$¿°dONLNd2tÃÄ‹)Xent .°dONLNd6Ålç˙(äldrawing location in the window °dONLNdTÅ˙ç¸)é.ˇ)ä@ˇ ˇˇˇˇ@
  7275. ˇ·ˇ‚7^
  7276. 4H\, Palatino&e.3+ä"CHAPTER ”)>5,     Helvetica    ˇˇ—ÚˇÆ(@äDrawing4⁄ä˙(‡äDrawing ÷ )#TV )ext
  7277. (‡105
  7278. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7279. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7280.  
  7281.  
  7282.  
  7283.  
  7284.  
  7285. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  7286. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7287. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7288.  
  7289.  
  7290.  
  7291.  
  7292.  
  7293. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˝ˇ˛ˇ    ˛ˇˇ˛ˇ
  7294. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  7295. 4È4fl?òÄ
  7296. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7297. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7298.  
  7299.  
  7300.  
  7301.  
  7302.  
  7303. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˛˙ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ¸˛ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝ˇˇ˛
  7304. ˛ˇˇˇˇ
  7305. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜    ˇ˛ˇ˛ ˇˇ˛ˇˇ ˇˇ˛ˇˇ˚ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿.°dONLNd\äh≠(eäFinallyd@°dONLNd\¨h±)", ,
  7306. Courierd@°dONLNd    \±h˘) DoStatusTextd@°dONLNd\˘hˇ)H r6†°dONLNd\ˇh)estor    °dONLNd\h)8es the graphics port’s original font and size, and then °dONLNdTiäu,(rä&copies the string just drawn into the °dONLNdzi,uh)¢
  7307. statusText°dONLNdÑihuq)< fi°dONLNdáiqu¯)    eld of the window’s document .°dONLNd§väÇç(ärE°dONLNd•védž)ecorπ`°dONLNd©v†Ç≈)d. The V-@°dONLNd±v≈Çr)%%enn Diagrammer application needs to rñ`°dONLNd÷vrǸ)≠emember each window’s latest °dONLNdÛÉäè (åästatus message so that it can r0@°dONLNdÉè)É:edraw the message whenever necessary (for example, if the °dONLNdLêäú”(ôämessage is cover0`°dONLNd\ê‘úç)J(ed up by another window and then later rçÄ°dONLNdÑêçú¥)π    evealed).°dONLNdé¢äÆë(´äVú`°dONLNdè¢êÆ◊)enn Diagramme!¿°dONLNdú¢ÿƉ)Hr uõÄ°dONLNdü¢‰Æ≈) 6ses similar techniques for all other text drawing it r±`°dONLNd’¢≈Æ‹)·equir»†°dONLNd⁄¢‹ÆÍ)es. °dONLNdfiØ䪥(∏äFRemember that this application supports only static text (that is, texˆ‡°dONLNd$Ø¥ª“(∏¥t that cˇ†°dONLNd,Ø“ª˙)    annot be °dONLNd5ºä»º(≈ä edited) stor@°dONLNdAºΩ»%)3ed in the application’s rˇ‡°dONLNdZº$»<)gesourH °dONLNd_º=»f)
  7308. ce fork. TLJ°dONLNdiºe»±)(o allow the user tµ¿°dONLNd{º±»Ω)Lo et‡°dONLNd~ºæ»)nter and edit some °dONLNdë…ä’™(“ätext, yo˚†°dONLNdô…™’∏) u nT °dONLNdú…π’˙)eed to use morW@°dONLNd™…˙’ñ)A$e powerful text-handling tools. See œÄ°dONLNdŒ…ñ’Ê)úInside Macintosh: T±Ä°dONLNd·…Ê’Ú)PextÈ°dONLNd‰…Ú’)  for °dONLNdÈ÷ä‚;(flä&information about using system softwar\‡°dONLNd÷;‚Â)±&e services like the Font Manager and Ty`°dONLNd5÷‰‚)© extEdit to °dONLNd@„äÔ˜(Ïähandle editable text. See @°dONLNdZ„¯ÔU)nInside Macintosh: FilesÀ °dONLNdq„UÔ)]+ for information on storing text and other °dONLNdú丱(˘ä    data in fi§†°dONLNd¶±¸‡)' les. Finally †°dONLNd≤‡¸à)/&, see the chapter “Dialog Manager” in Ô°dONLNdÿà¸)®Inside Macintosh: Macintosh °dONLNdÙ˝ä    ê(äT°dONLNdı˝è    ”)oolbox EssentialsE°dONLNd˝‘    ˚)ED for information on handling text entry and editing in a dialog box.ˇJ@ˇ ˇˇˇˇ@
  7309. ˇ·ˇ‚7^
  7310. 4^*¿¯ˇv@ˇ ˇˇˇˇ@
  7311. ˇ·ˇ‚7^
  7312. 4⁄∫˙,     Helvetica    .(‡∫Contents, Palatino
  7313. (‡107    3, Ã(#∫CHAPTER ßí)h6
  7314. ˇˇˇˇˇˇˇˇ4 4>lòÄ0 @>oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7315. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7316.  
  7317.  
  7318.  
  7319.  
  7320.  
  7321. ˆ                        ˜¯˘˙˚¸˝˛ˇ @>o @>o$——————————————————————————————òÄ
  7322.  6>@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7323. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7324.  
  7325.  
  7326.  
  7327.  
  7328.  
  7329. ˆ                        ˜¯˘˙˚¸˝˛ˇ 6>@ 6>@˜˜˜˜˜˜˜˜˜˜˜˜˝¸ˇ˛˙ˇ
  7330. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜ˇˇˇˇˇˇ(JH
  7331. Figure 6-0*     Listing 6-0*    T)able 6-0
  7332. zH,
  7333. 4zH, H°dONLNd∫*˘+m Contentsˇˇˇˇˇˇ
  7334. ˇ·ˇ‚7^ˇˇ∫Ρ◊(qH6°dONLNd]∫y”)rWø;°dONLNd]”y))indows
  7335. °dONLNd;∫G‚(D∫About WÅ@°dONLNd;‚G)(indows`@°dONLNd ;G&)5109°dONLNd$HƒTŒ(QƒWÛ`°dONLNd%HÕT)     indow Partsë°dONLNd2HT)J1`°dONLNd3HT&)10°dONLNd6UƒaŒ(^ƒWÛ`°dONLNd7UÕa)     indow Recor7¿°dONLNdBUa)9dsêÄ°dONLNdFU$a))1‡°dONLNdGU)a3)12°dONLNdJbƒnŒ(kƒWÛ`°dONLNdKbÕn·)    indo>`°dONLNdOb‚nÚ)w TP °dONLNdRbÚn)ypesË°dONLNdXbn)(1[`°dONLNdYbn))13°dONLNd\o∫{≈(x∫Cr\°dONLNd^o≈{Ï) eating W§@°dONLNdfoÏ{ )'indowsÉ@°dONLNdno!{&)51ˆ†°dONLNdoo%{/)15°dONLNdr|∫à(Ö∫
  7336. Handling W„ °dONLNd||à,)6 indow Events·Ä°dONLNdä|AàF)Q1T‡°dONLNdã|FàP)19°dONLNdéâƒï(íƒ Mouse Events‘‡°dONLNdúâï)R1H@°dONLNdùâï%)19°dONLNd†ñƒ¢(üƒUpdate EventsÕÄ°dONLNdØñ¢()U123°dONLNd≥£ƒØ    (¨ƒActivate Events‡°dONLNdƒ£Ø,)Y125°dONLNd»∞∫ºË(π∫    Closing Wn °dONLNd—∞˺).indowsM °dONLNdŸ∞º,)5128ˇJ@ˇ ˇˇˇˇ@
  7337. ˇ·ˇ‚7^
  7338. 4^*¿¯ˇ4‡@ˇ ˇˇˇˇ@
  7339. ˇ·ˇ‚7^, Palatino&e.3+ä"CHAPTER ”)>6
  7340. 4⁄ä˙,     Helvetica    (‡äAbout W)#indows
  7341. (‡109
  7342. ˇˇˇˇˇˇˇˇ4 4>lòÄ0 @>oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7343. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7344.  
  7345.  
  7346.  
  7347.  
  7348.  
  7349. ˆ                        ˜¯˘˙˚¸˝˛ˇ @>o @>o$——————————————————————————————òÄ
  7350.  6>@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7351. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7352.  
  7353.  
  7354.  
  7355.  
  7356.  
  7357. ˆ                        ˜¯˘˙˚¸˝˛ˇ 6>@ 6>@˜˜˜˜˜˜˜˜˜˜˜˜˝¸ˇ˛˙ˇ
  7358. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜
  7359. 4C4fl?òÄ
  7360. C6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7361. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7362.  
  7363.  
  7364.  
  7365.  
  7366.  
  7367. ˆ                        ˜¯˘˙˚¸˝˛ˇC6fl@C6fl@$˚˝ˇ˛˛ˇ˝˚ˇˇˇ˘ˇˇ˚ˇˇˇ˛˛ˇ˝˚˝ˇ˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝˛ˇ˛
  7368. ˛ˇ˛ˇˇ
  7369. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  7370. ˛ˇ˛ˇˇ
  7371. ˛ˇ˛ˇˇ˝˛ˇ˛˜˜¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜    ˛ˇˇ˛
  7372. ˛ˇˇˇˇ
  7373. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜    ˇˇ—ÚˇÆ°dONLNdˇˇ(@äW–í°dONLNdˇˇ)indowsˇˇˇˇˇˇ≠>(@6
  7374. °dONLNd\ähé(eä9This chapter describes how your application can use the WI°dONLNd9\éhÍ(eéindow Manager to crÍ °dONLNdL\Íh)\    eate and °dONLNdUiäuÁ(rämanage windows. WßÄ°dONLNdfiÁu    )]Aindows delineate the space within which the user enters or views °dONLNdßväÇı(äRinformation, and every Macintosh application that has a user interface should use °dONLNd˘Éäè9*$windows to communicate with the user,@°dONLNdÉ9è>)Ø. Õ‡°dONLNdÉ=è)/Any piece of information that your application °dONLNdNêäúì(ôäprG °dONLNdPêîúv)
  7375. 2esents to the user should be displayed in a windowΔ°dONLNdÇêuú¢)· . Similarly·@°dONLNdçê°ú),, any piece of information °dONLNd®ùä©(¶ä!that your application solicits frˇÄ°dONLNd…ù©Á)á/om the user should involve the user performing °dONLNd¯™ä∂û(≥äapprI@°dONLNd¸™ü∂î)8opriate actions (such as typing or clicking) in a window܇°dONLNd4™ì∂ï)Ù.°dONLNd6ºä»û(≈äTher¿°dONLNd:ºü»Ø)e ar`°dONLNd>ºØ»Ï)Ce two general kinds of windows: document windows and dialog boxes. °dONLNdÅ…ä’Ô(“äDocument windows ar÷Ä°dONLNdî…Ô’Û)e;e used primarily to allow the user to enter and manipulate °dONLNdœ÷ä‚(flä[information, such as text, graphics, or other data. Often, but not always, the information °dONLNd*„äÔ"* in a document window can be stor9Ä°dONLNdJ„#ÔI)ô    ed in a fie`°dONLNdT„IÔ\)&le, fr0@°dONLNdZ„]Ô›)om which the user can later róÄ°dONLNdw„›Ô)Ä etrieve it. °dONLNdÉ丌(˘äDialog boxes ar°dONLNdíœ¸ˇ)EEe used for many other purposes, such as alerting the user of unusual °dONLNd◊˝ä    ¶(äoccurrî¿°dONLNd›˝¶    ,) ences, soliciting information fr‚°dONLNd˝˝,    `)Ü om the userK‡°dONLNd˝`    )4%, and displaying various application °dONLNd-
  7376. äŸ(äsettings or user pr@‡°dONLNd@
  7377. ⁄Í)PeferÌ°dONLNdD
  7378. Í)ences.°dONLNdKä((%äTThis chapter focuses on techniques for handling windows in general, with particular °dONLNdü)ä5h*-emphasis on document windows. It shows how to,Zapf Dingbats°dONLNdÕ?äFè*n
  7379. °dONLNdœ<ñH#) determine the type of a window°dONLNdÓQäXè(Wän
  7380. °dONLNdNñZû) crµ@°dONLNdÚNûZ)eate and display windows°dONLNd cäjè(iän
  7381. °dONLNd`ñl
  7382. ) handle events in windows°dONLNd&uä|è({än
  7383. °dONLNd(rñ~≈) close and r‡°dONLNd3rΔ~)0emove windows°dONLNdAÉäè∑(åä
  7384. For specifie`°dONLNdLÉ∏è
  7385. ).Lc information about dialog windows, see the chapter “Dialog Boxes” later in °dONLNdòêäú•(ôäBthis book. For a complete description of the capabilities of the W≤¿°dONLNd⁄ê•ú(ô•indow Manager and for °dONLNdùä©(¶äcode samples illustrating morô@°dONLNdù©^)Ée advanced windȯ°dONLNdù^©o)Qw-hj °dONLNd ùp©)$andling techniques, see the chapter °dONLNdD™ä∂ô(≥ä“WÛ`°dONLNdF™ò∂Ò)indow Manager” in a °dONLNdX™Ú∂p)ZInside Macintosh: Macintosh T≥†°dONLNdu™o∂≥)}oolbox Essentialsx†°dONLNdÜ™¥∂∂)E.
  7386. ΩHÿ4æHÿ
  7387. ËH4ÈH ÍHÍ
  7388. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdà’HËä(„HAbout W)K°dONLNdè’äËø)BindowsˇˇˇˇˇˇU˛(„6
  7389. °dONLNdñ˘äë(äA∫†°dONLNdó˘ëì) :†°dONLNdò˘îπ)window¸‡°dONLNdû˘πÅ)%0 is a user interface element that delimits an arÙ °dONLNdŒ˘Å∏)»ea on the scr‘@°dONLNd€˘∏)7een in which the °dONLNdÏä9(ä'user can enter or view information. Heré`°dONLNd9◊)Ø$e “information” is intended quite br2@°dONLNd7ÿ)ü oadly; for °dONLNdBä¬(äFexample, an application that draws mazes and allows the user to trace °†°dONLNdଇ(¬a path ∑Ä°dONLNdè‡Ì)thrê@°dONLNdíÌ)ough °dONLNdó ä,+()ä#the maze by moving the cursor can rΩÄ°dONLNd∫ +, )°2easonably be thought of as displaying information °dONLNdÏ-ä9£(6ä@(the maze) and allowing the user to enter information (the desira†°dONLNd,-£9‘(6£ ed path thr5†°dONLNd7-‘9˝)1    ough the °dONLNd@:äF©(Cämaze).  °dONLNdG:™F√) As a r‹`°dONLNdM:√F)Mesult, virtually any interaction with the user that happens outside the menu °dONLNdöGäSV(Pä*bar and menus should occur within a window@°dONLNdƒGVSX)Ã.°dONLNdΔYäe‡(bäThe system softwar↰dONLNdÿY‡eÒ)Ve prö`°dONLNd‹YÒe˛):ovides a wide array of types of window to accommodate the °dONLNd    fär(oämany uses they can have. Wb°dONLNd    0frI)}indow types ar£@°dONLNd    >fIr˝)B(e distinguished by their appearance and °dONLNd    fsä±(|äbehavior‹°dONLNd    ns∞)&L. Some windows have title bars and others do not. Some windows can be moved °dONLNd    ∫Ääåí(âäarE°dONLNd    ºÄìå◊)    ound on the scr≈@°dONLNd    ÀÄ◊åp)D#een by the user and others cannot. X‡°dONLNd    ÓÄqå)ö!In your choice of a window type, °dONLNd
  7390. çäô˛(ñäyou should be guided by t≈°dONLNd
  7391. (ç˛ôÓ)t4he behavior your application supports in that window¸`°dONLNd
  7392. \çÌôÔ)Ô.ˇ!@ˇ ˇˇˇˇ@
  7393. ˇ·ˇ‚7^
  7394. 4*\¯, Palatino&e.3+l"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@lW–í)indows4⁄*˙¯
  7395. (‡*110    )BAbout W)#indows4^*¿¯
  7396. ^*k¯4^*k¯°dONLNd]lh(elNote
  7397. ˇ·ˇ‚7^
  7398. °dONLNdilur*Y@Ä°dONLNdiru«)ou can, if necessaryÔ‡°dONLNdiΔu€)T, defi‚°dONLNd i‹u.)ne your own custoÄ°dONLNd1i/uZ)S    m types o)@°dONLNd:iZu§)+f windows, with °dONLNdJulÅ7(~l+an appearance and behavior unlike the windo•°dONLNduu7ÅL)Àws pª °dONLNdyuLÅO)rÄ °dONLNdzuPÅè)ovided by the °dONLNdàÅlçÆ(älsystem softwarM‡°dONLNdñÅØç )Ce. For compatibility rÆ°dONLNd¨Å çT)\easons, howeverc¿°dONLNdªÅTçì)I, this practice iN‡°dONLNdÃÅîçö)@s °dONLNdŒçlôq(ñlg °dONLNdœçrôç)eneralN¿°dONLNd’ççôï)lyΔ@°dONLNd◊çïô–) discouraged.,Zapf Dingbats[`°dONLNdÌê÷ò€)Au
  7399. °dONLNdÔûl™(ßl$As indicated earlier in this chapter@°dONLNdû™-)ò    , the man°dONLNdû-™T))    y types o¸‡°dONLNd%ûT™é)' f windows arK¿°dONLNd1ûè™Ò);e divided loosely into °dONLNdH´l∑·(¥lNdocument windows and dialog boxes. The distinction between windows and dialog °dONLNdñ∏lƒ *boxes is to some degr@°dONLNd´∏Àƒ˛)_ ee arbitrary$ °dONLNd∑∏˝ƒO)2, but in general, yoÇ`°dONLNdÀ∏Oƒ])Ru u†°dONLNdŒ∏^ƒ◊)se the Dialog Manager to crÜ`°dONLNdÈ∏◊ƒÎ)yeate °dONLNdÓ≈l— (Œl!and manage dialog boxes and the WΔ†°dONLNd≈ —h)†indow Manager to crg¿°dONLNd"≈i—Â)]eate and manage document °dONLNd;“lfiD(€l/windows. The Dialog Manager essentially just pr$°dONLNdj“Efix)Ÿ ovides a “frc`°dONLNdv“xfiÕ)3ont-end” to other T™`°dONLNdâ“ÃfiÏ)Toolbox °dONLNdêfll΄(Ëlmanagers, including the W|†°dONLNd©fl„Î))window Managers@°dONLNd∂fl)ÎW)F , the Contr5‡°dONLNd¡flXÎä)/
  7400. ol ManagerË`°dONLNdÀflâ΂)1, the Event Manager9¿°dONLNdfifl‚ÎÁ)Y, °dONLNd‡Ïl¯Ö(ıland T"‡°dONLNdÂÏÖ¯n)4extEdit. The Dialog Manager makes it very easy to cr£ °dONLNdÏn¯Ì)Èeate and handle user actions °dONLNd6˘lÎ(lin windows containing contr™`°dONLNdQ˘Îø)0ols, text boxes, and other dialog items. Howeverû`°dONLNdÅ˘øÈ)‘
  7401. , because °dONLNdãlØ(ldialog boxes arbÄ°dONLNdöØÅ)C,e also windows, you might need to use some WqÄ°dONLNdΔÅŒ)“indow Manager rjÄ°dONLNd’Œ)Moutines °dONLNd›lç(las well Æ`°dONLNdÂç)!to manipulate dialog boxeR °dONLNd˛)ts. °dONLNdË)3 For example, you can hide a dialog box by calling .°dONLNd3 l,~()lthe ,
  7402. Courier°dONLNd7 ~,∫)
  7403. HideWindow°dONLNdA ∫,¿)< rR`°dONLNdC ¿,ˆ) outine (ther$¿°dONLNdO ˆ,)6e is no $¿°dONLNdW ,O)
  7404. HideDialog$¿°dONLNda O,U)< r˜ °dONLNdc T,w)outine)..°dONLNdl2l>•(;l When you arΩ °dONLNdw2•>Û)9Ke designing your application, you need to decide whether to use the Dialog °dONLNd¬?lKº(HlManager or the WJ‡°dONLNd“?ºK)Pindow Manager to crÏ°dONLNdÂ?KÀ)\%eate and manage any particular window@°dONLNd
  7405. ?ÀK·)≥. For °dONLNdLlX’(UlNsome types of windows, the decision is obvious. For document windows that can °dONLNd^Yle
  7406. *#contain variable amounts of data an`°dONLNdÅY e%)üd therFÄ°dONLNdáY%e6)eforûÄ°dONLNdãY6eC)e pÍ@°dONLNdéYCeF)rØ@°dONLNdèYGe_)obabl`°dONLNdîY`el)y rÄ°dONLNdóYkeÇ) equir¿°dONLNdúYÉeñ)e scr√†°dONLNd°YñeÃ)oll bars and .@°dONLNdÆYÕeÿ)7a sÎ@°dONLNd±YÿeÁ) ize °dONLNdµflrÌ(olbox, you’ll want to use the WJ†°dONLNd“fÌr3)Åindow ManagerA@°dONLNdflf3r”)F$. For simple windows that contain a °dONLNdsl5(|l-message and possibly a few buttons, you’ll pr-`°dONLNd0s6‰) %obably want to use the Dialog Managerû†°dONLNdUs„Ë)≠. @@°dONLNdWsˈ)As °dONLNdZÄlåfl(âla dialog box becomes mor∑°dONLNdrÄflå )s    e and mor|@°dONLNd{Ä åd)-e complex, howeveri°dONLNdçÄdåÏ)X , you’ll want to consider using °dONLNd≠çlôÜ(ñlthe WP¿°dONLNd≤çÜô)indow Manager and other TÌ °dONLNdÀçôë){oolbox managers instead. The W·†°dONLNdÈçëô⁄)êindow Manager °dONLNd˜öl¶u(£lprG °dONLNd˘öv¶Ø)
  7407. ovides the grü °dONLNdöض·)9 eatest contr2†°dONLNdö‚¶Ω)3/ol over the appearance and behavior of a windowÔÄ°dONLNdAöº¶Ã)⁄. In °dONLNdFßl≥ó(∞l
  7408. particular4Ä°dONLNdPßó≥¨)+, anyï°dONLNdUߨ≥Æ) °dONLNdVßØ≥
  7409. )time you need to do 2†°dONLNdjß
  7410. ≥g)[moderately complex n °dONLNd}ßg≥«)]drawing in the windo’Ä°dONLNdëß«≥œ)`wAÄ°dONLNdíßœ≥—),¡Ä°dONLNdìß—≥Á) you °dONLNdò¥l¿ó(Ωl    should prV@°dONLNd°¥ó¿„)+obably use the W1°dONLNd±¥„¿⁄)L4indow Manager (and QuickDraw) instead of the Dialog °dONLNd¡lÕì( lManagerT†°dONLNdÏ¡ìÕï)'.
  7411. €*ȯ4‹*ȯ    °dONLNdÓ⁄lÂ(‚lNote
  7412. ˇ·ˇ‚7^
  7413. °dONLNdÛÁlÛó*    For a morÖ¿°dONLNd¸ÁóÛ-)+&e detailed list of factors that can ef˙°dONLNd"Á-Û©)ñfect the decision whether to °dONLNd?Ûlˇ˛(¸luse the Dialog Manager or the WH†°dONLNd^Û˛ˇ})íindow Manager (and other T8‡°dONLNdxÛ}ˇù)oolbox °dONLNdˇl ˙(lmanagers) to manage a window≈†°dONLNdõˇ˘ °)ç&, see the chapter “Dialog Manager” in °dONLNd¡ lÍ(lInside Macintosh: Macintosh T“Ä°dONLNdfi È-)}oolbox EssentialsóÄ°dONLNdÔ .0)E.Ä°dONLNd˘6;)u
  7414. ;*B¯4<*B¯ =l=¯
  7415. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd˚,l;y(7lWíÓ°dONLNd¸,y;¿) indow Partsˇˇˇˇˇˇ€r(76
  7416. °dONLNd    BlNâ(KlThe W/ °dONLNd    BâN„)indow Manager defiU@°dONLNd    B„Nt)Z!nes and supports a set of standaré °dONLNd    @BtN€)ëd window elements thre†°dONLNd    UB€NÙ)gough °dONLNd    ZOl[Ú(XlWwhich the user can manipulate windows. It’s important that your application follow the °dONLNd    ±\lhç*standar±Ä°dONLNd    ∏\çh2)!$d conventions for drawing, moving, r\ °dONLNd    ‹\3h∫)¶esizing, and closing windows.   °dONLNd    ˙\ªh…)àBy °dONLNd    ˝iluË(rlVpresenting the standard interface, you make experienced users instantly familiar with °dONLNd
  7417. SvlÇÙ*Ymany aspects of your application, allowing them to focus on learning its unique features.°dONLNd
  7418. ≠àlîÜ*The Vÿ °dONLNd
  7419. ≤àÖîÊ)Lenn Diagrammer application supports two kinds of windows, a single dialog bo凰dONLNd
  7420. ˛àÁîÓ(ëÁx °dONLNd ïl°°(ûlfor setting gü`°dONLNd ï°°»)5    eneral pr& °dONLNd ï…°Ÿ)(efer“@°dONLNd «)0ences and an unlimited number of document window¿°dONLNd Jï»°›)Ôs for °dONLNd P¢lÆ°(´l evaluating cZ‡°dONLNd \¢¢Æ)6ategorical syllogisms. ò†°dONLNd s¢Æ
  7421. )aA”@°dONLNd t¢
  7422. Æ∫)$ sample document window is shown in V¿°dONLNd ò¢ªÆ”)±Figur)Ä°dONLNd ù¢”ÆÁ)e 6-1«°dONLNd ¢¢ÁÆÈ).ˇMˆ@ˇ ˇˇˇˇ@
  7423. ˇ·ˇ‚7^
  7424. 4H\, Palatino&e.3+ä"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@äW–í)indows4⁄ä˙(‡äAbout W)#indows
  7425. (‡111
  7426. ˇˇˇˇˇˇˇˇ4 4>lòÄ0 @>oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7427. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7428.  
  7429.  
  7430.  
  7431.  
  7432.  
  7433. ˆ                        ˜¯˘˙˚¸˝˛ˇ @>o @>o$——————————————————————————————òÄ
  7434.  6>@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7435. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7436.  
  7437.  
  7438.  
  7439.  
  7440.  
  7441. ˆ                        ˜¯˘˙˚¸˝˛ˇ 6>@ 6>@˜˜˜˜˜˜˜˜˜˜˜˜˝¸ˇ˛˙ˇ
  7442. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜
  7443. 4C4fl?òÄ
  7444. C6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7445. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7446.  
  7447.  
  7448.  
  7449.  
  7450.  
  7451. ˆ                        ˜¯˘˙˚¸˝˛ˇC6fl@C6fl@$˚˝ˇ˛˛ˇ˝˚ˇˇˇ˘ˇˇ˚ˇˇˇ˛˛ˇ˝˚˝ˇ˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝˛ˇ˛
  7452. ˛ˇ˛ˇˇ
  7453. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  7454. ˛ˇ˛ˇˇ
  7455. ˛ˇ˛ˇˇ˝˛ˇ˛˜˜¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜    ˛ˇˇ˛
  7456. ˛ˇˇˇˇ
  7457. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  7458. gHw4gHw"hH]
  7459. ˇ·ˇ‚7^    °dONLNd\äg¥(dä
  7460. Figure 6-1°dONLNd \Ãg“)BA0°dONLNd \“g⁄) VÄ°dONLNd\⁄g,)enn diagram window
  7461. °dONLNd!]äis(fä2This window contains only two special elements defis‡°dONLNdT]tiØ)Í ned by the W °dONLNd`]Øiı);indow Manager¿°dONLNdm]ıi)F
  7462. , a title °dONLNdwjävˆ(säbar and a close box. The †°dONLNdêj˜v)m    title barÏÄ°dONLNdôjvÔ)#/ displays the name of the window and indicates °dONLNd»wäÉ(Ää!whether it’s active or not. The W`°dONLNdÈwÉ)ê6indow Manager displays the title of the window in the °dONLNdÑäêÂ(çäcenter of the title bar †°dONLNd6ÑÂê)[H, in the system font and system font size. If the system font is in the °dONLNd~ëäùi(öä5Roman script system, the title bar is 20 pixels high.°dONLNd¥£äØù*The ª¿°dONLNd∏£ùØΔ)    close box™ °dONLNd¡£«Ø“)* of≈‡°dONLNdƒ£“Øí) +fers the user a quick way to close a windowyÄ°dONLNdÔ£íØ⁄)¿. If the user click °dONLNd£⁄Ø„)Hs t…`°dONLNd£‰Ø    )
  7463.     he close °dONLNd∞äºî(πäbo} °dONLNd∞ïºú) x,%¿°dONLNd∞ùº) your application should r/ °dONLNd,∞ºä)seact exactly as if the user ha °dONLNdJ∞äº∂)z
  7464. d chosen t›`°dONLNdT∞∑º)-he Close command °dONLNdeΩä…ë(Δäfrò‡°dONLNdgΩë…‡)om the File menu.
  7465. ÿHÊ4ÿH    °dONLNdy◊ä‚ù(fläNote
  7466. ˇ·ˇ‚7^
  7467. °dONLNd~„äÔë*Vú`°dONLNd„êÔ€)enn Diagrammer—¿°dONLNdç„‹Ô#)L’s use of standar^†°dONLNdû„$Ô∑)Hd window elements is purposely °dONLNdΩÔä˚ç(¯ärE°dONLNdæÔé˚7)*estricted to the title bar and close box. i†°dONLNdËÔ7˚=)©Y* °dONLNdÈÔ=˚µ)our application’s windows °dONLNd˚ä3(ä%should include as many of the standarW¿°dONLNd(˚3°)©d window elements as arÿÄ°dONLNd?˚°®)ne °dONLNdAäû(äapprI@°dONLNdEüæ)opriate߇°dONLNdLæ¿).,Zapf Dingbats'‡°dONLNdV
  7468. ΔÀ)u
  7469. °dONLNdXä$(!äThe window shown in ö¿°dONLNdl$)fFigurmÄ°dONLNdq$)e 6-1 °dONLNdv$Ÿ)+ also contains a number of elements that ar’°dONLNd°Ÿ$Ò)ºe defi¿°dONLNdßÚ$)ned °dONLNd´%ä1Ó(.äand managed by the VóÄ°dONLNdø%Ì1)cAenn Diagrammer application. Immediately under the title bar is a °dONLNd2ä>ç(;ärE°dONLNd2é>Ø)ow of fiÁ†°dONLNd    2Ø>å)!2ve tools, which allow the user to manipulate the V¥†°dONLNd;2å>)›enn diagram without leaving °dONLNdW?äKø(Hä
  7470. the windowÎ`°dONLNda?æK…)4. T! °dONLNdd?…Kc) 'o the right of the tools is a status ar[†°dONLNdã?cKà)öea, wher‹@°dONLNdì?àK¶)%e the Vü†°dONLNdö?¶KÛ)enn Diagrammer °dONLNd©LäX¢(Uä?application displays information and other feedback to the user~¿°dONLNdËL¢X≤(U¢. In .†°dONLNdÌL≥XÀ)Figur`°dONLNdÚLÀXfl)e 6-1û‡°dONLNd˜LflX), the status °dONLNdYäeí(bäarE°dONLNdYìe)    Vea contains a message indicating that the syllogism under consideration is valid; the °dONLNd\färØ(oä    status ar ‡°dONLNdefØrœ)%Cea also shows the traditional name of that valid syllogism (Ferio).°dONLNd©xäÑÚ(ÅäUnderneath the tools arÄ°dONLNd¿xÛÑH)iea and the status arsÄ°dONLNd‘xHÑ )U*ea, the document window contains two sets °dONLNd˛ÖäëŸ(éäof overlapping cirtÄ°dONLNdÖŸë>)Ocles, which show the Vz¿°dONLNd&Ö=ë’)d"enn diagram for the syllogism’s pr¿†°dONLNdHÖ’ë)ò emises and °dONLNdSíäû](õä1conclusion. The user can alter the contents of anÛ‡°dONLNdÑí]ûi)”y r»°dONLNdáíiûÑ) egion –°dONLNdçíÑûπ) of overlap b„Ä°dONLNdôíπû)5y clicking in that °dONLNd¨üä´í(®äarE°dONLNdÆüì´)     ea. Shading indicates that the rÙ°dONLNdŒü´˛)á4egion is known to be empty; an X indicates that the 
  7471. wÜFòÄ:7œHHß◊$ˇˇˇˇˇˇ7œyãC∏»ˇ¸Ä…Ä…Ä…ø˜Ôˇ¸ÛÏˇ˜Ä@Ó`˛|`¸Îø@Ôˇ¸`˛f˚Ïˇ˜Ä@Ó c««¿fc√ÊœÎø@Ôˇ¸˛f    `fdfgôòÏˇ˜Ä@Ó˛f`fcÊfôòÎø@Ôˇ¸gÊf`˝fôòÏˇ˜Ä@Óff`˝fôòÎø@Ôˇ¸F&f`˝fôòÏˇ˜Ä@Ó ÉΔf`|c„ÊôòÎø˜Ôˇ¸˘`¸Ïˇ˜ ÄÂ`Á Ä¿ÁÄ…«ˇÄ @÷Ä Ò@÷Ä <@÷ÄÄ 9√8@÷!Ä0Ä  Y    àp@˙˚     @!ûÁ!Ä0Ä @±`h‡@"˚ ˛Á$Ä Åa#êhA¿@#å ≥•ÿŒpŒ1ge≥Á$Ä!¡N~h„Ä@"Rƒ•%) P
  7472.     )ñàÁ$ÄÄ"Åhw@"^Ñ•%È L
  7473. 9)ÙàÁ$ÅÜÄ'˚!Äh>@"PÑ•%     BI)ÑàÁ$ÅÜÄ$@~h@"LÉù$…\9' êdÁÄ$ Ë@˝Ä˘@ ÁÄ'¯(@˛⁄Ä @÷«ˇÄ…«ˇÄ…Ä…Ä…Ä…Ä…ÄÒ¿Ë ˙ÄÒ Ë ˙"Ä˙;‡˚òƒòÛÿ«˙,Δ$¿˚#Ä˙$§ê˚%%$Û%$Ä˚1)) ˚#Ä˙$ºê˚d=ÊÛ%‰Ä˚!Ô0¿˚#Ä˙$†ê˚$!Û%Ä˚!0 ˚#Ä˙$§ê˚$%%$Û%$Ä˚!)) ˚#Ä˙$òê˚ƒƒòÛ$ƒÄ˚ Δ$¿˚Ä…Ä…Ä…Ģˇ¿¸ˇ¯Ô˛˚ˇ¿˘"Ä˙>¸>¿ÒÄ˝>˘%Ä˙‡˛¿<Ò˝‡˙'Ä˙p˛8˛˛ÚÄ¿˛p˛8˙'Ä˚IJ˛p˝‡Û˝8IJ˙$Ä˚ ¸¿Ä˝Û`˝ ¸¿˚$Ä˚0¸0¸ÙÄ˝Ä0¸0˚"Ä˚`¸ ¸Ù˚¿`¸˚#ĸĸ0˚¿ı ˚0ĸ˚!ĸ˚@˚ ı˚˚˚ Ä¸ ˙¡Ä˚ı`˚ ˙¿¸ĸ˙c˙ ı¿˚˙`¸ĸ ˙˙ˆ˘†˙¸ĸ@˙˙ˆ˘@˙¸ĸÄ˙˘Ä˜˘†˙¸Ä˝˘"˘@˜˙˙¸Ä˝˘A˘ ˜˙˙¸ Ä˝˘ÄÄ˙˜ ˙˘Ä˝!Ä˝˙@˙˜@˙˘@˝!Ä˝˙`˙ ˜¿˙˘`˝!Ä˝˙ ˙˜Ä˙˘ ˝"Ä˝ ˙˙¯˘ Ä˙˝"Ä˝@˙˙¯˘@@˙˝"Ä˝@˙˙¯˘@@˙˝"Ä˝Ä˙˘Ä˘˘Ä ˙˝$IJÄ˙0˘¿˘ ˙Ä0˙˝#IJ˘ ˘@˘˙˙˝#IJ˘@˘ ˘˙˙˝#IJ˘@˘ ˘˙˙˝$IJ˘ÄÄ˙˘ ˙˘Ä˛$IJ˘ÄÄ˙˘ ˙˘Ä˛$IJ˘ÄÄ˙˘ ˙˘Ä˛%IJ˙˛@˙˘@˙˘@˛%IJ˙˛@˙˘@˙˘@˛%IJ˙˛`˙ ˘¿˙˘`˛%IJ˙˛ ˙˘Ä˙˘ ˛%IJ˙˛ ˙˘Ä˙˘ ˛%IJ˙˛ ˙˘Ä˙˘ ˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛)IJ@˙˛˙˙˘@˛@√˝˛)IJ@˙˛˙˙˘@˛@f˝˛)IJ@˙˛˙˙˘@˛@<˝˛)IJ@˙˛˙˙˘@˛@˝˛)IJ@˙˛˙˙˘@˛@<˝˛)IJ@˙˛˙˙˘@˛@f˝˛)IJ@˙˛˙˙˘@˛@√˝˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙ˇ‡˙˙˘ ˛Ä˙˛&IJ ˙˙™ø˙˙˘ ˛Ä˙˛&IJ ˙˛U˙˙˘ ˛Ä˙˛%IJ˙:˛™º˙˘Ä˙˘ ˛'IJ˚◊˛UcÄ˚˘Ä˙˘ ˛&IJ˚˝™†`˚˘Ä˙˘ ˛'IJ˚W˛U`˚ ˘¿˙˘`˛'IJ˚:´˛™¿ ˚˘@˙˘@˛&IJ˚’˝U@˚˘@˙˘@˛'IJ¸¸™Äĸ˘ ˙˘Ä˛)IJ¸UU’UUÄ`¸˘ ˙˘Ä˛'IJ¸¸™Ä0¸˘ ˙˘Ä˛'IJ¸¸U¸ ˘˙˙˝)IJ¸*™™Í™´¸ ˘˙˙˝(IJ¸˛UuUV¸@˘˙˙˝)IJÄ˝˛™∫™Æ¸¿˘ ˙Ä0˙˝(ĽIJ¸UT˛Ä˝Ä˘˘Ä ˙˝(Ä˝@˛¸™®˛@˛¯˘@@˙˝*Ä˝@˛˛U]UX˛ ˛¯˘@@˙˝*Ä˝ ˛˛™Æ™∞˛0˛¯˘ Ä˙˝)Ä˝˛˛UWU`˛˛˜Ä˙˘ ˝)Ä˝˛˛™´™‡0¿˛ ˜¿˙˘`˝'Ä˝˛5¸U@IJ˜@˙˘@˝'Ä˝˛*¸™Ä˛˜ ˙˘Ä˝%Ä˝˛˚U˛ ˜˙˙¸'Ä˝˛Í¸™˛@˜˙˙¸&ĸÄ’˝UTÄ˛Ä˜˘†˙¸$ĸ@¸™®0¿Äˆ˘@˙¸"ĸ ¸UT¸Äˆ˘†˙¸#ĸ¸™„¸@ ı¿˚˙`¸$ĸ ¸U¡Ä˝@ı`˚ ˙¿¸%ĸ˝™´@˝@ ı˚˚˚&ĸÄ˝UV0˝ ¿ı ˚0ĸ˚$Ä˚`˝™∏ ˝ Ù˚¿`¸˚&Ä˚0˝Up˝0ÙÄ˝Ä0¸0˚&Ä˚
  7474. ˝™¿IJÛ`˝ ¸¿˚(Ä˚ç˛UW˛p˛‡Û˝8IJ˙'Ä˙z˛™∏˛˛ÚÄ¿˛p˛8˙%Ä˙˛U‡˛¿<Ò˝‡˙"Ä˙˙™æ¸>»ÒÄ˝>˘Ä˙ˇ¿¸ˇ¯˛˚ˇ¿˘Ä˙ˆ›Ä˙ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ ˆ0›Ä˙ˆ ›Ä˙ˆ ›Ä˙ˆ@›Ä˙ˆ@›Ä˙ˆ@›Ä˙ˆÄ›Ä˙ˆÄ›Ä˘Ä¯‹Ģ¿¯‹Ģ@¯‹Ģ ¯‹Ģ ¯‹Ģ¯‹Ģ¯‹Ģ ¯0‹Ģ¯ ‹Ģ¯@‹Ģ¯Ä‹įÄ˙€į@˙€į ˙€į˙€į ˙0€į˙`€į˙Ä€Ę¿¸⁄Ę0¸ ⁄ʸ⁄ʸ`⁄Ę¿˛Ä⁄Ĉ8˛ŸĈ˛Ÿ Äı¯ÿ Äıˇ‡ÿÄ…Ä…Ä… ÄÙÿ ÄÙÿĈ;∑1ŸĈ$§¬I$ŸĈ$§Ç9ŸĈ$§ÇIŸĈ$§ÇI$ŸĈ$òÅ9ŸÄ…Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…ÄÊ˙ÄÄŸÄ˘ÅÄÄŸÄ>fl˛√èÄŸÄffqò˛Á˛ôÄŸÄΔffaò˛}˛ôÄŸÄffa¯˛9˛ôÄŸÄffaIJ˛ôÄŸÄffaà˛˛ôÄŸÄ>>`˛èÄŸ
  7475. IJÕ
  7476. IJFÕ
  7477. IJ<ÕÄ…Ä˙ˇ˚ˇ¸⁄ġ‡@Ä@ˇˇ⁄ġ‡@Ä@ˇˇ⁄Äœ‡CÄ¡A‡¯?⁄Äè·@`Å¡C0˘ˇÑb˝`„Äœ‡@¿Ç¡C0˘ˇÑb˝ „'!Äœ‡A‡Ñ¡C0˘ˇÑR8 0‚Ó!¿8π¿YáÍ'!Äœ‡0@0à¡C¯ÑRD …"" D¬ fHôÍ'!Äœ‡`@0è·C0˘ˇÑJDâ"<Ç DHëÍ'!Äœ‡¿@0Ä¡C0˘ˇÑJDâ"!¿DɇDOëÍ'!Äœ·ÄB0Ä¡C0˘ˇÑFDâ"  DÇDHÍ'!Äœ·¯A‡Ä¡C0¯?FDâ"" DÇ DHëÍ("ġ‡@Ä@ˇˇB8à‚!¿<Å¿DG Îġ‡@Ä@ˇˇ⁄ġ‡@Ä@ˇˇ⁄Ä˙ˇ˚ˇ¸⁄Ä…Ä…Ä…Ä…į˚ˇ¸⁄į@ġ˛⁄į@ġ˛⁄įA‡á¡¸˛⁄!į    C0ܸ˛Ñ<˛‡ ˙`Ó!į    C0ܸ˛ÑB˛ ˙ Ó&įC0ܸ˛Ñ@8≥Á"88 0‚Ó!¿Ô&įCáŸ˛Ñ@DÃëë$DòD …"" Ô%įC0ܸ˛Ñ<Dàërë(@êDâ"Ó&įC0ܸ˛ÑDàüü08ê|â"!¿Ô&įC0ܸ˛ÑDàê(ê@â"  Ô&įC0ᡸ˛BDàëë$DêDâ"" Ô&į@ġ˛<8àé‚"8ê8à‚!ƒÔį@ġ˛⁄į@ġ˛⁄į˚ˇ¸⁄Ä…Ä… Ä‹ˇÄ…į˚ˇ¸⁄į@ġ¸⁄į@ġ¸⁄įA‡á¡¸⁄į    C0ÜÊ|<˛‡ ˚Îį    C0ÜÊ|B˛ ˚Î&įC0ÜÊ|@8≥Á"88 8 0‚¿Ô&įCáÅÊ|@DÃëë$DòD ë … Ô&įC0ÜÊ|<Dàërë(@êDëâ Ô&įC0ÜÊ|Dàüü08ê|ëâÚ Ô&įC0ÜÊ|Dàê(ê@ëâ Ô&įC0á¡¸BDàëë$DêDëâ Ô&į@ġ¸<8àé‚"8ê8é à‚$Ôį@ġ¸⁄į@ġ¸⁄į˚ˇ¸⁄Ä…Ä…Ä…Ä…Ä…Ä…Ä…«ˇ?»ˇˇ@ˇ ˇˇˇˇ@
  7478. ˇ·ˇ‚7^
  7479. 4*\¯, Palatino&e.3+l"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@lW–í)indows4⁄*˙¯
  7480. (‡*112    )BAbout W)#indows4^*¿¯
  7481. °dONLNd\lho(elrE°dONLNd\phÍ)Wegion is known to contain something; the lack of either shading or an X indicates that °dONLNdXilu√(rlthe contents of the r›°dONLNdmi√uÊ)Wegion ar™°dONLNduiÁu)$
  7482. e unknown.°dONLNdÄ{lá•(ÑlFThe user can alter the syllogism under consideration by changing the fiÄ°dONLNd«{¶áµ(Ѷgurz¿°dONLNd {µá◊)    e of the °dONLNd”àlî (ël(syllogism and the mood of any of the thriÄ°dONLNd˚à î©)¥ ee statements in the syllogism. J °dONLNdà©î)âAny changes in °dONLNd*ïl°Ç(ûlthe fiÍ °dONLNd0ïÇ°ë)gurE`°dONLNd3ïí° ) e or mood arñ‡°dONLNd?ï °˛)8e instantly rȇ°dONLNdLï˛°)4efl¿@°dONLNdOï    °æ) )ected in the syllogism shown in the botto†°dONLNdxïø°Ì)∂
  7483. m center ob°dONLNdÇïÌ°Ú).f °dONLNdÑ¢lÆ°(´l
  7484. the windowÎ`°dONLNd领Ƣ)4.
  7485. ”*⁄¯4‘*⁄¯ ’l’¯
  7486. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdêƒl”y(œlWíÓ°dONLNdëƒy””)indow Recordsˇˇˇˇˇˇ€r(œ6
  7487. °dONLNdü⁄lÊr(„lY@Ä°dONLNd†⁄rÊô)    ou’ve alr!†°dONLNd©⁄ôÊ^)'/eady seen, in skeletal form at least, how to crr¿°dONLNdÿ⁄^ÊŒ)≈eate a window by calling ,
  7488. Courier.°dONLNdÒÁlÛ¢(l    NewWindow°dONLNd˙Á¢Û∏)6 (see °dONLNdÁ∏ÛË) Listing 1-1°dONLNd ÁËÛˆ)0 on °dONLNdÁˆÛ)page °dONLNdÁÛ)3°dONLNdÁÛ`)). When you call °dONLNd&Á`Ûñ)M    NewWindowï°dONLNd/ÁïÛ∑)5, the W`°dONLNd6Á∑Û’)"indow .°dONLNd<Ùlû(˝l
  7489. Manager cr«@°dONLNdFÙûB)2%eates in your application heap a new X°dONLNdkÙCà)•window record|†°dONLNdxÙà≈)E that contains °dONLNdál    (
  7490. l information about the new window_`°dONLNdß    +)ù. The WÄ°dONLNdÆ+Ö)"indow Manager defi4†°dONLNd¿Ö…)Znes a window rJ†°dONLNdŒ…€)Decorø°dONLNd“€„)d .°dONLNd‘ló(l
  7491. using the °dONLNdfiófl)+ WindowRecord°dONLNdÍfl)H     data strl°dONLNdÛ)&uctur>`°dONLNd¯O) e, shown in >`°dONLNdO)4 Listing 6-1>`°dONLNdÇ)0.
  7492. =*E¯4>*E¯">*_
  7493. ˇ·ˇ‚7^    .°dONLNd3l>ò(;l Listing 6-1.°dONLNd3∞>¡)DThe 
  7494. °dONLNd!2¡>    ) WindowRecord    °dONLNd-3    >D)H data structure
  7495. °dONLNd=MlYÑ(VlTYPE°dONLNdCMêYfi)$WindowRecord °dONLNdPMfiYÍ)N= °dONLNdT[~g¢(d~RECORD°dONLNd^iêuÆ+port:°dONLNdhiÍu )Z    GrafPort;°dONLNdviDu‘)Z{window's graphics port}°dONLNdëwêÉ“(Äê windowKind:°dONLNd°wÍÉ)ZInteger;°dONLNdÆwDɬ)Z{class of the window}°dONLNdΔÖêë¿(éêvisible:°dONLNd”ÖÍë)ZBoolean;°dONLNd‡ÖDëå)Z {visibility}°dONLNdÔìêü¿(úêhilited:°dONLNd¸ìÍü)ZBoolean;°dONLNd    ìDüò)Z{highlighting}°dONLNd°ê≠“(™ê goAwayFlag:°dONLNd*°Í≠)ZBoolean;°dONLNd7°D≠Œ)Z{presence of close box}°dONLNdQØêªÃ(∏ê
  7496. spareFlag:°dONLNd`Øͪ)ZBoolean;°dONLNdmØDª»)Z{presence of zoom box}°dONLNdÜΩê…Δ(Δê    strucRgn:°dONLNdîΩÍ…&)Z
  7497. RgnHandle;°dONLNd£ΩD…Ï)Z{handle to structure region}°dONLNd¬Àê◊¿(‘êcontRgn:°dONLNdœÀÍ◊&)Z
  7498. RgnHandle;°dONLNdfiÀD◊‡)Z{handle to content region}°dONLNd˚ŸêÂÃ(‚ê
  7499. updateRgn:°dONLNd
  7500. ŸÍÂ&)Z
  7501. RgnHandle;°dONLNdŸDÂ⁄)Z{handle to update region}°dONLNd5ÁêÛ‰(êwindowDefProc:°dONLNdHÁÍÛ)ZHandle;°dONLNdTÁDÛ¯)Z{handle to window definition }°dONLNdıDÜ* { function}°dONLNdçê“( ê dataHandle:°dONLNdùÍ)ZHandle;°dONLNd©D⁄)Z{handle to window state }°dONLNdœDò*{ data record}°dONLNd‡ê+ÿ((ê titleHandle:°dONLNdÒÍ+8)ZStringHandle;°dONLNdD+‘)Z{handle to window title}°dONLNd-ê9“(6ê titleWidth:°dONLNd.-Í9)ZInteger;°dONLNd;-D9Œ)Z{title width in pixels}°dONLNdU;êGÿ(Dê controlList:°dONLNdf;ÍG>)ZControlHandle;°dONLNdy;DG‘)Z{handle to control list}°dONLNdîIêU“(Rê nextWindow:°dONLNd§IÍU,)Z WindowPeek;°dONLNd¥IDU⁄)Z{pointer to next window }°dONLNd⁄WDc‘*{ record in window list}°dONLNdıeêqÃ(nê
  7502. windowPic:°dONLNdeÍq&)Z
  7503. PicHandle;°dONLNdeDqÏ)Z{handle to optional picture}°dONLNd2sê∫(|êrefCon:°dONLNd=sÿfi)H °dONLNd?sÍ)LongInt;°dONLNdLsDÏ)Z{storage available to your }°dONLNduÅDçí*{ application°dONLNdÇÅíçò)N}°dONLNdÖè~õê(ò~END°dONLNdàèêõñ);ˇ7‹@ˇ ˇˇˇˇ@
  7504. ˇ·ˇ‚7^
  7505. 4H\, Palatino&e.3+ä"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@äW–í)indows4⁄ä˙(‡äAbout W)#indows
  7506. (‡113
  7507. ˇˇˇˇˇˇˇˇ4 4>lòÄ0 @>oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7508. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7509.  
  7510.  
  7511.  
  7512.  
  7513.  
  7514. ˆ                        ˜¯˘˙˚¸˝˛ˇ @>o @>o$——————————————————————————————òÄ
  7515.  6>@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7516. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7517.  
  7518.  
  7519.  
  7520.  
  7521.  
  7522. ˆ                        ˜¯˘˙˚¸˝˛ˇ 6>@ 6>@˜˜˜˜˜˜˜˜˜˜˜˜˝¸ˇ˛˙ˇ
  7523. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜
  7524. 4C4fl?òÄ
  7525. C6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7526. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7527.  
  7528.  
  7529.  
  7530.  
  7531.  
  7532. ˆ                        ˜¯˘˙˚¸˝˛ˇC6fl@C6fl@$˚˝ˇ˛˛ˇ˝˚ˇˇˇ˘ˇˇ˚ˇˇˇ˛˛ˇ˝˚˝ˇ˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝˛ˇ˛
  7533. ˛ˇ˛ˇˇ
  7534. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  7535. ˛ˇ˛ˇˇ
  7536. ˛ˇ˛ˇˇ˝˛ˇ˛˜˜¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜    ˛ˇˇ˛
  7537. ˛ˇˇˇˇ
  7538. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\äh(eäAs you can see, a window rfl‡°dONLNd\h)yecorT@°dONLNd\hl)d consists of numerç`°dONLNd1\lhÑ)Vous fi”¿°dONLNd7\Ñh)elds that contain information ˇˇµZ.°dONLNdUiäu⁄(räabout the windowˇ¥°dONLNdeiŸu¯)O. The fijh°dONLNdmi˘u) rst fi¬°dONLNdsiu")eld (,
  7539. Courierˇˇ ’°dONLNdxi"u:)portˇˇµZ’°dONLNd|i:u)1) contains the window’s graphics port, a drawing .°dONLNd≠väÇ°(äenvirn†°dONLNd≤v°Ç)onment with its own coorfl‡°dONLNd vÇÌ)q2dinate system. The graphics port in turn contains °dONLNd¸Éäè0(åä$information about that drawing enviru°dONLNd É0è˛)¶0onment, such as the location of the port on the °dONLNdPêäúñ(ôäscrÚ@°dONLNdSêñú    ) Yeen, the default size and font of any text that is to be drawn in the port, and so forth.°dONLNd≠¢äÆû(´ä;Because many of the operations you’ll perform on windows arU °dONLNdË¢ûÆ¥(´ûe in rùÄ°dONLNdÓ¢¥Æ)eality operations on ˇˇ˜ .°dONLNdØäª'(∏ä!the window’s graphics port, the W«°dONLNd$Ø'ªÄ)ùindow Manager defiµ@°dONLNd6ØŪ—)Znes the data type ˇˇÂ`ë¿°dONLNdHØ“ª)Q    WindowPtrˇˇ˜ ë¿°dONLNdQت)6 as .°dONLNdUºä»6(≈ä&a pointer to the window’s graphics poró†°dONLNd{º6»;)¨t..°dONLNd~”äfl¢(‹äTYPE°dONLNdÖ·úÌ“+    WindowPtr°dONLNdí·‰Ì )H
  7540. = GrafPtr;.°dONLNdù˘ä|(ä3For example, each time you want to draw in a window†¿°dONLNd–˘{fl)Ò, you need to make sur†°dONLNdÊ˘‡ )e e that the °dONLNdÒä›(äwindow is the curr*¿°dONLNdfi4)Tent drawing port. Tò¿°dONLNd3)U0o do so, you can simply pass the window pointer .°dONLNdFä‚(äto the QuickDraw rR`°dONLNdX‚)Xoutine R`°dONLNd_$)SetPorR`°dONLNde$*)$tR`°dONLNdf*-).°dONLNdh*ä6ˆ(3äSetPort(myWindow);.°dONLNd{BäNê*Y@Ä°dONLNd|BêN )Vou can do this because a window pointer is simply a pointer to a graphics port, which °dONLNd“Oä[™(Xäis the fièÄ°dONLNd€O™[Ω) rst fié@°dONLNd·Oæ[ )eld in a window r”¿°dONLNdÚO [)NecorH °dONLNdˆO[R) d. Similarly °dONLNdOQ[¸)2(, you can determine the location of the ˇˇæΔ.°dONLNd*\ähŸ(eäwindow on the scré≤°dONLNd;\Ÿh7)Oeen by inspecting the ˇˇ<Râ °dONLNdQ\8hh)_portRectˇˇæΔâ °dONLNdY\hhp)0 fiHê°dONLNd\\qh˘)    eld of the graphics port. Recaln°dONLNd{\˙h)âl that .°dONLNdÇiäu∏(rä Listing 1-1 @°dONLNdçiπu…)/ on g °dONLNdëi…u‡)page B°dONLNdñi·uÊ)3B°dONLNdóiÊuÏ) c2@°dONLNdôiÌuˇ)enteŸ@°dONLNdùiˇu )rs tÀ@°dONLNd°iuy)he text within the windoiÄ°dONLNdπizu≥)mw as follows:.°dONLNd«Ääå(âäWITH gWindow^.portRect °dONLNdfiÄå )äDO°dONLNdÎÄPå˛)<{set the position of the pen}°dONLNd
  7541. éúö&(óúMoveTo(((right - left) °dONLNd!é&ö8)äDIV°dONLNd$é8ö‡) 2) - (StringWidth(gString) °dONLNd@é‡öÚ)®DIV°dONLNdCéÚö
  7542. ) 2),°dONLNdLú“®,(•“(bottom - top) °dONLNd[ú,®>)ZDIV°dONLNd^ú>®V) 2);.°dONLNdc¥ä¿6(Ωä'Usually you don’t need to access or dirp‡°dONLNdä¥6¿v)¨ectly modify fi¢°dONLNdô¥v¿»)@elds in a window r$Ä°dONLNd´¥…¿€)Secorò‡°dONLNdØ¥€¿)d. If you do °dONLNdº¡äÕÎ( äneed to examine the fiÏ°dONLNd“¡ÎÕF)aelds of the window r[Ä°dONLNdÊ¡GÕY)\ecorœ‡°dONLNdÍ¡YÕ¯)%d (other than those contained in the .°dONLNdŒä⁄B(◊ä)window’s graphics port), you can use the °dONLNd8ŒB⁄~)∏
  7543. WindowPeek°dONLNdBŒ~⁄∞)<  data type:°dONLNdNÂäÒ¢(ÓäTYPE°dONLNdUÛúˇÿ+
  7544. WindowPeek°dONLNdcÛ‰ˇD)H= ^WindowRecord;°dONLNdt äí(äAÛ`°dONLNdu ëì) Û`°dONLNdv ì…)    WindowPeeÛ`°dONLNd …œ)6kÛ`°dONLNdÄ œ)  data type iÛ`°dONLNdå r)5s a pointer to a window r≈¿°dONLNd• rÑ)necorò °dONLNd© Ñç)d.
  7545. %H34&H3    .°dONLNd¨$ä/ù(,äNote
  7546. ˇ·ˇ‚7^
  7547. °dONLNd±1ä=Ó*Don’t get confused her=`°dONLNd«1Ô=¯)ee. ®†°dONLNd 1¯=ˇ)    A„@°dONLNdÀ1ˇ=…)- window pointer is a pointer to the window’s .°dONLNd¯=äIN(Fä,graphics port, not a pointer to the window rR`°dONLNd$=NI`)ƒecor$¿°dONLNd(=`I)d. The $¿°dONLNd/=Iª)
  7548. WindowPeek$¿°dONLNd9=ªIΩ)< .°dONLNd:IäUá(Rä<data type is so called because it lets you “peek” into the fi1°dONLNdwIàU∏)˛ elds of the °dONLNdÉUäaµ(^äwindow ræ°dONLNdãUµa«)+ecor2`°dONLNdèU»aB)d beyond the graphics port.,Zapf DingbatsÜ°dONLNd≥XG`L)u
  7549. ÖHå4ÜHå áäá
  7550. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdµväÖó(ÅäWíÓ°dONLNd∂vóÖ∞)indox&°dONLNd∫v±Öæ)w Ô¬°dONLNdºvæÖΔ)TîP°dONLNdΩvΔÖ„)ypesˇˇˇˇˇˇ€r(Å6
  7551. .°dONLNd¬åäòû(ïäThe °dONLNdΔåûò⁄)
  7552. windowKind°dONLNd–å⁄ò„)< fi°dONLNd”å„ò1)    eld of a window rR`°dONLNd‰å1òC)Necor$¿°dONLNdËåCòÇ)d indicates th$¿°dONLNdˆåÇò•)?e type o$¿°dONLNd˛å•ò˙)#f window that the .°dONLNdô䕵(¢äwindow ræ°dONLNdôµ•«)+ecor2`°dONLNdô»•˛)d describes. ú`°dONLNd)ô˛•)6Y\‡°dONLNd*ô•ë)!our application can, if necessary5¿°dONLNdKôë•ô)ç, r˙¿°dONLNdNôô•˚)ead the value in that fiπÄ°dONLNdfô¸• )celd °dONLNdj¶ä≤a(Øä.to determine how to handle a particular window9`°dONLNdò¶a≤c)◊.ˇË@ˇ ˇˇˇˇ@
  7553. ˇ·ˇ‚7^
  7554. 4*\¯, Palatino&e.3+l"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@lW–í)indows4⁄*˙¯
  7555. (‡*114    )BAbout W)#indows4^*¿¯
  7556. °dONLNd\lh£(el
  7557. When the W= °dONLNd
  7558. \£hÙ)7indow Manager cr¶`°dONLNd\Ùh©)Q'eates a new window for a desk accessoryë °dONLNdA\®hÃ)¥
  7559. , it place`@°dONLNdK\Õh—)%sù@°dONLNdL\—h€) a ˇˇî
  7560. .°dONLNdOiluÓ(rlnegative value (in particular~æ°dONLNdliÓu)Ç, the ry2°dONLNdsiu)eferKí°dONLNdwiu¢) ence ID of the desk accessory) i√Œ°dONLNdói¢u¨)àn tWÿ°dONLNdöi≠u∫) he ,
  7561. Courierˇ˛º΂°dONLNdùi∫uˆ)
  7562. windowKindˇˇî
  7563. ΂°dONLNdßiˆu˜)< .°dONLNd®vlÇr(lfiå¿°dONLNd™vrǬ)eld of the windowè@°dONLNdªv¬Ç/)P. In all other cases, the W⁄°dONLNd÷v/ÇÎ)m(indow Manager puts one of two constants °dONLNd˛Élèô(ål into that fiTÄ°dONLNd
  7564. Éöè™).eld:.°dONLNdöl¶ä(£lCONST°dONLNd®~¥∫+
  7565. dialogKind°dONLNd$®Δ¥fi)H= 2;°dONLNd,®¥û)H{dialog or alert window}°dONLNdF∂~¬Æ(ø~userKind°dONLNdR∂Δ¬fi)H= 8;°dONLNdZ∂¬⁄)H"{window created by an application}.°dONLNd}Œl⁄r(◊lY@Ä°dONLNd~Œr⁄ï)ou can r√¿°dONLNdÜŒï⁄÷)#Eely on this behavior to determine what kind of window a given window .°dONLNdÀ€lÁº(‰lpointer picks out. °dONLNdfi€ºÁÏ)P Listing 6-2°dONLNdÈ€ÏÁ)0 defi°dONLNdÓ€Á>)nes a function °dONLNd˝€>ÁÄ)> IsAppWindow°dONLNd€ÄÁù)B that rR`°dONLNd€ùÁ∫)eturns R`°dONLNd€∫Á“)TRUER`°dONLNd€“Á) if the .°dONLNd"ËlÙ®(Òlapplication crÏ °dONLNd0ˮٓ)<
  7566. eated the ∫‡°dONLNd:Ë”ÙÔ)+specifi)°dONLNdAËÙ)ed windo0`°dONLNdIËÙ6)*w by c`°dONLNdOË7ÙJ)allinò‡°dONLNdTËJÙc)g a Wõ`°dONLNdYËcÙ¨)indow Manager œ`°dONLNdg˨ÙØ)Irî`°dONLNdhË∞ÙŒ)outine V¿°dONLNdo˜ـ)dir‡°dONLNdrË‹Ù)ectly˜‡°dONLNdwËÔÙÙ). °dONLNdyılø(˛lIn the case of the VG@°dONLNdçıø“)S<enn Diagrammer application, this means that the window is a °dONLNd…l¿( ldocument window»°dONLNdÿø¡)S.
  7567. 1*9¯42*9¯"2*_
  7568. ˇ·ˇ‚7^    °dONLNd⁄'l2ò(/l Listing 6-2°dONLNdÊ'∞2j)D,Determining if a window is a document window
  7569. .°dONLNdA*Mb(J*4FUNCTION IsAppWindow (myWindow: WindowPtr): Boolean;°dONLNdHO*[H*BEGIN°dONLNdO]<i¿+IF myWindow = NIL THEN°dONLNdhkNwΔ+IsAppWindow := FALSE°dONLNd~y<ÖT(Ç<ELSE°dONLNdÖáNì∞+;IsAppWindow := WindowPeek(myWindow)^.windowKind = userKind;°dONLNd¡ï*°B(û*END;°dONLNdΔ≠lπ§+B Notice that °dONLNd“≠§π∂)8IsA°dONLNd’≠∂πÊ)ppWindow°dONLNd›≠Êπ˙)0 coerR`°dONLNd‚≠˙πd)ces the window pointer R`°dONLNd˘≠dπî)jmyWindowR`°dONLNd≠îπ )0 to the type °dONLNd∫lΔ®(√l
  7570. WindowPeek°dONLNd∫®Δ¡)< beforR`°dONLNd∫¡Δ◊)e der$¿°dONLNd#∫◊ΔÈ)efer˜ °dONLNd'∫ËΔ
  7571. )encing i˜ °dONLNd/∫
  7572. Δ)"t t˜ °dONLNd2∫ΔU)
  7573. o examine the ˜ °dONLNd@∫UΔë)A
  7574. windowKind˜ °dONLNdJ∫ëΔó)< f«†°dONLNdL∫óΔ≠)ield..°dONLNdRÃlÿr(’lY@Ä°dONLNdSÃrÿ¢)
  7575. ou can defi‡°dONLNd^âÿÏ)0Jne similar functions to identify dialog boxes and desk accessory windows. .°dONLNd®ŸlÂú(‚l Listing 6-3°dONLNd≥ŸúÂ∞)0 defi°dONLNd∏Ÿ∞ÂÓ)nes a function °dONLNd«ŸÓÂB)>IsDialogWindow°dONLNd’ŸBÂ_)T that rR`°dONLNd‹Ÿ_Â|)eturns R`°dONLNd„Ÿ|Âî)TRUER`°dONLNdÁŸîÂö) iR`°dONLNdÈŸöÂÓ)f your application .°dONLNd¸ÊlÚt(Ôlcrµ@°dONLNd˛ÊtÚ£) eated the s¡°dONLNd    Ê£Úª)/pecifiÚ °dONLNdʪÚÂ)ed windo˘Ä°dONLNdÊÂÚ)*w by c◊Ä°dONLNdÊÚ)allinb°dONLNd"ÊÚ-)g a DÆ`°dONLNd'Ê-Úl)ialog Managerï¿°dONLNd4ÊmÚs)@ r⁄¿°dONLNd6ÊsÚè)outine °dONLNd<ÊêÚí).
  7576. *¯4*¯"*_
  7577. ˇ·ˇ‚7^    °dONLNd> lò(l Listing 6-3°dONLNdJ ∞5)D"Determining if a window is a dialo°dONLNdl 6L)Üg box
  7578. .°dONLNdr%*1t(.*7FUNCTION IsDialogWindow (myWindow: WindowPtr): Boolean;°dONLNd™3*?H*BEGIN°dONLNd±A<M¿+IF myWindow = NIL THEN°dONLNd ON[ÿ+IsDialogWindow := FALSE°dONLNd„]<iT(f<ELSE°dONLNdÍkNwŒ+@IsDialogWindow := WindowPeek(myWindow)^.windowKind = dialogKind;°dONLNd+y*ÖB(Ç*END;°dONLNd0ëlùè+BFinallyd@°dONLNd7ëéùì)", d@°dONLNd9ëìù√) Listing 6-4d@°dONLNdDë√ù◊)0 defid@°dONLNdIë◊ù)nes a function d@°dONLNdXëù])> IsDAccWindowd@°dONLNddë]ùz)H that r6†°dONLNdkëzùó)eturns 6†°dONLNdrëóùØ)TRUE6†°dONLNdvëØùÎ) if the specifi6†°dONLNdÖëÎù¯)<ed .°dONLNdàûl™Ø(ßlwindow was crB@°dONLNdïû∞™ )Deated by a desk accessory˚Ä°dONLNdÆû™!)o.ˇ4î@ˇ ˇˇˇˇ@
  7579. ˇ·ˇ‚7^
  7580. 4H\, Palatino&e.3+ä"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@äW–í)indows4⁄ä˙(‡ä
  7581. Creating Wp)-indows
  7582. (‡115
  7583. ˇˇˇˇˇˇˇˇ4 4>lòÄ0 @>oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7584. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7585.  
  7586.  
  7587.  
  7588.  
  7589.  
  7590. ˆ                        ˜¯˘˙˚¸˝˛ˇ @>o @>o$——————————————————————————————òÄ
  7591.  6>@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7592. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7593.  
  7594.  
  7595.  
  7596.  
  7597.  
  7598. ˆ                        ˜¯˘˙˚¸˝˛ˇ 6>@ 6>@˜˜˜˜˜˜˜˜˜˜˜˜˝¸ˇ˛˙ˇ
  7599. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜
  7600. 4C4fl?òÄ
  7601. C6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7602. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7603.  
  7604.  
  7605.  
  7606.  
  7607.  
  7608. ˆ                        ˜¯˘˙˚¸˝˛ˇC6fl@C6fl@$˚˝ˇ˛˛ˇ˝˚ˇˇˇ˘ˇˇ˚ˇˇˇ˛˛ˇ˝˚˝ˇ˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝˛ˇ˛
  7609. ˛ˇ˛ˇˇ
  7610. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  7611. ˛ˇ˛ˇˇ
  7612. ˛ˇ˛ˇˇ˝˛ˇ˛˜˜¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜    ˛ˇˇ˛
  7613. ˛ˇˇˇˇ
  7614. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  7615. gHn4gHn"hH_
  7616. ˇ·ˇ‚7^    °dONLNd\äg∂(dä Listing 6-4°dONLNd \Œgü)D2Determining if a window is a desk accessory window,
  7617. Courier
  7618. .°dONLNd?vHÇÜ(H5FUNCTION IsDAccWindow (myWindow: WindowPtr): Boolean;°dONLNduÑHêf*BEGIN°dONLNd|íZûfi+IF myWindow = NIL THEN°dONLNdï†l¨Í+IsDAccWindow := FALSE°dONLNd¨ÆZ∫r(∑ZELSE°dONLNd≥ºl»™+5IsDAccWindow := WindowPeek(myWindow)^.windowKind < 0;°dONLNdÈ H÷`(”HEND;.°dONLNdÓ‚äÓ≥+B    These thrõ °dONLNd˜‚≥ÓÛ))ee functions ar>†°dONLNd‚ÙÓT)Ae used extensively thrf‡°dONLNd‚TÓÂ)` oughout the code samples in the °dONLNd<Ôä˚ç(¯ärE°dONLNd=Ôé˚˘)emainder of this chapter{‡°dONLNdUÔ˘˚˚)k.
  7619.     H4
  7620. H    °dONLNdWäù(äNote
  7621. ˇ·ˇ‚7^
  7622. ˇˇ=Ù.°dONLNd\ä!ù*The ˇ˝π‹ΩÙ°dONLNd`ù!Â) IsDAccWindowˇˇ=ÙΩÙ°dONLNdlÂ!)H function is prJ0°dONLNd{!Œ):&ovided to help maintain compatibility .°dONLNd°!ä-™(*äwith pr@°dONLNd®!´-)!evious system softwarz°dONLNdΩ!-∞)b%e versions. When your application is °dONLNd‚-ä9ç(6är^†°dONLNd„-é9Ù)unning in System 7, it rÊ¿°dONLNd˚-Ù9Ã)f0eceives events only for its own windows and for °dONLNd+9äE^(Bä.windows belonging to desk accessories that wer.‡°dONLNdY9_E©)’e launched in its °dONLNdkEäQ≥(Nä
  7623. partition.,Zapf Dingbatsë °dONLNd~H∏PΩ).u
  7624. WHr4XHr
  7625. ÇHä4ÉHä ÑHÑ
  7626. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdÄoHÇY(}HCrJ9°dONLNdÇoZÇö)eating Wa·°dONLNdäoöÇœ)@indowsˇˇˇˇˇˇU˛(}6
  7627. °dONLNdëìäü§(úäThe Vÿ °dONLNdñì£ü)Menn Diagrammer application allows the user to have multiple document windows °dONLNd„†ä¨‹(©ä(that is, multiple V °dONLNd˜†‹¨?)Renn diagram windows
  7628. `°dONLNd
  7629. †@¨é)d) on the desktop aÓ°dONLNd†é¨Ó)Nt the same time. Each °dONLNd2≠äπñ(∂ädif™`°dONLNd5≠ñπ¢) fer凰dONLNd8≠¢π) ent document window prd`°dONLNdN≠πn)qobably displays a dif¿°dONLNdc≠oπ{)\ferÂ@°dONLNdf≠zππ) ent syllogism.  °dONLNdu≠∫π”)@As a rH`°dONLNd{≠‘π˛) esult, the °dONLNdÜ∫äΔß(√ä>application needs some way to keep track of each window’s curr< °dONLNdƒ∫®Δ‹(√®ent settings..°dONLNd“Ãäÿí(’äAÛ`°dONLNd”Ãëÿ∂) standar≈¿°dONLNd€Ã∂ÿ^)%'d way to do this is to make use of the ≈¿°dONLNdÃ^ÿÇ)®refCon≈¿°dONLNdÃÇÿã)$ fi≈¿°dONLNd Ããÿ„)    eld in the window rò °dONLNdÄÿı)XecorjÄ°dONLNd"Ãıÿ)d. The °dONLNd)ŸäÂÆ(‚ärefCon°dONLNd/ŸÆÂ¥)$ fPÄ°dONLNd1Ÿ¥Â◊)    ield is r"‡°dONLNd:Ÿ◊Â)#eserved specifÛ`°dONLNdHŸÂı)?3ically for use by applications, which can set the f√‡°dONLNd{ŸıÂ
  7630. )flield °dONLNdÄÊäÚπ(Ôä (using the °dONLNdãÊπÚı)/
  7631. SetWRefCon°dONLNdïÊıÚ)< prR`°dONLNdòÊÚ) ocedur$¿°dONLNdûÊÚ#)e$¿°dONLNdüÊ#ÚÒ)/) to any 4-byte value. Often, applications stor˜ °dONLNdŒÊÚˇ)Õe a .°dONLNd“Û䡠   (¸ähandle to an application-defiˆ†°dONLNdÔÛ    ˇ=) ned data striÄ°dONLNd˚Û>ˇU)5ucturÔ`°dONLNdÛUˇ–)e that describes the windowˆ`°dONLNdÛ–ˇ){ . This data °dONLNd'ä ï(    ästrfi°dONLNd*ï ¨) ucturc‡°dONLNd/≠  )e is often known as a 5°dONLNdE  X)_document record!Ä°dONLNdTY [)M.°Ä°dONLNdU[ “) Given the window pointerµ@°dONLNdn“ ‚)w, yoπ‡°dONLNdr‚ ¸)u can .°dONLNdxäé(ärR`°dONLNdyé‰)etrieve that handlR`°dONLNdã‰)Ve bR`°dONLNdé,) y calling the R`°dONLNdú,h)<
  7632. GetWRefConR`°dONLNd¶hë)<
  7633.  function.°dONLNd±ä+Z((ä.The sample code in this book uses a document rR`°dONLNdflZ+l)–ecor$¿°dONLNd„l+ñ)
  7634. d of type $¿°dONLNdÌñ+Δ)*MyDocRec$¿°dONLNdıΔ+ˆ)0  (shown in .°dONLNd,ä8∏(5ä Listing 6-5 @°dONLNd ,π8⁄)/    ) to stor‡°dONLNd,⁄8W)!e information about the currΩ‡°dONLNd0,W8®)}ent contents of a VdONLNdC,®8)Qenn diagram windowi °dONLNdU,8    )_.
  7635. [Hc4\Hc"\H_
  7636. ˇ·ˇ‚7^    °dONLNdWQä\∂(Yä Listing 6-5°dONLNdcQŒ\)D,The structure of a document record for the V
  7637. °dONLNdèQ\Ô)±enn Diagrammer application
  7638. .°dONLNd™kHw®(tHTYPE MyDocRec = °dONLNd¬kÿw™)ê#{information for a document window}°dONLNdÁyZÖ~(ÇZRECORD°dONLNdálìñ+figure:°dONLNd˝áÿì)lInteger;°dONLNdáhì)ê{the figure of the syllogism}°dONLNd-ïl°ä(ûlmood:°dONLNd8ïÿ°b)lARRAY[1..3] OF Integer;°dONLNdWïh°)ê{the moods of the statements}°dONLNdw£lØê(¨lterms:°dONLNdÉ£ÿØV)lARRAY[1..3] OF Str31;°dONLNd†£hØŒ)ê{the three terms}°dONLNd¥±lΩÆ(∫l statusText:°dONLNd≈±ÿΩ)lStr255;°dONLNd‘±hΩ)ê{most recent status message}ˇ@ˇ ˇˇˇˇ@
  7639. ˇ·ˇ‚7^
  7640. 4*\¯, Palatino&e.3+l"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@lW–í)indows4⁄*˙¯
  7641. (‡*116    )B
  7642. Creating Wp)-indows4^*¿¯,
  7643. Courier
  7644. .°dONLNd\Nhú(eNuserSolution:°dONLNd\∫hΔ)lMy°dONLNd\Δh) DiagramState;°dONLNd*\JhŒ)Ñ{user's diagram state}°dONLNdCjNvú(sNrealSolution:°dONLNdVj∫vΔ)lMy°dONLNdXjΔv) DiagramState;°dONLNdmjJv⁄)Ñ{answer's diagram state}°dONLNdàxNÑÆ(ÅNisAnswerShowing:°dONLNdûx∫ÑÍ)lBoolean;°dONLNdÆxJÑ⁄)ê{is the answer showing?}°dONLNd…ÜNí¢(èNisExistImport:°dONLNd›Ü∫íÍ)lBoolean;°dONLNdÌÜJí¯)ê{stmts imply exists subject?}°dONLNdîN†®(ùNneedsAdjusting:°dONLNd"î∫†Í)lBoolean;°dONLNd2îJ†Ê)ê{diagram needs adjusting?}°dONLNdN¢<ÆT(´<END;°dONLNdT∞<ºÃ*MyDocRecPtr = ^MyDocRec;°dONLNdnæ< fi*MyDocRecHnd = ^MyDocRecPtr;.°dONLNdä÷l‚ˆ+0As you can see, the document r~@°dONLNd®÷ˆ‚)äecorÚ†°dONLNd¨÷‚M)d used by the VH`°dONLNdª÷M‚ˆ)E$enn Diagrammer application contains °dONLNdfl„lÔr(Ïlfiå¿°dONLNd·„rÔ‰)elds that describe the curr∏‡°dONLNd¸„‰Ô¢)r+ent settings of the syllogism in the window@°dONLNd'„¢Ô‰)æ, including the °dONLNd7l¸r(˘lfiå¿°dONLNd9r¸Å)gurË°dONLNd<ŸÚ)Te of the syllogism, the mood of each statement in the syllogism, and the terms used °dONLNdê˝l     (l#in those statements. The document r~ °dONLNd≥˝     )†ecorÚÄ°dONLNd∑˝    h)d also contains fi& °dONLNd…˝i    Ú)Kelds that maintain information °dONLNdË
  7645. l™(labout the curr”°dONLNdˆ
  7646. ™0)>ent appearance of the window0‡°dONLNd
  7647. 0»)Ü#, such as the status message most r’ °dONLNd5
  7648. »Í)òecently .°dONLNd=l#( l#displayed in the window’s status arR`°dONLNd`#)¢ea (R`°dONLNdd#[)
  7649. statusTextR`°dONLNdn[#d)< fiR`°dONLNdqd#Ó)    eld) and a Boolean value that °dONLNdè$l0˙(-lindicates whether the answer i°dONLNd≠$˙0&)é s visible i°dONLNd∏$&0i),n the window (°dONLNdΔ$i0√)CisAnswerShowing°dONLNd’$√0Ã)Z fi°dONLNdÿ$Ã0¯)    
  7650. eld). The .°dONLNd‚1l=s(:lVú`°dONLNd„1r=¡)Henn Diagrammer application uses that Boolean value to determine how to fi´`°dONLNd,1¡=‰(:¡
  7651. ll in the .°dONLNd6>lJp(GlrR`°dONLNd7>pJÒ)egions in the overlapping cir$¿°dONLNdT>ÒJ)Å    cles. If $¿°dONLNd]>JJ) the value of $¿°dONLNdj>JJ§)9isAnswerShowing$¿°dONLNdy>§J∞)Z is $¿°dONLNd}>∞J») TRUE$¿°dONLNdÅ>»Jfl), the °dONLNdáKlWÒ(Tlapplication displays the corrR`°dONLNd§KÒWi)Öect answer (encoded in the R`°dONLNdøKiW±)x realSolutionR`°dONLNdÀK±W∫)H fiR`°dONLNdŒK∫W“)    eld); .°dONLNd‘Xld+(al,otherwise, the application displays the user2†°dONLNdX-dH)¡’s curr‡°dONLNdXHd¡)ent answer (encoded in the .°dONLNd"elq¥(nl userSolution°dONLNd.e¥q∫)H fPÄ°dONLNd0e∫q‘)ield).
  7652. *ç¯4Ä*篠   .°dONLNd7~lâ(ÜlNote
  7653. ˇ·ˇ‚7^
  7654. .°dONLNd<ãlóå*The strl°dONLNdCãåó¢) uctur>`°dONLNdHã¢óΔ)    e of the >`°dONLNdQãΔó“)$My>`°dONLNdSã“ó) DiagramState>`°dONLNd_ãó§)H  data type is not shown in this .°dONLNdól£Ñ(†lbook.,Zapf Dingbats¿°dONLNdçöä¢è)u
  7655. .°dONLNdè®l¥Ä(±lThe °dONLNdì®Ä¥∞)MyDocRec°dONLNdõ®∞¥÷)0     data strl°dONLNd§®÷¥Ï)&uctur>`°dONLNd©®Ï¥d)e also contains two other fi>`°dONLNd≈®d¥Ù)x elds containing Boolean values. .°dONLNdµl¡ó(ælBThese specify whether the statements that make up the syllogism ari@°dONLNd'µó¡‘(æóe to be interpr;Ä°dONLNd6µ’¡ˆ)>eted as °dONLNd>¬lŒŸ(ÀlQhaving existential import or not, and whether the window needs to be checked for °dONLNdèœl€Œ*automatic adjustment.
  7656. È*˜¯4Í*˜¯°dONLNd•ÍlÚã*IMPORTÄ°dONLNd´ÍãÚõ)ANT
  7657. ˇ·ˇ‚7^
  7658. °dONLNdØılÉ(˛lIf a VN¿°dONLNdµıÉ)enn diagram window contained T‹`°dONLNd”ı@)ï    extEdit fi°dONLNd›ıAx))elds or contr1`°dONLNdÍıx≠)7ols (such as °dONLNd˜l¬(
  7659. lradio buttons or scrfi°dONLNd ¬.)Voll bars), the document r ¿°dONLNd$/A)mecorÄ °dONLNd(A´)d could be expanded to °dONLNd?lˆ(l include handles to those items.  °dONLNd_˜&)ã Also, if a fiΔ@°dONLNdl&A)/le wer›‡°dONLNdrAü)e associated with the °dONLNdàl%ê("lwindowé°dONLNdéê%)$, you’d want the document rC‡°dONLNd©% )~ecor∏@°dONLNd≠ %™)d to include information about °dONLNdÃ%l1Ö(.lthat fib‡°dONLNd”%Ü1)!le. In a nutshell, the document rd¿°dONLNdÙ%1$)åecorŸ °dONLNd¯%$1r)d can contain all rÄ°dONLNd %s1ï)Oelevant °dONLNd1l=ë(:l@information about the window that isn’t contained in the window °dONLNdS=lIo* rE°dONLNdT=pIÇ)ecorπ`°dONLNdX=ÇIä)d.U °dONLNdc@êHñ)s
  7660. °dONLNdeNlZÜ(WlThe Vÿ °dONLNdjNÖZ)enn Diagrammer application cr<@°dONLNdáNZc)ãeates a document rM‡°dONLNdôNcZu)Secor¬@°dONLNdùNuZ¿)d every time it cr¡†°dONLNdØN¿Z‡)Keates a .°dONLNd∑[lgº(dldocument windowï°dONLNdΔ[ªgÓ)O, and it storg`°dONLNd”[Ógq)3es a handle to the document r9¿°dONLNd[qgÉ)Éecor  °dONLNdÙ[Ég®)    d in the   °dONLNd˝[®gÃ)%refCon  °dONLNd    [Ãg’)$ fi  °dONLNd    [’gÒ)    eld of °dONLNd    hlt®(ql the window rR`°dONLNd    h®t∫)<ecor$¿°dONLNd    h∫t≈)d. $¿°dONLNd     h≈tı) Listing 6-6$¿°dONLNd    +hıt')0  shows the $¿°dONLNd    6h't{)2DoCreateWindow$¿°dONLNd    Dh{tÅ)T r˜ °dONLNd    FhÄtú)outine˜ °dONLNd    Lhút≈)    , which c˜ °dONLNd    Uh≈t…))r…Ä°dONLNd    Vh…tÎ)eates a .°dONLNd    ^ulÅ’(~lnew document window:°dONLNd    qu’Å)i. This function iH °dONLNd    ÇuŨ)E"s called when the application is fi5@°dONLNd    •u≠ÅÊ)ìrst launched °dONLNd    ≤ÇléÕ(ãland whenever the use«¿°dONLNd    ΔÇÕé˚)a r chooses tm°dONLNd    —ǸéW)/he New command frã@°dONLNd    ‚ÇWé¶)[om the File menu.ˇ&∂@ˇ ˇˇˇˇ@
  7661. ˇ·ˇ‚7^
  7662. 4H\, Palatino&e.3+ä"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@äW–í)indows4⁄ä˙(‡ä
  7663. Creating Wp)-indows
  7664. (‡117
  7665. ˇˇˇˇˇˇˇˇ4 4>lòÄ0 @>oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7666. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7667.  
  7668.  
  7669.  
  7670.  
  7671.  
  7672. ˆ                        ˜¯˘˙˚¸˝˛ˇ @>o @>o$——————————————————————————————òÄ
  7673.  6>@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7674. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7675.  
  7676.  
  7677.  
  7678.  
  7679.  
  7680. ˆ                        ˜¯˘˙˚¸˝˛ˇ 6>@ 6>@˜˜˜˜˜˜˜˜˜˜˜˜˝¸ˇ˛˙ˇ
  7681. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜
  7682. 4C4fl?òÄ
  7683. C6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7684. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7685.  
  7686.  
  7687.  
  7688.  
  7689.  
  7690. ˆ                        ˜¯˘˙˚¸˝˛ˇC6fl@C6fl@$˚˝ˇ˛˛ˇ˝˚ˇˇˇ˘ˇˇ˚ˇˇˇ˛˛ˇ˝˚˝ˇ˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝˛ˇ˛
  7691. ˛ˇ˛ˇˇ
  7692. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  7693. ˛ˇ˛ˇˇ
  7694. ˛ˇ˛ˇˇ˝˛ˇ˛˜˜¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜    ˛ˇˇ˛
  7695. ˛ˇˇˇˇ
  7696. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  7697. gHn4gHn"hH_
  7698. ˇ·ˇ‚7^    °dONLNd\äg∂(dä Listing 6-6°dONLNd \Œg)DCreating a new V°dONLNd\g)Een†°dONLNd\g+)
  7699. n diá∞°dONLNd"\+ge) agram window,
  7700. Courier
  7701. .°dONLNd/vHÇ(H#FUNCTION DoCreateWindow: WindowPtr;°dONLNdTÑZêl+VAR°dONLNdZílû®+
  7702. myPointer:°dONLNdhí¥ûÃ)HPtr;°dONLNdo†l¨¢(©l    myWindow:°dONLNd|†¥¨)H
  7703. WindowPtr;°dONLNdâÆl∫¢(∑l    myHandle:°dONLNdñÆ¥∫¸)H MyDocRecHnd;°dONLNd£ºH»f(≈HBEGIN°dONLNd™ Z÷V+*myPointer := NewPtr(sizeof(WindowRecord));°dONLNd÷ÿZ‰‰*IF myPointer = NIL THEN°dONLNdÊlÚÍ+exit(DoCreateWindow);°dONLNdZÍ( ZmyWindow := GetNewWindow°dONLNd Í)ê(rVennD,°dONLNd(º)0 myPointer, WindowPtr(-1));°dONLNdEZ‰(ZIF myWindow <> NIL THEN°dONLNd_l*ä+BEGIN°dONLNdh,~8Í+SetPort(myWindow);°dONLNd~:~F⁄*:myHandle := MyDocRecHnd(NewHandleClear(sizeof(MyDocRec)));°dONLNdΩV~b*IF myHandle <> NIL THEN°dONLNdŸdêpÆ+BEGIN°dONLNd‰r¢~>+HLockHi(Handle(myHandle));°dONLNdrV~)¥ {lock the data high in the heap}°dONLNd.Ä¢åí(â¢(SetWRefCon(myWindow, LongInt(myHandle));°dONLNdiéVö+¥ {attach handle to window record}°dONLNdèú¢®>(•¢DoSetWindowTitle(myWindow)°dONLNd≠ú>®D)ú;°dONLNd¥úV®⁄){set the window title}°dONLNd—∏¢ƒh(¡¢!{Define initial window settings.}°dONLNd¯Δ¢“*WITH myHandle^^ DO°dONLNd‘¥‡“+BEGIN°dONLNd‚ΔÓ+ figure := 1;°dONLNd2Δ¸*mood[1] := 1;°dONLNdG˛Δ
  7704. *mood[2] := 1;°dONLNd\ Δ*mood[3] := 1;°dONLNdqΔ&\*isAnswerShowing := FALSE;°dONLNdí(Δ4t*isExistImport := gGiveImport;°dONLNd∂6¥BÃ(?¥END;°dONLNd¿D¢PD(M¢DoGetRandomTerms(myWindow);°dONLNd·R¢^,*DoCalcAnswer(myWindow);°dONLNdˇn¢zÄ*%{Position the window and display it.}°dONLNd*|¢àD*DoPositionWindow(myWindow);°dONLNdKä¢ñ *ShowWindow(myWindow);°dONLNdf¶ê≤ (ØêEND {IF myHandle <> NIL}°dONLNdÇ¥~¿ñ(Ω~ELSEˇ∂@ˇ ˇˇˇˇ@
  7705. ˇ·ˇ‚7^
  7706. 4*\¯, Palatino&e.3+l"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@lW–í)indows4⁄*˙¯
  7707. (‡*118    )B
  7708. Creating Wp)-indows4^*¿¯,
  7709. Courier
  7710. .°dONLNd\rhê(erBEGIN°dONLNd\&hŒ)¥{couldn't get a data record}°dONLNd1jÑv(sÑCloseWindow(myWindow);°dONLNdQxÑÑ *DisposePtr(Ptr(myWindow));°dONLNdwÜÑí‰*myWindow := NIL;°dONLNdêÜ&íí)¢{so pass back NIL}°dONLNdßîr†ä(ùrEND;°dONLNdÆ¢NÆf(´NEND;°dONLNd¥∞<ºfi(π<DoCreateWindow := myWindow;°dONLNd–æ* B(«*END;ˇˇíH°dONLNd’÷l‚+BThe ˇ˛∂ÿH°dONLNdŸ÷Ä‚‘)DoCreateWindowˇˇíHH°dONLNdÁ÷‘‚)T  function fi6ÿ°dONLNdÛ÷‚¯).8rst attempts to allocate space in the heap for a window °dONLNd+„lÔp(ÏlrR`°dONLNd,„pÔÇ)ecor$¿°dONLNd0„ÇÔ)d by calling the Memory Manager‚ °dONLNdO„Ô#)ò’s ‚ °dONLNdR„#ÔG)    NewPtr‚ °dONLNdX„GÔm)$     function‚ °dONLNda„mÔ‡)&. If no space is available, °dONLNd}l¸¿(˘lDoCreateWindow°dONLNdã¿¸Ò)T  exits and rR`°dONLNdóÒ¸)1eturns R`°dONLNdû¸ )NILÙ°dONLNd°¸Õ)& to indicate that no new window was crΔ`°dONLNd«Õ¸Ï)Æeated. ˇˇ€0°dONLNdŒ˝l    °(l Otherwise, ˇˇëê[0°dONLNdŸ˝¢    )6DoCreateWindo[0°dONLNdÊ˝    ˆ)Nwˇˇ€0[0°dONLNdÁ˝ˆ    ˇ) cr¿°dONLNdÍ˝    )
  7711. eates t„°dONLNdÒ˝    b)he new windowØP°dONLNd˛˝b    Õ)E, whose size and type ar…†°dONLNd˝Õ    Â)ke defi§–°dONLNd˝Ê    ˜)ned °dONLNd 
  7712. l©(lin a window rR`°dONLNd-
  7713. ©¿)=esour$¿°dONLNd2
  7714. ¿Ê)    ce of typ$¿°dONLNd;
  7715. ÊÌ)&e $¿°dONLNd=
  7716. Ì)rVennD$¿°dONLNdC
  7717. )$.°dONLNdE!l-Ñ(*lCONS°dONLNdI!Ñ-ä)T°dONLNdL/~;¢(8~rVennD°dONLNdV/Δ;Ã)H=°dONLNdW/Ã;Í) 131;°dONLNda/ ;‡)T {resource ID of document window}ˇˇ‹ °dONLNdÇGlS
  7718. (Pl$If the new window is successfully cr{ °dONLNd¶G
  7719. S()ûeated, ˇˇî`W@°dONLNd≠G)S})DoCreateWindowˇˇ‹ W@°dONLNdªG}S¯)T next tries to allocate space °dONLNdŸTl`≥(]lfor a document rR`°dONLNdÈT≥`≈)Gecor$¿°dONLNdÌT≈`á)-d. Once again, if the space isn’t available, $¿°dONLNdTá`€)¬DoCreateWindow$¿°dONLNd(T€`¯)T takes °dONLNd/almz(jlcarR`°dONLNd2azm∞)e to dispose R`°dONLNd?a∞mª)6of R`°dONLNdBaªm) the new window and r$¿°dONLNdVam7)ceturn $¿°dONLNd\a7mI)NILΔ`°dONLNd_aHmç) to the calling rò¿°dONLNdpaçm‰)Eoutine. Otherwise, °dONLNdÉnlz¿(wlDoCreateWindow°dONLNdën¿z])T# locks the handle to the document rR`°dONLNd¥n]zo)ùecor$¿°dONLNd∏noz⁄)d high in the heap and °dONLNdœ{láÿ(Ñlattaches the document rR`°dONLNdÊ{ÿáÍ)lecor$¿°dONLNdÍ{Íá9)d to the window r˜ °dONLNd˚{8áJ)Necor…Ä°dONLNdˇ{JáÅ)d by calling …Ä°dONLNd {ÅáΩ)7
  7720. SetWRefCon…Ä°dONLNd{Ωá¿)<.
  7721. ï*£¯4ñ*£¯    .°dONLNdîlü(úlNote
  7722. ˇ·ˇ‚7^
  7723. °dONLNd°l≠≤*The document r∫¿°dONLNd+°≤≠ƒ)Fecor/ °dONLNd/°≈≠é)0d data is locked at the top of the heap to help °dONLNd_≠lπu(∂lprG °dONLNda≠vπG)
  7724. /event heap fragmentation. See the chapter “Intr‘ °dONLNdê≠Gπ§)—oduction to Memory °dONLNd£πl≈π(¬lManagement” in äÄ°dONLNd≤ππ≈&)MInside Macintosh: Memory€Ä°dONLNd π&≈™)m for a discussion of when you °dONLNdË≈l—Ì(Œlneed to lock data in the heap.,Zapf Dingbats'‡°dONLNd»Û–¯)áu
  7725. .°dONLNd÷l‚Ä(fllThe °dONLNd÷Ä‚‘)DoCreateWindow°dONLNd#÷‘‚Ã)T: function next sets up the window’s title (by calling the ˇˇ<R°dONLNd]„lÔ∏(Ïlapplication-defi°dONLNdm„∏Ô”)Lned pré≤°dONLNds„”Ô)ocedura°dONLNdy„Ôˆ)e ˇ˝¥ˆùd°dONLNd{„ˆÔV)DoSetWindowTitleˇˇ<Rùd°dONLNdã„VÔŸ)`) and initializes some of the fiP°dONLNd´„⁄Ô¯)Ñelds in °dONLNd≥l¸Æ(˘lthe document rR`°dONLNd¡Ƹ¿)Becor$¿°dONLNd≈¿¸‰)d. Then $¿°dONLNdÕ‰¸8)$DoCreateWindow$¿°dONLNd€8¸‘)T" calls two further application-defi$¿°dONLNd˛‘¸Ê)úned ˇˇ¢∏°dONLNd˝l    v(lprR`°dONLNd˝v    ì)
  7726. ocedur$¿°dONLNd
  7727. ˝ì    °)es (ˇ˛Ë(«x°dONLNd˝°    )DoGetRandomTermsˇˇ¢∏«x°dONLNd˝    )` and ˇ˛Ë( Ë°dONLNd#˝    ^) DoCalcAnswerˇˇ¢∏ Ë°dONLNd/˝^    Æ)H) to initialize the ˇ˛Ë(ó»°dONLNdC˝Æ    Ã)Ptermsˇˇ¢∏ó»°dONLNdH˝Ã    ‘) fi:Ä°dONLNdK˝’    ¯)    eld and °dONLNdS
  7728. l~(lthe °dONLNdW
  7729. ~Δ) realSolution°dONLNdc
  7730. Δœ)H fi°dONLNdf
  7731. œ-)    eld of the document rR`°dONLNd{
  7732. -?)^ecor$¿°dONLNd
  7733. ?J)d. $¿°dONLNdÇ
  7734. Jv)
  7735. (As for th$¿°dONLNdå
  7736. v}),e $¿°dONLNdé
  7737. }≈) userSolution$¿°dONLNdö
  7738. ≈Œ)H fi$¿°dONLNdù
  7739. Œ◊)    el$¿°dONLNdü
  7740. ◊Ù)    d, the °dONLNd¶l#¿( lNewHandleClear°dONLNd¥¿#ÿ)TA function, which sets all bytes in the block to 0, automatically .°dONLNdı$l0<(-l0initializes it to encode an empty diagram, accor$Ä°dONLNd%$=0™)—ding to a clever scheme.)ˇˇoÜ.°dONLNd?6lBÀ(?lThe application-defiÔÜ°dONLNdS6ÀBÊ)_ned pr1l°dONLNdY6ÁB)ocedurðdONLNd_6B
  7741. )e ˇ˛NísR°dONLNda6
  7742. Bj)DoPositionWindowˇˇoÜsR°dONLNdq6jB¯)`# sets the original position of the .°dONLNdîClO¿(Llnew window accorÜ°dONLNd§C¿O)Tding to the userΩ†°dONLNd¥CO‚)F1’s expectations and good human interface design. .°dONLNdÂPl\Ö(YlThen °dONLNdÍPÖ\Ÿ)DoCreateWindow°dONLNd¯PŸ\)T  calls the WÛ`°dONLNdP\a)6indow Manager pr≈¿°dONLNdPa\~)Rocedurò °dONLNdP~\Ö)e ò °dONLNdPÖ\¡)
  7743. ShowWindowò °dONLNd&P¡\Ù)<  to display °dONLNd2]li¢(fl
  7744. the windowï°dONLNd<]°i∫)5. The ï°dONLNdB]∫iˆ)
  7745. ShowWindowï°dONLNdL]ˆi)< prg`°dONLNdO]i) ocedur9¿°dONLNdU]i⁄))e generates and update event for the newl9¿°dONLNd~]⁄i‚)ªy .°dONLNdÄjlvr(sldõ¿°dONLNdÅjrvæ)isplayed windowÆ °dONLNdêjæv‘)L, therPÄ°dONLNdñj’v#)eby causing the V߇°dONLNdßj"vŸ)M'enn Diagrammer application to draw the °dONLNdŒwlÉì(Äl    content rõ‡°dONLNd◊wìÉÓ)'egion of the windowX†°dONLNdÍwÓÉ)[.ˇ4.@ˇ ˇˇˇˇ@
  7746. ˇ·ˇ‚7^
  7747. 4H\, Palatino&e.3+ä"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@äW–í)indows4⁄ä˙(‡ä
  7748. Handling W¿)/ indow Events
  7749. (‡119
  7750. ˇˇˇˇˇˇˇˇ4 4>lòÄ0 @>oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7751. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7752.  
  7753.  
  7754.  
  7755.  
  7756.  
  7757. ˆ                        ˜¯˘˙˚¸˝˛ˇ @>o @>o$——————————————————————————————òÄ
  7758.  6>@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7759. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7760.  
  7761.  
  7762.  
  7763.  
  7764.  
  7765. ˆ                        ˜¯˘˙˚¸˝˛ˇ 6>@ 6>@˜˜˜˜˜˜˜˜˜˜˜˜˝¸ˇ˛˙ˇ
  7766. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜
  7767. 4C4fl?òÄ
  7768. C6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7769. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7770.  
  7771.  
  7772.  
  7773.  
  7774.  
  7775. ˆ                        ˜¯˘˙˚¸˝˛ˇC6fl@C6fl@$˚˝ˇ˛˛ˇ˝˚ˇˇˇ˘ˇˇ˚ˇˇˇ˛˛ˇ˝˚˝ˇ˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝˛ˇ˛
  7776. ˛ˇ˛ˇˇ
  7777. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  7778. ˛ˇ˛ˇˇ
  7779. ˛ˇ˛ˇˇ˝˛ˇ˛˜˜¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜    ˛ˇˇ˛
  7780. ˛ˇˇˇˇ
  7781. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  7782. ^Hk4^Hk    °dONLNd]ähù(eäNote
  7783. ˇ·ˇ‚7^
  7784. .°dONLNdiäu®*The prR`°dONLNd i®u≈)ocedur$¿°dONLNdi≈uÃ)e ,
  7785. Courier$¿°dONLNdiÃu,)DoPositionWindow$¿°dONLNd#i,uZ)`  is not defi$¿°dONLNd/iZuø).ned in this book. For a .°dONLNdGuäÅõ(~ä;discussion of how to determine the position of a new windowÒ†°dONLNdÇuöÅø(~ö
  7786. , see the °dONLNdåÅäçº(ää
  7787. chapter “Wµ¿°dONLNdñźç)2indow Manager” in #Ä°dONLNd®Åçî)ZInside Macintosh: Macintosh Tv°dONLNd≈ÅìçØ)}oolbox °dONLNdÃçäô≤(ñä
  7788. Essentials °dONLNd÷ç≥ôµ)).,Zapf Dingbatså°dONLNd‡ê∫òø)u
  7789. üH∫4†H∫
  7790.  H“4ÀH“ ÃHÃ
  7791. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd‚∑H °(≈H
  7792. Handling Wöb°dONLNdÏ∑° )Y indow EventsˇˇˇˇˇˇU˛(≈6
  7793. °dONLNd˘€äÁê(‰äY@Ä°dONLNd˙€êÁ)our application must be prŸÄ°dONLNd€Á)ueparj@°dONLNd€Á∏)"ed to handle two kinds of window-r¿°dONLNd:€πÁı)†elated events:°dONLNdIÒä¯è(˜än
  7794. °dONLNdKÓñ˙Ì) mouse and keyboarn`°dONLNd\ÓÌ˙«)W0d events in your application’s windows, which ar’°dONLNdåÓ«˙“)⁄e r„†°dONLNdèÓ“˙) eported by the °dONLNdû˙ñÙ(ñEvent Manager in dir¥@°dONLNd≤˙Ù)^ect ruÄ°dONLNd∑˙l)esponse to user actions°dONLNdœäè(än
  7795. °dONLNd— ñ8) $activate and update events, which arç°dONLNdı 8ï)¢e generated by the WÃ@°dONLNd     ï)]indow Manager and the °dONLNdñ$
  7796. (!ñEvent Manager as an indirB†°dONLNd8 $)uect r‡°dONLNd=$u)esult of user actions°dONLNdS)ä5∑(2ä    Because V¿°dONLNd\)∂5˝),enn Diagramme °dONLNdi)˛5
  7797. )Hr dìÄ°dONLNdl)
  7798. 5K) oes not supporI`°dONLNdz)L5U)Bt tN °dONLNd})U5|)        ext entryF °dONLNdÜ){5É)&, tàÄ°dONLNdâ)É5™)    he only r¶‡°dONLNdí)™5)'elevant keyboarÄ°dONLNd°)Ò5˘)Gd °dONLNd£6äB(?äevents it needs to handle ar_¿°dONLNdø6B.)y    e keyboarS`°dONLNd»6.B)+0d equivalents of menu commands. See the chapter °dONLNd¯CäOΩ(LäE“Menus” in this book for a description of how to handle those events.°dONLNd>UäaZ*,This section shows how to handle mouse eventdž°dONLNdjUZaì)–s as well as u2 °dONLNdxUîa):pdate and activate eventc†°dONLNdêUa)ls.
  7799. ÜHç4áHç àäà
  7800. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdìwäÜ·(Çä Mouse Eventsˇˇˇˇˇˇ€r(Ç6
  7801. °dONLNd†çäô'(ñä%When your application is active, it rA†°dONLNd≈ç(ô)û4eceives notice of all mouse-down events in the menu °dONLNd˘öä¶ò(£äbar<‡°dONLNd¸öò¶Ã), in one of it{@°dONLNd
  7802. öö€)4s wè@°dONLNdö€¶ˇ)@indows, or in any windows belonging to desk accessories that werÄ°dONLNdMö¶(£e °dONLNdOßä≥"(∞ä$launched in its partition. When it rˆ†°dONLNdsß"≥)ò4eceives a mouse-down event, your application should .°dONLNdߥä¿ò(Ωäcal°dONLNd™¥ò¿û)l °dONLNd¨¥û¿§)F°dONLNd≠¥§¿‘)indWindo°dONLNdµ¥‘¿⁄)0w°dONLNd∂¥⁄¿‡) t°dONLNd∏¥‡¿/)o determine wherR`°dONLNd»¥/¿Ù)O+e the cursor was when the mouse button was ˇˇÙ:°dONLNdÛ¡äÕî( äprR`°dONLNdı¡îÕ∞)
  7803. essed. Fö°dONLNd¸¡±Õƒ)The ˇˇ‹Æ:‘°dONLNd¡≈Õ)
  7804. FindWindowˇˇÙ::‘°dONLNd
  7805. ¡Õ)< /°dONLNd ¡Õ()    function #H°dONLNd¡)Õ-)&rı®°dONLNd¡,ÕC)eturnı®°dONLNd¡CÕN)s aÈ‚°dONLNd¡OÕP)  fi°dONLNd¡QÕu)part cod“V°dONLNd&¡vÕ{)%e“V°dONLNd'¡{Õ)$ that indicates the location of the .°dONLNdKŒä⁄¶(◊äcursor—¿°dONLNdQŒ•⁄). These constants defiÄ°dONLNdgŒ⁄{)_ne the available part codes:.°dONLNdÑÂäÒ®(ÓäCONST°dONLNdãÂÆÒ“)$inDesk°dONLNdïˆÒ)H= 0;°dONLNdõÂÒ§)${none of the following}°dONLNdµÛÆˇ‰(¸Æ    inMenuBar°dONLNd¬Ûˆˇ)H= 1;°dONLNd»Ûˇh)${in menu bar}°dONLNdÿÆ(
  7806. Æ inSysWindow°dONLNdÁˆ)H= 2;°dONLNdÌ∂)${in desk accessory window}°dONLNd
  7807. Ɖ(Æ    inContent°dONLNdˆ)H= 3;°dONLNd)$){anywhere in content region except size }°dONLNdO)¬*{ box if window is active, }°dONLNdt+7*){ anywhere including size box if window }°dONLNd¶9En*{ is inactive}°dONLNd∑GÆS“(PÆinDrag°dONLNd¡GˆS)H= 4;°dONLNd«GS¬)${in drag (title bar) region}°dONLNdÊUÆa“(^ÆinGrow°dONLNdUˆa)H= 5;°dONLNdˆUaÊ)$"{in size box (active window only)}°dONLNdcÆofi(lÆinGoAway°dONLNd'cˆo)H= 6;°dONLNd-con)${in close box}°dONLNd>qÆ}fi(zÆinZoomIn°dONLNdJqˆ})H= 7;°dONLNdPq}
  7808. )$({in zoom box (window in standard state)}°dONLNd{Æã‰(àÆ    inZoomOut°dONLNdàˆã)H= 8;°dONLNdéãÚ)$${in zoom box (window in user state)}ˇB@ˇ ˇˇˇˇ@
  7809. ˇ·ˇ‚7^
  7810. 4*\¯, Palatino&e.3+l"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@lW–í)indows4⁄*˙¯
  7811. (‡*120    )B
  7812. Handling W¿)/ indow Events4^*¿¯
  7813. .°dONLNd\lh∞(elIn addition to rR`°dONLNd\∞hO)D&eturning a part code as its function r$¿°dONLNd6\Ohj)üesult, ,
  7814. Courier$¿°dONLNd=\jh¶)
  7815. FindWindow$¿°dONLNdG\¶h¡)< also r˜ °dONLNdN\¿hˆ)eturns in its .°dONLNd\ilu(rl&second parameter a pointer to a window‡`°dONLNdÇiu[)≤, if the user prAÄ°dONLNdíi\uƒ)>esses the mouse button ¿°dONLNd©i≈u)i
  7816. while the °dONLNd≥vlÇî(l
  7817. cursor is ¥Ä°dONLNdΩvîÇÀ)( in a window|@°dONLNd»vÀÇ–)7. |@°dONLNd v–Dz) Listing 6-7Ä°dONLNd’vˇÇI)/ show how the Vè°dONLNd‰vHÇÔ)I#enn Diagrammer application handles °dONLNdÉlè«(ålmouse-down events.
  7818. ≤*∫¯4≥*∫¯"≥*_
  7819. ˇ·ˇ‚7^    °dONLNd®l≥ò*$ Listing 6-7°dONLNd&®∞≥&)DHandling mouse-down events
  7820. .°dONLNdA¬lŒz(Àl-PROCEDURE DoMouseDown (myEvent: EventRecord);°dONLNdp–~‹ê+VAR°dONLNdvfiêÍ∫+myPart:°dONLNdÅfiÿÍ)HInteger;°dONLNdåÏê¯Δ(ıê    myWindow:°dONLNdôÏÿ¯)H
  7821. WindowPtr;°dONLNd§˙lä(lBEGIN°dONLNd´~í+.myPart := FindWindow(myEvent.where, myWindow);°dONLNd€~"“*CASE myPart OF°dONLNdÏ$ê0“+ inMenuBar: °dONLNd˚2¢>¿+BEGIN°dONLNd@¥L+DoMenuAdjust;°dONLNdN¥Z™*)DoMenuCommand(MenuSelect(myEvent.where));°dONLNdD\¢h∫(e¢END;°dONLNdKjêvfi(sêInSysWindow: °dONLNd\x¢Ñ\+SystemClick(myEvent, myWindow);°dONLNd~Üêí¿(èêinDrag: °dONLNdäb+ DoDrag(myWindow, myEvent.where);°dONLNd≠¢êÆÃ(´ê
  7822. inGoAway: °dONLNdª∞¢ºÄ+%DoGoAwayBox(myWindow, myEvent.where);°dONLNd„æê “(«ê inContent: °dONLNdÚâÿ¿+BEGIN°dONLNd¸⁄¥Ên+IF myWindow <> FrontWindow THEN°dONLNd!ËΔÙJ+SelectWindow(myWindow)°dONLNd<ˆ¥Ã(ˇ¥ELSE°dONLNdFΔí+"DoContentClick(myWindow, myEvent);°dONLNdl¢∫(¢END;°dONLNds ê,Δ()ê    OTHERWISE°dONLNdÄ.¢:®+;°dONLNdÉ<~Hñ(E~END;°dONLNdàJlVÑ(SlEND;°dONLNdçbln˝*"If the user clicks in the menu bar¬†°dONLNdØb¸n)ê, ¬†°dONLNd±bnC) DoMouseDown¬†°dONLNdºbCn“)B! adjusts the menus and calls the °dONLNd›ol{∏(xlapplication-defi°dONLNdÌo∏{Œ)Lned rR`°dONLNdÚoŒ{Ï)outine R`°dONLNd˘oÏ{:)DoMenuCommandR`°dONLNdo:{)N% to handle whatever menu command the .°dONLNd+|làò(Öl    user migh@°dONLNd4|ôàø)-    t choose.퇰dONLNd=|øà‚)&A See the chapter “Menus” in this book for details on handling mene¿°dONLNd~|„àÎ(Ö„u °dONLNdÄâlïé(ílchoices..°dONLNdâõlßÄ*The °dONLNdçõÄߺ)
  7823. FindWindow°dONLNdóõºßË)<  function rR`°dONLNd¢õËßC),eturns the part code R`°dONLNd∑õCßÖ)[ inSysWindowR`°dONLNd¬õÖßfi)B only when the user .°dONLNd÷®l¥u(±lprG °dONLNdÿ®v¥÷)
  7824. esses the mouse buttoœ°dONLNdÌ®÷¥¸)`    n while t•Ä°dONLNdˆ®˝¥()'
  7825. he cursor O†°dONLNd®)¥2),is ı°dONLNd®2¥Œ)    #in a window that belongs to a desk ˇ56@ˇ ˇˇˇˇ@
  7826. ˇ·ˇ‚7^
  7827. 4H\, Palatino&e.3+ä"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@äW–í)indows4⁄ä˙(‡ä
  7828. Handling W¿)/ indow Events
  7829. (‡121
  7830. ˇˇˇˇˇˇˇˇ4 4>lòÄ0 @>oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7831. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7832.  
  7833.  
  7834.  
  7835.  
  7836.  
  7837. ˆ                        ˜¯˘˙˚¸˝˛ˇ @>o @>o$——————————————————————————————òÄ
  7838.  6>@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7839. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7840.  
  7841.  
  7842.  
  7843.  
  7844.  
  7845. ˆ                        ˜¯˘˙˚¸˝˛ˇ 6>@ 6>@˜˜˜˜˜˜˜˜˜˜˜˜˝¸ˇ˛˙ˇ
  7846. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜
  7847. 4C4fl?òÄ
  7848. C6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7849. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7850.  
  7851.  
  7852.  
  7853.  
  7854.  
  7855. ˆ                        ˜¯˘˙˚¸˝˛ˇC6fl@C6fl@$˚˝ˇ˛˛ˇ˝˚ˇˇˇ˘ˇˇ˚ˇˇˇ˛˛ˇ˝˚˝ˇ˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝˛ˇ˛
  7856. ˛ˇ˛ˇˇ
  7857. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  7858. ˛ˇ˛ˇˇ
  7859. ˛ˇ˛ˇˇ˝˛ˇ˛˜˜¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜    ˛ˇˇ˛
  7860. ˛ˇˇˇˇ
  7861. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿.°dONLNd\ähq(eä4accessory launched in your application’s partition. R`°dONLNd4\qhx)ÁYg`°dONLNd5\wh—)ou can then call the ,
  7862. Courierg`°dONLNdJ\—h)Z SystemClickg`°dONLNdU\h)B °dONLNdViäuî(räprR`°dONLNdXiîu±)
  7863. ocedur$¿°dONLNd^i±u)e, passing it the event r˜ °dONLNdwiu+)hecor…Ä°dONLNd{i+uç)d and window pointer  °dONLNdèiçu¶)b. The   °dONLNdïi¶uË) SystemClick  °dONLNd†iËuÍ)B .°dONLNd°väÇì(äprG °dONLNd£vîÇ≤)
  7864. ocedurfi`°dONLNd©v≤ÇÊ) e makes sur‡°dONLNd¥vÁÇê)5'e that the event is handled by the appr‘@°dONLNd€vêÇÛ)©opriate desk accessory‰°dONLNdÒvÚÇ)b. For .°dONLNd˜Éäèõ(åämorR`°dONLNd˙Éõèı)e information about R`°dONLNdÉıè7)Z SystemClickR`°dONLNdÉ7èfl)B%, see the chapter “Event Manager” in R`°dONLNd>Éflè˝)®Inside .°dONLNdEêäúÌ(ôäMacintosh: Macintosh T·°dONLNd[êÏú0)boolbox Essentials¶°dONLNdlê1ú3)E..°dONLNdn¢äÆ1(´ä'If the user clicks in a window’s drag rR`°dONLNdï¢1Ær)ßegion (identifiR`°dONLNd§¢rÆ )Aed by the part code R`°dONLNd∏¢ ÆÓ)XinDragR`°dONLNdæ¢ÓƘ)$), ˇ˛…>°dONLNd¡ØäªÃ(∏ä DoMouseDownˇˇòj°dONLNdÃØê?)B calls the application-defæ°dONLNdÊØ@ªY)tined rÑà°dONLNdÏØYªv)outine ˇ˛…>Ú°dONLNdÛØwªõ)DoDragˇˇòjÚ°dONLNd˘ØõªÆ)$, defÖ‹°dONLNd˛ØƪŒ)ined in ∂∞°dONLNdØŒª˝)  Listing 6-8O°dONLNdØ˛ª)0. ÁÑ°dONLNdت)The °dONLNdºä»Æ(≈äDoDrag°dONLNdºÆ»∞)$ °dONLNdº∞»∫)prR`°dONLNd º∫»◊)
  7865. ocedur$¿°dONLNd&º◊»fi)e $¿°dONLNd(ºfi») calls the Wò °dONLNd3º»d)4indow Manager prjÄ°dONLNdCºd»Å)Rocedur<‡°dONLNdIºÅ»à)e <‡°dONLNdKºà»ƒ)
  7866. DragWindowQ‡°dONLNdUº√»);, which displays .°dONLNdf…ä’˘(“äan outline of the window0‡°dONLNd~…˘’)o>, moves the outline as long as the user continues to drag the .°dONLNdº÷ä‚Æ(fläwindowï°dONLNd¬÷≠‚›)# , and calls ï°dONLNdŒ÷›‚)0
  7867. MoveWindowï°dONLNdÿ÷‚)<6 to draw the window in its new location when the user .°dONLNd„äÔç(ÏärE°dONLNd„éÔ¸)eleases the mouse button@°dONLNd'„˝Ôˇ)o.
  7868. H4H"H_
  7869. ˇ·ˇ‚7^    °dONLNd)ä∂(ä Listing 6-8°dONLNd5Œ)DDragging a window
  7870. .°dONLNdG"H.ò(+H8PROCEDURE DoDrag (myWindow: WindowPtr; mouseloc: Point);°dONLNdÅ0Z<l+VAR°dONLNdá>lJÆ+ dragBounds:°dONLNdñ>¥J“)HRect;°dONLNdúLHXf(UHBEGIN°dONLNd£ZZfÆ+dragBounds := °dONLNd±ZÆf¥)TG°dONLNd≤Z¥f&)etGrayRgn^^.rgnBBox°dONLNd≈Z&f,)r;°dONLNd»hZt\(qZ+DragWindow(myWindow, mouseloc, dragBounds);°dONLNdÙvHÇ`(HEND;°dONLNd˘éäö–+BIf the user click°dONLNd
  7871. é–ö‹)Fs a°dONLNdé‹ö[)  window’s close box (identifi°dONLNd*é[ö≥)ed by the part code °dONLNd>é≥ö„)XinGoAway°dONLNdFé„ö)0 ), you can .°dONLNdQõäßÔ(§äcall an application-defiè@°dONLNdiõÔß )ened prç °dONLNdoõ ß*)ocedur$`°dONLNduõ+ßé)e to close that windowfi¿°dONLNdãõçߣ)b. See 1¿°dONLNdëõ§ß◊)
  7872. “Closing W‡°dONLNdõõ◊ߡ)3indows” °dONLNd£®ä¥fi(±äbeginning on page V °dONLNdµ®fl¥Ó)U128V °dONLNd∏®Ó¥®)* for a discussion of how to close windows..°dONLNd„∫äΔ≠(√äFinallyd@°dONLNdÍ∫¨Δ√)", the d@°dONLNd∫√Δ) DoMouseDownd@°dONLNd˚∫Δ)B pr6†°dONLNd˛∫Δ.) ocedur    °dONLNd∫.ΔG)e defi    °dONLNd
  7873. ∫GΔd)ned in     °dONLNd∫dΔî) Listing 6-7    °dONLNd∫îΔ)0 handles all user clicks in a .°dONLNd:«ä”fl(–äwindow’s content r °dONLNdL«‡”∏)V4egion either by selecting the window if it isn’t alrY °dONLNdÄ«∏”Á)ÿ eady the fr√‡°dONLNdã«Á”)/ontmost .°dONLNdì‘䇶(›äwindo°dONLNdò‘¶‡µ)w o°dONLNdõ‘µ‡)r by calling the rR`°dONLNd≠‘‡)Koutine R`°dONLNd¥‘‡r)DoContentClickR`°dONLNd¬‘r‡Ü)T defiR`°dONLNd«‘܇£)ned in R`°dONLNdŒ‘£‡”) Listing 6-9R`°dONLNdŸ‘”‡÷)0.
  7874. H 4H "H_
  7875. ˇ·ˇ‚7^    .°dONLNd€˘ä∂(ä Listing 6-9°dONLNdÁ˘Œ=)DHandling clicks in a window’ÿ∞°dONLNd˘=})os content region
  7876. .°dONLNdHÊ(HEPROCEDURE DoContentClick (myWindow: WindowPtr; myEvent: EventRecord);°dONLNd[!Z-l+VAR°dONLNda/l;ñ+myRect:°dONLNdl/¥;“)HRect;°dONLNdy/D;¬)ê{temporary rectangle}°dONLNdë=lIê(Flcount:°dONLNdõ=¥I‰)HInteger;°dONLNd§KHWf(THBEGIN°dONLNd´YZe +!IF NOT IsAppWindow(myWindow) THEN°dONLNdœglsÍ+exit(DoContentClick);°dONLNdÔg2s˛)Δ"{make sure it's a document window}°dONLNdÉZèΔ(åZSetPort(myWindow);°dONLNd2É2è¬)ÿ{set port to our window}°dONLNdLëZù(öZGlobalToLocal(myEvent.where);°dONLNdl≠ZπJ*({See if the click is in the tools area.}ˇB@ˇ ˇˇˇˇ@
  7877. ˇ·ˇ‚7^
  7878. 4*\¯, Palatino&e.3+l"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@lW–í)indows4⁄*˙¯
  7879. (‡*122    )B
  7880. Handling W¿)/ indow Events4^*¿¯,
  7881. Courier
  7882. .°dONLNd\<ht(e<4SetRect(myRect, 0, 0, kToolWd * kNumTools, kToolHt);°dONLNd6j<v&*'IF PtInRect(myEvent.where, myRect) THEN°dONLNd`xNÑl+BEGIN°dONLNdmxfiÑ‘)ê){if so, determine which tool was clicked}°dONLNdöÜ`í(è`FOR count := 1 TO kNumTools DO°dONLNdΩîr†ê+BEGIN°dONLNd»¢ÑÆÄ+*SetRect(myRect, (count - 1) * kToolWd, 0, °dONLNd¸∞úh+Hcount * kToolWd, kToolHt);°dONLNdæÑ n(«Ñ'IF PtInRect(myEvent.where, myRect) THEN°dONLNdJÃñÿ∫+Leave;°dONLNdTÃfiÿ⁄)H*{we found the right tool, so stop looking}°dONLNdÉ⁄rÊä(„rEND;°dONLNdãË`Ù8(Ò`$IF DoTrackRect(myWindow, myRect) THE°dONLNdØË8Ù>)ÿN°dONLNdµˆrP(ˇr%DoMenuCommand(BitShift(mVennD, 16) + °dONLNd‚®J+6((kNumTools + 1) - count));°dONLNd\Ú)¥{handle tools selections}°dONLNd$`fi(`exit(DoContentClick);°dONLNd< N,f()NEND;°dONLNdC<<H2(E<){See if the click is in the status area.}°dONLNdnJ<V,*(SetRect(myRect, kToolWd * kNumTools, 0, °dONLNdùXñdh+Z#myWindow^.portRect.right, kToolHt);°dONLNd¬f<r&(o<'IF PtInRect(myEvent.where, myRect) THEN°dONLNdÏtNÄl+BEGIN°dONLNdıÇ`éfi+exit(DoContentClick);°dONLNdêNúf(ôNEND;°dONLNd¨<∏û(µ<;{The click must be in somewhere in the rest of the window.}°dONLNdX∫<Δ*%DoVennClick(myWindow, myEvent.where);°dONLNd~»*‘B(—*END;ˇˇÀ°dONLNdɇlÏ+B%The general strategy employed in the ˇˇc–G†°dONLNd®‡Ïk)´DoContentClickˇˇÀG†°dONLNd∂‡kÏv)T prÂ°dONLNdπ‡vÏì) ocedur∏P°dONLNdø‡ìϘ)e is to check each part .°dONLNd◊Ìl˘≥(ˆlof the content arB†°dONLNdËÌ¥˘›)HCea that is meaningful to the application and determine whether the .°dONLNd+˙lª(lmouse click occurrR`°dONLNd=˙ª‹)Oed ther$¿°dONLNdD˙‹ˇ)!e. Then $¿°dONLNdL˙ˇS)#DoContentClick$¿°dONLNdZ˙SY)T r˜ °dONLNd\˙Xá)
  7883. eacts appr…Ä°dONLNdf˙á≥)/    opriately≠¿°dONLNdo˙≤µ)+.°dONLNdq lÀ(lAfter setting the currR`°dONLNdá ÀS)_ent drawing port to the specifiR`°dONLNd¶ SÑ)à    ed windowg`°dONLNdØ Éà)0, g`°dONLNd± à‹)DoContentClickg`°dONLNdø ‹ˆ)T calls °dONLNdΔl%~("lthe °dONLNd ~%Ã)GlobalToLocal°dONLNd◊Ã%ÿ)N prR`°dONLNd⁄ÿ%ı) ocedur$¿°dONLNd‡ı%†)(e to convert the mouse click location fr˜ °dONLNdü%Õ)™
  7884. om global °dONLNd&l2~(/lcoorR`°dONLNd&~2ÿ)dinates to local coor$¿°dONLNd+&ÿ2)Zdinates. Then $¿°dONLNd9&2l)@DoContentClick$¿°dONLNdG&l2à)T check$¿°dONLNdM&à2ñ)s w$¿°dONLNdP&ñ2‚)hether the click °dONLNda3l?Ü(<loccurrR`°dONLNdg3Ü?“)ed in the tools ar$¿°dONLNdy3“? )Lea of the window9¿°dONLNdâ3?()M. I9¿°dONLNdå3(?<)    f so, 9¿°dONLNdí3<?B)D9¿°dONLNdì3B?ê)oContentClick9¿°dONLNd†3ê?fl)N handles the tool .°dONLNd≤@lLÔ(Ilselection by invoking the corrYÄ°dONLNd–@ÔLµ)É(esponding menu command and then exiting..°dONLNd˘Rl^([l'If the mouse click was in the status arR`°dONLNd R^Y)©ea of a windowg`°dONLNd.RX^])C, g`°dONLNd0R]^±)DoContentClickg`°dONLNd>R±^Î)T simply exitsg`°dONLNdKRÎ^):. .°dONLNdM_lkw(hlOtû@°dONLNdO_wkæ) herwise, the use›°dONLNd__ækÕ)Gr m#†°dONLNdb_ŒkÓ)ust hav°¿°dONLNdi_Ók)  e clicked sŒ °dONLNdt_kD)-omewherò@°dONLNd{_Ekî)*e in the content ardONLNdé_îkÂ)Oea below the tools .°dONLNd°llx¶(uland status arR`°dONLNdÆl¶x):ea. In that case, R`°dONLNd¿lxD)JDoContentClickR`°dONLNdŒlDxº)T calls the application-defiR`°dONLNdÈlºxÙ)xned function °dONLNdˆylÖÆ(Çl DoVennClick°dONLNdyÆÖ )B to handle the event.ˇ8¯@ˇ ˇˇˇˇ@
  7885. ˇ·ˇ‚7^
  7886. 4H\, Palatino&e.3+ä"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@äW–í)indows4⁄ä˙(‡ä
  7887. Handling W¿)/ indow Events
  7888. (‡123
  7889. ˇˇˇˇˇˇˇˇ4 4>lòÄ0 @>oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7890. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7891.  
  7892.  
  7893.  
  7894.  
  7895.  
  7896. ˆ                        ˜¯˘˙˚¸˝˛ˇ @>o @>o$——————————————————————————————òÄ
  7897.  6>@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7898. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7899.  
  7900.  
  7901.  
  7902.  
  7903.  
  7904. ˆ                        ˜¯˘˙˚¸˝˛ˇ 6>@ 6>@˜˜˜˜˜˜˜˜˜˜˜˜˝¸ˇ˛˙ˇ
  7905. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜
  7906. 4C4fl?òÄ
  7907. C6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7908. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7909.  
  7910.  
  7911.  
  7912.  
  7913.  
  7914. ˆ                        ˜¯˘˙˚¸˝˛ˇC6fl@C6fl@$˚˝ˇ˛˛ˇ˝˚ˇˇˇ˘ˇˇ˚ˇˇˇ˛˛ˇ˝˚˝ˇ˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝˛ˇ˛
  7915. ˛ˇ˛ˇˇ
  7916. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  7917. ˛ˇ˛ˇˇ
  7918. ˛ˇ˛ˇˇ˝˛ˇ˛˜˜¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜    ˛ˇˇ˛
  7919. ˛ˇˇˇˇ
  7920. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  7921. ^Hk4^Hk    °dONLNd]ähù(eäNote
  7922. ˇ·ˇ‚7^
  7923. .°dONLNdiäuû*The ,
  7924. Courier°dONLNd    iûu‡) DoVennClick°dONLNdi‡u‚)B °dONLNdi‚u )
  7925. function i°dONLNdi u4)*    s not defi°dONLNd)i4uu)(ned in this boo°dONLNd8iuuî)Ak, but i°dONLNd@iîu∫)
  7926. t’s quite .°dONLNdJuäÅß(~äsimple-Ä°dONLNdPu®Å«). It mer±°dONLNdXu«Å!)ely checks whether tæ °dONLNdlu!Å<)Zhe clicä`°dONLNdsu=Åa)k occurrÆ@°dONLNd{uaÅq)$ed i¸°dONLNduqÅè)n the fi∑Ä°dONLNdáuêÅü)gur¿°dONLNdäu†Åß)e \`°dONLNdåußŬ)icons, °dONLNdìÅäçí(äämT°dONLNdîÅìç«)     ood icons, o,¿°dONLNd†Å»ç“)5r s‹`°dONLNd£Å“ç[)
  7927. ome part of the overlapping cirxÄ°dONLNd¬Å\çh)äcleö¿°dONLNd≈Åhç†) s and, if so, c#‡°dONLNd‘Å°ç¬)9hanges °dONLNd€çäô¸(ñäthe window’s document rY†°dONLNdÚç¸ô)recorŒ°dONLNdˆçô-)d accorÑ¿°dONLNd˝ç.ôØ) dingly and invalidates any afj@°dONLNdçØôÃ)Åfected .°dONLNd!ôä•…(¢äpart of the scrR`°dONLNd0ô…•›)?een. Ù°dONLNd5ô‹•‰)Ag`°dONLNd6ô‰•)  portion of g`°dONLNdBô•V)0 DoVennClickg`°dONLNdMôV•å)B is shown in g`°dONLNdZôå•Æ)6Listing .°dONLNdb•ä±ú(Æä6-10”‡°dONLNdf•ú±û).,Zapf DingbatsS‡°dONLNdp®§∞©)u
  7928. ’H‹4÷H‹ ◊ä◊
  7929. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdrΔä’„(—äUpdate Eventsˇˇˇˇˇˇ€r(—6
  7930. °dONLNdÄ‹äËX(Âä,The Event Manager sends your application an §Ä°dONLNd¨‹XËì)Œ update event `°dONLNd∏‹ìË); when part or all of your °dONLNd“Èäıfl(Úäwindow’s content r °dONLNd‰È‡ı3)Vegion needs to be r,†°dONLNd˜È3ıw)Sedrawn. Specifiù‡°dONLNdÈwıã)DcallyR@°dONLNd Èãı), the Event Manager checks .°dONLNd&ˆäı(ˇäeach window’s update rR`°dONLNd<ˆı®)k(egion every time your application calls R`°dONLNddˆ®ˆ)≥WaitNextEventR`°dONLNdqˆˆ )N and .°dONLNdväó( ä9generates an update event for every window whose update râ¿°dONLNdØóÈ( óegion is not emptydONLNd¡ËÍ)Q.°dONLNd√ä!ß(äThe W/ °dONLNd»ß!Ê)Dindow Manager typically triggers update events when the moving and rj‡°dONLNd Ê!(Ê
  7931. elayering °dONLNd"ä.Î(+äof windows on the scr‡°dONLNd+"Ï.)been røÄ°dONLNd0".)equir÷¿°dONLNd5".h)es that one or mor∫†°dONLNdG"h.´)Pe windows be rPÄ°dONLNdU"¨.)Dedrawn. If the user °dONLNdi/ä;Ç(8ä5moves a window that covers part of an inactive windowo@°dONLNdû/Ç;€)¯, for example, the Wˆ`°dONLNd≤/⁄;˘)Xindow °dONLNd∏<äH∫(Eä    Manager fiû¿°dONLNd¬<∫HÀ)0rst rU¿°dONLNd«<ÃH€):edraws the window frame. It then adds the newly exposed arXÄ°dONLNd<€H(E€
  7932. ea to the °dONLNd IäUfi(Räwindow’s update rs@°dONLNdIfiUˆ)Tegion˚@°dONLNd!IˆU˛), t=†°dONLNd$IˇU)    riggeÄ°dONLNd)IU/)ring aº°dONLNd/I/Un)n update even…@°dONLNd<InUÖ)?t. In rÄÄ°dONLNdCIÜU≥)
  7933. esponse, ye‡°dONLNdMI¥UÒ).our applicatio:†°dONLNd[IÚU˙)>n °dONLNd]Väbê(_äuá °dONLNd^Vêb©)pdate±°dONLNdcV©b≠)sÓ°dONLNddV≠bÁ) the content rÁ@°dONLNdrVÁb):egion.
  7934. pH~4qH~    °dONLNdyoäzù(wäNote
  7935. ˇ·ˇ‚7^
  7936. °dONLNd~|äàê*Y@Ä°dONLNd|êàÎ)our application can rÌ@°dONLNdî|ÎàÆ)[.eceive update events when it is in either the °dONLNd¬àäîñ(ëäfor`°dONLNd≈àóî•)egr, °dONLNd»à•î˘)ound or the backgr6Ä°dONLNd⁄à˘îm)Tound. In general, however+Ä°dONLNdÛàmîΩ)t, it doesn’t matter °dONLNdîä†Ó(ùäwhether your update r∂`°dONLNdîÓ†h)doutine is executed in the for†°dONLNd9îi†w){egr<`°dONLNd<îw†≠) ound or the °dONLNdH†ä¨®(©äbackgr[ °dONLNdN†®¨¡)ound.D‡°dONLNd\£«´Ã)u
  7937. °dONLNd^±äΩê(∫äY@Ä°dONLNd_±êΩ˜)Rour application can also trigger update events itself by manipulating the update rX†°dONLNd±±˜Ω(∫˜egion. °dONLNd∏æä ê(«äY@Ä°dONLNdπæê Ã)ou can add ar{@°dONLNdΔæàC)<eas to a window’s update r≠°dONLNd‡æC ¶)wegion by calling the W&`°dONLNdˆæ¶ Ô)cindow Manager .°dONLNdÀä◊î(‘äprR`°dONLNdÀî◊±)
  7938. ocedur$¿°dONLNd À±◊º)es $¿°dONLNdÀº◊Ú)     InvalRect$¿°dONLNdÀÚ◊#)6  (to add a r˜ °dONLNd$À"◊ç)0ectangle to the update r…Ä°dONLNd<Àç◊æ)k egion) and …Ä°dONLNdGÀæ◊Ó)1InvalRgn…Ä°dONLNdOÀÓ◊)0     (to add .°dONLNdXÿ䉃(·äan arbitrary r/¿°dONLNdfÿ≈‰!);egion to the update rC°dONLNd{ÿ!‰∞)\egion). For example, when the VÕ†°dONLNdöÿ؉¸)éenn Diagrammer °dONLNd©ÂäÒ6(Óä(application detects a mouse click in a fiˆ°dONLNd“Â6ÒE)¨gurQ@°dONLNd’ÂFÒq) e icon, it r™ °dONLNd·ÂqÒ¿)+eacts as shown in `°dONLNdÛ¡ÒÙ)P Listing 6-10¶†°dONLNdˇÂÙÒˆ)3.
  7939. H4H"H_
  7940. ˇ·ˇ‚7^    °dONLNd
  7941. äª(ä Listing 6-10°dONLNd
  7942. Œ%)DHandling a click in a fiÉ°dONLNd&
  7943. %J)W    gure icon
  7944. .°dONLNd0$H0Ã(-HFOR count := 1 TO 4 DO°dONLNdH2Z>x+BEGIN°dONLNdP@lLÄ+.IF PtInRect(myPoint, gFigureRects[count]) THEN°dONLNdÇN~ZJ+"IF myHandle^^.figure <> count THEN°dONLNd±NhZ)Í{new rect differ from prev?}°dONLNd“\êhÆ(eêBEGIN°dONLNd›j¢v§++InvalRect(gFigureRects[myHandle^^.figure]);°dONLNdx¢ÑD*myHandle^^.figure := count;°dONLNd/Ü¢í§*+InvalRect(gFigureRects[myHandle^^.figure]);°dONLNd`8*InvalRect(gTextBoxes[1]);°dONLNdÑîh†Ê)Δ{invalidate premises}°dONLNdü¢¢Æ8(´¢InvalRect(gTextBoxes[2]);°dONLNdæ∞¢º,*DoCalcAnswer(myWindow);°dONLNd‡∞hº
  7945. )Δ{update the current answer}ˇz@ˇ ˇˇˇˇ@
  7946. ˇ·ˇ‚7^
  7947. 4*\¯, Palatino&e.3+l"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@lW–í)indows4⁄*˙¯
  7948. (‡*124    )B
  7949. Handling W¿)/ indow Events4^*¿¯,
  7950. Courier
  7951. .°dONLNd\Ñh&(eÑDoStatusText(myWindow, '');°dONLNd&\Jh¯)Δ{remove any existing message}°dONLNdHjrvä(srEND;°dONLNdNx<ÑT(Å<END;.°dONLNdSêlúr+0Y@Ä°dONLNdTêrú˜)Wour general strategy should be to isolate all drawing that occurs in a document window °dONLNd´ùl©¯(¶l into your application’s update r° °dONLNdÀù¯©Ñ)å outine. Then, within any other rhÄ°dONLNdÎùÖ©¡)çoutines, you r8†°dONLNd˘ù¬©‡)=edraw °dONLNdˇ™l∂≈(≥lparts of the window(‡°dONLNd™≈∂#)Y, whenever necessaryM@°dONLNd&™"∂Û)]1, by invalidating those parts to add them to the °dONLNdW∑l√¿(¿lwindow’s update rs@°dONLNdh∑¿√›)Tegion. ˚@°dONLNdo∑›√ ) Listing 6-1‡°dONLNdz∑ √)/1‡°dONLNd{∑√h) shows the update r˙ °dONLNdé∑g√ú)V outine for V‡°dONLNdö∑ú√Á)5enn DiagrammerœÄ°dONLNd®∑Ê√Ë)J.
  7952. Ê*Ó¯4Á*Ó¯"Á*_
  7953. ˇ·ˇ‚7^    °dONLNd™‹lÁù(‰l Listing 6-11°dONLNd∑‹∞Á)DHandling update events
  7954. .°dONLNdŒˆ* (ˇ*)PROCEDURE DoUpdate (myWindow: WindowPtr);°dONLNd˘<N+VAR°dONLNdˇNÑ+    myHandle:°dONLNd ñfi)H MyDocRecHnd;°dONLNd N,x()NmyRect:°dONLNd& ñ,¥)HRect;°dONLNd1 ,b)l{tool rectangle}°dONLNdD.N:Ñ(7N    origPort:°dONLNdQ.ñ:Δ)HGrafPtr;°dONLNd\<NH~(ENorigPen:°dONLNdh<ñHÃ)H    PenState;°dONLNdtJNVr(SNcount:°dONLNd~JñVΔ)HInteger;°dONLNdáX*dH(a*BEGIN°dONLNdéf<r®+GetPort(origPort);°dONLNd´fr¬)Δ {remember original drawing port}°dONLNdÕt<Ä®(}<SetPort(myWindow);°dONLNd‚ê<úÆ*BeginUpdate(myWindo°dONLNdıêÆú¿)rw);°dONLNdêúÄ)T{clear update region}°dONLNdû<™fi(ß<EraseRect(myWindow^.portRec°dONLNd5ûfi™)¢t);°dONLNd;∫<ΔÍ(√<IF IsAppWindow(myWindow) THEN°dONLNd[»N‘l+BEGIN°dONLNdd÷`‚§+6{Draw two lines separating tools area from work area.}°dONLNdû‰`fi*GetPenState(origPen);°dONLNdº‰∞)¢{remember original pen state}°dONLNd›Ú`˛ú(˚`
  7955. PenNormal;°dONLNdÚ˛§)¢{reset pen to normal state}°dONLNd` Δ(    `WITH myWindow^ DO°dONLNd%rê+BEGIN°dONLNd0Ñ(ò+.MoveTo(portRect.left, portRect.top + kToolHt);°dONLNdd*Ñ6*Line(portRect.right, 0);°dONLNdÇ8ÑD∞*2MoveTo(portRect.left, portRect.top + kToolHt + 2);°dONLNd∫FÑR*Line(portRect.right, 0);°dONLNd◊Tr`ä(]rEND;°dONLNd‡p`|D(y`&{Redraw the tools area in the window.}°dONLNd
  7956. ~`ä*FOR count := 1 TO kNumTools DO°dONLNd-åròê+BEGIN°dONLNd8öѶ‡+:SetRect(myRect, kToolWd * (count - 1), 0, kToolWd * count,°dONLNd{®∫¥ˆ+6
  7957.  kToolHt);ˇ6@ˇ ˇˇˇˇ@
  7958. ˇ·ˇ‚7^
  7959. 4H\, Palatino&e.3+ä"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@äW–í)indows4⁄ä˙(‡ä
  7960. Handling W¿)/ indow Events
  7961. (‡125
  7962. ˇˇˇˇˇˇˇˇ4 4>lòÄ0 @>oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7963. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7964.  
  7965.  
  7966.  
  7967.  
  7968.  
  7969. ˆ                        ˜¯˘˙˚¸˝˛ˇ @>o @>o$——————————————————————————————òÄ
  7970.  6>@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7971. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7972.  
  7973.  
  7974.  
  7975.  
  7976.  
  7977. ˆ                        ˜¯˘˙˚¸˝˛ˇ 6>@ 6>@˜˜˜˜˜˜˜˜˜˜˜˜˝¸ˇ˛˙ˇ
  7978. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜
  7979. 4C4fl?òÄ
  7980. C6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  7981. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  7982.  
  7983.  
  7984.  
  7985.  
  7986.  
  7987. ˆ                        ˜¯˘˙˚¸˝˛ˇC6fl@C6fl@$˚˝ˇ˛˛ˇ˝˚ˇˇˇ˘ˇˇ˚ˇˇˇ˛˛ˇ˝˚˝ˇ˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝˛ˇ˛
  7988. ˛ˇ˛ˇˇ
  7989. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  7990. ˛ˇ˛ˇˇ
  7991. ˛ˇ˛ˇˇ˝˛ˇ˛˜˜¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜    ˛ˇˇ˛
  7992. ˛ˇˇˇˇ
  7993. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  7994. Courier.°dONLNd\¢h˛(e¢:DoPlotIcon(myRect, gToolsIcons[count], myWindow, srcCopy);°dONLNd?jêv®(sêEND;°dONLNdHÜ~íh(è~'{Redraw the status area in the window.}°dONLNdsî~†í*.myHandle := MyDocRecHnd(GetWRefCon(myWindow));°dONLNd•¢~Æí*.DoStatusText(myWindow, myHandle^^.statusText);°dONLNdÿæ~ b*&{Draw the rest of the content region.}°dONLNdÃ~ÿ¸*DoVennDraw(myWindow);°dONLNd#Ë~Ùˆ*SetPenState(origPen)°dONLNd=ˈٸ)x;°dONLNdBË2Ù⁄)<{restore previous pen state}°dONLNdaˆlÍ(ˇlEND; {IF IsAppWindow}°dONLNdyZ“(ZEndUpdate(myWindow);°dONLNdè Z,Δ*SetPort(origPort);°dONLNd≠ 2,Ï)ÿ{restore original drawing port}°dONLNdÕ.H:`(7HEND;°dONLNd“FäRô+BIn rR`°dONLNd÷FôRu)1esponse to an update event, your application callR`°dONLNdFuR{)‹s R`°dONLNd    F{RÅ)BR`°dONLNd
  7995. FÅR∑)    eginUpdatR`°dONLNdF∑RΩ)6eR`°dONLNdFΩR¿),R`°dONLNdF¿RÚ)  draws the °dONLNd Sä_(\ä window’s contents, and then call°dONLNd@S_")ís °dONLNdBS"_()E°dONLNdCS(_R)ndUpdat°dONLNdJSR_X)*e°dONLNdKSX_q). The °dONLNdQSq_≥) BeginUpdate°dONLNd\S≥_ø)B prR`°dONLNd_Sø_‹) ocedur$¿°dONLNdeS‹_Á)e l$¿°dONLNdhSÁ_)
  7996. imits the .°dONLNdr`äl≠(iä    visible r≤†°dONLNd{`≠lX)#*egion to the intersection of the visible rJ °dONLNd•`YlΩ)¨egion and the update r톰dONLNdª`Ωl⁄)degion. Ì°dONLNd¬`⁄l‡)Y≠Ä°dONLNd√`‡lÒ)our °dONLNd«mäyW(vä0application can then update either the visible rÍ@°dONLNd˜mWy£)Õegion or the entir¬Ä°dONLNd    m£y—)L e content r(°dONLNdm“yÙ)/egion—°dONLNdzäÜh(Éä1because QuickDraw limits drawing to the visible r£Ä°dONLNdKzhÜ)fi$egion, only the parts of the window .°dONLNdoáäì(êäthat actually need updating arR`°dONLNdçáìS)åe drawn. The R`°dONLNdöáSìï)= BeginUpdateR`°dONLNd•áïì°)B pr$¿°dONLNd®á°ìæ) ocedur˜ °dONLNdÆáΩì)e also clears the °dONLNd¿îä†∞(ùäupdate rR`°dONLNd»î∞†Õ)&egion. Ù°dONLNdœîÆe)After you’ve updated the window    °dONLNdÓîe†ê)ô , you call     °dONLNd˘îê†Δ)+    EndUpdate    °dONLNdîΔ†◊)6 to r€`°dONLNdî÷†Ï)estor≠¿°dONLNd îφ)e the .°dONLNd°ä≠≠(™ä    visible r≤†°dONLNd°≠≠q)#0egion in the graphics port to the full visible r\‡°dONLNdK°r≠ç)≈egion.°dONLNdR≥äøŸ(ºäAs you can see in €†°dONLNdd≥Ÿø)O Listing 6-1Ô@°dONLNdo≥ø ).1Ô@°dONLNdp≥ ø(), the Vi°dONLNdw≥(ø)/enn Diagrammer application draws the two lines °dONLNd¶¿äÃ}(…ä6separating the upper portion of the window’s content r«`°dONLNd‹¿}ÃØ)Û egion and rÄ°dONLNdÁ¿∞Ã˚)3edraws the tools °dONLNd¯ÕäŸÀ(÷äicons. Then it rŸ`°dONLNdÕÀŸ)Aedraws the most r0†°dONLNdÕŸ)P8ecently displayed status message (which it has saved in ˇˇ]B.°dONLNdQ⁄äʘ(„äthe window’s document rj&°dONLNdh⁄˜Ê    )mecor<Ü°dONLNdl⁄    Ê:) d). Finally~°dONLNdw⁄9Ê=)0, ˇ˛Δ€J°dONLNdy⁄=Êm)DoUpdateˇˇ]B€J°dONLNdÅ⁄mÊ„)0 calls the application-defiÛ°dONLNdú⁄„ʯ)vned r"≤°dONLNd°⁄˘Ê)outine °dONLNd®ÁäÛΔ(ä
  7997. DoVennDraw°dONLNd≤ÁΔÛ)< to draw the rR`°dONLNd¿ÁÛy)=emainder of the content ar$¿°dONLNd⁄ÁyÛ‚)vea (the overlapping cir˜ °dONLNdÒÁ·Û    )h
  7998. cles, the .°dONLNd˚Ùäê(˝äfiå¿°dONLNd˝Ùêü)gurË°dONLNdÙü^),e and mood icons, the term labels on the cir¶‡°dONLNd,Ù_‡)¿ cles, and the syllogism itself).
  7999. H4H    °dONLNdMäù(äNote
  8000. ˇ·ˇ‚7^
  8001. .°dONLNdRä&û*The °dONLNdVû&⁄)
  8002. DoVennDraw°dONLNd`⁄&‡)< rR`°dONLNdb‡&Ø)0outine is not shown in this book, but you’ve alr$¿°dONLNdíØ&»)œeady .°dONLNdó&ä2§(/äBseen portions of it in the chapter “Drawing” earlier in this book.,Zapf Dingbatsï¿°dONLNd‚)©1Æ(/©u
  8003. VH]4WH] XäX
  8004. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd‰GäVË(RäActivate Eventsˇˇˇˇˇˇ€r(R6
  8005. °dONLNdÙ]äi/(fä$The window in which the user is currÛ°dONLNd]/iâ)•ently working is the ·¿°dONLNd-]äiÃ)[active window‡ °dONLNd:]ÃiŒ)B.` °dONLNd;]œi) It’s always the °dONLNdLjävë(säfrò‡°dONLNdNjëv≈)Bontmost window on the desktop (unless your application supports “fl>°dONLNdëjΔvÈ(sΔoating” °dONLNdôwäÉ(Ääwindows) and is easily identifiYÄ°dONLNd∏wÉ√)à+ed by the “racing stripes” in the title barµ°dONLNd„w¬Éƒ)∞.°dONLNdÂâäïê(íäY@Ä°dONLNdÊâêïÅ)6our application activates and deactivates windows in rÇ`°dONLNdâÅï≤)Ò esponse to êÄ°dONLNd'â≤ï˜)1activate events,˙Ä°dONLNd7â˜ï˘)E °dONLNd8ñä¢∞(üäwhich ar`°dONLNd@ñ±¢)'e generated by the WV†°dONLNdTñ¢)]7indow Manager to inform your application that a window °dONLNdã£äØÖ(¨ä:is becoming active or inactive. Each activate event specifi‡°dONLNdΔ£ÜØ    )¸es the window to be changed °dONLNd‚∞äº∫(πä and the dir†°dONLNdÌ∞ªº˙)1Mection of the change (that is, whether it is to be activated or deactivated).ˇ8@ˇ ˇˇˇˇ@
  8006. ˇ·ˇ‚7^
  8007. 4*\¯, Palatino&e.3+l"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@lW–í)indows4⁄*˙¯
  8008. (‡*126    )B
  8009. Handling W¿)/ indow Events4^*¿¯
  8010. .°dONLNd\lhs(elYï°dONLNd\rhò)Dour application also triggers activate events itself by calling the ,
  8011. Courierï°dONLNdE\òh‡(eò SelectWindowï°dONLNdQ\‡h‚)H .°dONLNdRiluu(rlprG °dONLNdTivuî)
  8012. ocedurfi`°dONLNdZiîu«) e. When it r °dONLNdfi»u¨)40eceives a mouse-down event in an inactive window,†°dONLNdñi´uÈ)„, for example, .°dONLNd•vlÇ“(lyour application calls °dONLNdºv“Ç)f SelectWindowï°dONLNd»vÇfl)G,, which brings the selected window to the frg`°dONLNdÙvflÇÚ)Δont, .°dONLNd˘Élèo(ålrE°dONLNd˙ÉpèÂ)emoves the highlighting frR°dONLNdÉÂè)u    om the pr@°dONLNdÉèy)+eviously active window‚@°dONLNd3ÉxèÏ)h, and adds highlighting to .°dONLNdNêlúfl(ôlthe selected window (see °dONLNdgêflú5)sListing 6-7 on page °dONLNd{ê5úD)V120°dONLNd~êDúa)). The °dONLNdÖêaú©) SelectWindow°dONLNdëê©úµ)H prR`°dONLNdîêµú“) ocedur$¿°dONLNdöê“ú)e then .°dONLNd°ùl©(¶l$generates two activate events: the fi‡°dONLNdΔù    ©’)ù1rst one tells your application to deactivate the °dONLNd˜™l∂u(≥lprG °dONLNd˘™v∂∏)
  8013. Geviously active window; the second, to activate the newly active window °dONLNd@™∑∂π(≥∑.°dONLNdBºl»†(≈l
  8014. When you rΩ °dONLNdLº†»)4eceive the event for the pr$°dONLNdgº»|)seviously active windowΔ@°dONLNd}º{»)h, you need to do whatever °dONLNdó…l’ä(“lis apprÓ†°dONLNdû…ä’Û)Oopriate to make the window’s contents appear inactive. Depending on the design °dONLNdÌ÷l‚(fll%of you application, you might need to,Zapf Dingbats°dONLNdÏlÛq*n
  8015. °dONLNdÈxıµ) hide the contrª°dONLNd#ȵı˚)=ols and size box°dONLNd4˛lq(ln
  8016. °dONLNd6˚x{) rE°dONLNd7˚|É);emove or alter any highlighting of selections in the window°dONLNds l†(l
  8017. When you rΩ °dONLNd} †h)4,eceive the event for the newly active windowfl@°dONLNd© g})«, you°dONLNdØ"l)q((ln
  8018. °dONLNd±x+π) draw the contrÅ@°dONLNdøπ+ˇ)Aols and size box°dONLNd–4l;q(:ln
  8019. °dONLNd“1x={) rE°dONLNd”1|=ë)estor»Ä°dONLNdÿ1ë=‘)e the content arã`°dONLNdË1’=)Dea as necessaryF‡°dONLNd˜1=)B4, adding the insertion point in its former location °dONLNd+=xI·(Fxand highlighting any prÎÄ°dONLNdB=·Ii)ieviously highlighted selections°dONLNdbNlZ∑(WlJIf the newly activated window also needs updating, your application also r¯‡°dONLNd¨N∑ZÊ(W∑ eceives an °dONLNd∑[lg    (dl$update event, as described in the prÙ °dONLNd€[    gL)ùevious section, nÄ°dONLNdÎ[Mgö)D“Update Events.”
  8020. u*ɯ4v*ɯ    °dONLNd¸tl(|lNote
  8021. ˇ·ˇ‚7^
  8022. °dONLNdÅlçs*A∫†°dONLNdÅsçC)/ switch to one of your application’s windows frU °dONLNd1ÅDçh)—om a dif…°dONLNd9Åhçt)$fer´Ä°dONLNd<ÅtçÑ) ent °dONLNd@çlô›(ñlapplication is handled thrA@°dONLNdZçfiô6)rough suspend and räÄ°dONLNdlç6ô¨)Xesume events, not activate °dONLNdáôl•·(¢levents. See the chapter “PrK†°dONLNd¢ô‚•¨)v/ocesses” in this book for a description of how °dONLNd—•l±)(Æl)your application can handle suspend and r”Ä°dONLNd˙•)±g)Ωesume events.     °dONLNd®m∞r)Du
  8023. ˇˇ¥Œ.°dONLNd∂l¬†(øl Listing 6-124Œ°dONLNd∂°¬2)5  illustrates the application-defiS8°dONLNd?∂2¬M)ëned pr⁄f°dONLNdE∂M¬j)ocedur¨Δ°dONLNdK∂j¬p)e ˇˇjaî°dONLNdM∂q¬≠)
  8024. DoActivateˇˇ¥Œaî°dONLNdW∂≠¬¯)<, which handles .°dONLNdg√lœØ(Ãlactivate events.
  8025. Ú*˙¯4Û*˙¯"Û*_
  8026. ˇ·ˇ‚7^    °dONLNdxËlÛù*$ Listing 6-12°dONLNdÖË∞Ûi)D-Handling window activations and deactivations
  8027. .°dONLNd≥*∞( *APROCEDURE DoActivate (myWindow: WindowPtr; myModifiers: Integer);°dONLNdˆ<N+VAR°dONLNd¸N*~+myState:°dONLNdñ*Δ)HInteger;°dONLNd*Ä)~{activation state}°dONLNd,,N8ä(5N
  8028. myControl:°dONLNd:,ñ8Í)HControlHandle;°dONLNdI:*FH(C*BEGIN°dONLNdPH<T2+)myState := BAnd(myModifiers, activeFlag);°dONLNd|d<p¸* IF IsDialogWindow(myWindow) THEN°dONLNdürN~l+BEGIN°dONLNd®Ä`åz+/myControl := WindowPeek(myWindow)^.controlList;°dONLNd€é`öˆ*WHILE myControl <> NIL DO°dONLNd˘úr®ê+BEGIN°dONLNd™Ñ∂§+0HiliteControl(myControl, myState + 255 mod 256);ˇA™@ˇ ˇˇˇˇ@
  8029. ˇ·ˇ‚7^
  8030. 4H\, Palatino&e.3+ä"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@äW–í)indows4⁄ä˙(‡ä
  8031. Handling W¿)/ indow Events
  8032. (‡127
  8033. ˇˇˇˇˇˇˇˇ4 4>lòÄ0 @>oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8034. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8035.  
  8036.  
  8037.  
  8038.  
  8039.  
  8040. ˆ                        ˜¯˘˙˚¸˝˛ˇ @>o @>o$——————————————————————————————òÄ
  8041.  6>@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8042. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8043.  
  8044.  
  8045.  
  8046.  
  8047.  
  8048. ˆ                        ˜¯˘˙˚¸˝˛ˇ 6>@ 6>@˜˜˜˜˜˜˜˜˜˜˜˜˝¸ˇ˛˙ˇ
  8049. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜
  8050. 4C4fl?òÄ
  8051. C6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8052. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8053.  
  8054.  
  8055.  
  8056.  
  8057.  
  8058. ˆ                        ˜¯˘˙˚¸˝˛ˇC6fl@C6fl@$˚˝ˇ˛˛ˇ˝˚ˇˇˇ˘ˇˇ˚ˇˇˇ˛˛ˇ˝˚˝ˇ˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝˛ˇ˛
  8059. ˛ˇ˛ˇˇ
  8060. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  8061. ˛ˇ˛ˇˇ
  8062. ˛ˇ˛ˇˇ˝˛ˇ˛˜˜¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜    ˛ˇˇ˛
  8063. ˛ˇˇˇˇ
  8064. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  8065. Courier.°dONLNd\¢hÄ(e¢%myControl := myControl^^.nextControl;°dONLNd*jêv®(sêEND;°dONLNd1xlÑÑ(ÅlEND;°dONLNd6ÜHí`(èHEND;°dONLNd;ûä™û+BThe °dONLNd?ûû™⁄)
  8066. DoActivate°dONLNdIû⁄™Ê)< prR`°dONLNdLûÊ™) ocedur$¿°dONLNdRû™´)%e is passed a window pointer and the $¿°dONLNdwû´™·)®    modifiers$¿°dONLNdÄû·™Í)6 fi$¿°dONLNdÉûÍ™)    eld fr˜ °dONLNdâû™)om ˇˇÆX°dONLNdå´ä∑∫(¥ä the event rØ°dONLNdó´∫∑Ã)0ecorÅp°dONLNdõ´Ã∑‰)d corr(°dONLNd°´Â∑ä)%esponding to the activate event. The ˇˇ 8°dONLNdΔ´ä∑¿)•    modifiersˇˇÆX8°dONLNdœ´¿∑»)6 fiΔê°dONLNd“´»∑)eld contains a bit °dONLNdÂ∏䃆(¡ä(defi°dONLNdÍ∏†ƒ—) ned by the °dONLNdı∏—ƒ)1
  8067. activeFlag°dONLNdˇ∏ƒŒ)<* constant) that indicates whether the even°dONLNd)∏ŒƒÚ)¡t specifi°dONLNd2∏Úƒ˝)$es .°dONLNd5≈ä—∂(Œäwindow a˘°dONLNd=≈∂—À),ctiva:@°dONLNdB≈×Â)tion o°`°dONLNdH≈—)
  8068. r deactiva:†°dONLNdR≈—$),tion..°dONLNdX◊ä„ò(‡äNo°dONLNdZ◊ò„¬)
  8069. tice that °dONLNdd◊¬„˛)*
  8070. DoActivate°dONLNdn◊˛„F)< does nothing to °dONLNd◊F„N)HVd@°dONLNdÄ◊M„ò)enn Diagrammer!†°dONLNdé◊ô„¢)L’s !†°dONLNdë◊¢„˚)    document windows, .°dONLNd£‰ä<(Ìä&because those windows contain no contrM¿°dONLNd…‰=)≥3ols, text, or other items whose visual state might °dONLNd¸Òä˝}(˙ä4depend on the activation state. For document windowsh°dONLNd0Ò~˝¡)Ù belonging to V¿°dONLNd?Ò¡˝ )Cenn Diagrammerœ`°dONLNdMÒ ˝)J, °dONLNdO˛ä
  8071. §(äthe WP¿°dONLNdT˛§
  8072. ’)Cindow Manager handles all the necessary activation and deactivationÈ@°dONLNdó˛’
  8073. ◊(’.
  8074. H&4H&    °dONLNdôä"ù(äNote
  8075. ˇ·ˇ‚7^
  8076. °dONLNdû$ä0z*4If your application’s document windows contain contrM†°dONLNd“${0º)Òols (such as scrÒ`°dONLNd‚$º0…)Aoll °dONLNdÊ0ä<~(9ä7bars), your application does need to activate them apprX`°dONLNd0~<•)Ù    opriately¿°dONLNd&0•<ª)'. For °dONLNd,<äHú(EämoréÄ°dONLNd/<úH@)%e information, see the chapter “Contrh¿°dONLNdT<@HÖ)§ol Manager” in í`°dONLNdc<ÖHü)EInside °dONLNdjHäTÌ(QäMacintosh: Macintosh T·°dONLNdÄHÏT0)boolbox Essentials¶°dONLNdëH1T3)E.,Zapf Dingbats&°dONLNdõK9S>)u
  8077. °dONLNdùYäeí(bäH—`°dONLNdûYíe≤)owever †°dONLNd§Y≥e“)!, the Pr8†°dONLNd¨Y“e‚)efer‰¿°dONLNd∞Y‚eÉ)#ences dialog box supported by the Vˆ@°dONLNd”YÇe)†enn Diagrammer application .°dONLNdÓfärŸ(oädoes contain contrR`°dONLNdfŸr)O ols, so the R`°dONLNd frD)/
  8078. DoActivateR`°dONLNdfDrP)< pr$¿°dONLNdfPrm) ocedur˜ °dONLNdflr¸)!e needs to inactivate those contr…Ä°dONLNd@f¸r )êols .°dONLNdDsäJ(|ä)when the window is deactivated and then rn`°dONLNdmsJÈ)¿"eactivate them when the window is .°dONLNdèÄäå–(âäactivated. The °dONLNdûÄ–å )F
  8079. DoActivate°dONLNd®Ä å)< prR`°dONLNd´Äå5) ocedur$¿°dONLNd±Ä5å`)
  8080. e checks t$¿°dONLNdªÄ`å±)+he window’s contr˜ °dONLNdÃÄ∞å
  8081. )Pol list and calls the °dONLNd‚çäô£(ñäContrR`°dONLNdÁç£ô‚)ol Manager pr$¿°dONLNdÙç‚ôˇ)?ocedur˜ °dONLNd˙ç˛ô)e ˜ °dONLNd¸çôS)HiliteControl˜ °dONLNd    çSô)N( to perform the necessary activation or ˇˇΩ`°dONLNd1öä¶Z(£ä-deactivation. (The head of the window’s contr¬†°dONLNd^öZ¶ë)–ol list is storÕ °dONLNdmöë¶∫)7
  8082. ed in the ˇˇ8 @°dONLNdwöª¶˝)* controlListˇˇΩ`@°dONLNdÇö˝¶)B fi¬†°dONLNdÖö¶)eld .°dONLNdâßä≥—(∞äof the window rd¿°dONLNdòß—≥„)GecorŸ °dONLNdúß„≥Ò)d.) H¿°dONLNd†ßÚ≥
  8083. )FigurÄ°dONLNd•ß
  8084. ≥)e 6-2π°dONLNd™ß≥Y) shows the Pr¸‡°dONLNd∑ßY≥i);efer©°dONLNdªßj≥
  8085. )'ences dialog box in its inactive state.
  8086. ’HÊ4÷HÊ"÷H]
  8087. ˇ·ˇ‚7^    °dONLNd„Àä÷¥(”ä
  8088. Figure 6-2°dONLNdÓÀÃ÷f)B&An inactive window containing controls
  8089. ÂÖmòÄ$…HH´c0ˇˇˇˇˇˇ…ËãkCfiˇ¿Äfl`Äfl`Äfl`Äfl`ĸò˛¸¿Ù`ĸò˛ĸ` Ù` Ä¸òÒÒò˘≥«¸fœ<lÒ··¿˚` Ä¸˛ôòôôƒffgåfqôôì3 ˚` Ä¸˛ôòò˘ôÉÊfΔåfaôôÉ3Ä˚` Ä¸ô˘ôò˛ôÜffå~a˘ôÉÒ¿˚` Ä¸ôÅôò˛ôÜff `aÅôɇ˚` Ä¸ëâôò˛ôÜffåbaâôì`˚` Ä¸‡Òôò¯˘ÉÊf <`Òò··¿˚`
  8090. ÄÙÌ` ÄıÌ`
  8091. ÄÙÌ`Äfl`fiˇ‡Äfl`Äfl`Äfl`į¿c˝Äı`į˛`˝ ¿ı`į¯¯Û>8 «è<x€‡¯`į ÃÃc332d »ΔÄ0¯`įåÃÃc338páΔÃ√0¯`į ÃÃc3?8 Δ¸√0¯`į ÃÃc30 Δ¿√0¯`į ÃÃc31&L Δƒ√0¯`įÃï338 √ x√0¯`
  8092. Äı¿Ï`
  8093. Äı¿Ï`Äfl`Äfl`Äfl`Äfl`ĸˇ˛¸ˇ‡˝ˇ˛¸ˇ‡˛`ĸ™™¸D`˝DF¸Ó‡˛`$Ä˝xUV˛Äà†˛x˛Ī†˛`%IJÜ™™˛ ` Ü˛`Ó‡˛`%IJUV˛  " ˛ ª†˛`%IJy™™˛  D`DF˛ Ó‡˛`%IJ¸ÅUV˛ @à†Å˛@ª†˛`%IJ¸Å™™˛ @ Å˛@Ó‡˛`%IJ¸ÅUV˛ @" Å˛@ª†˛`%IJ¸Å™™˛ @D`ÅDF˛@Ó‡˛`%IJyUV˛  à†˛ ª†˛`%IJ™™˛   ˛ Ó‡˛`%IJÜUV˛ `" Ü˛`ª†˛`$Ä˝x™™˛ÄD`˛xDF˛ÄÓ‡˛`ĸUV¸à†˝¸ª†˛`ĸˇ˛¸ˇ‡˝ˇ˛¸ˇ‡˛`Äfl`Äfl`Äfl`Äfl`Äfl`Äfl`Äfl`į0˝˜`įÄ0˝2˜`įÉ3xÒ·‡0f«√Δ˜`į    É321ôôì08¸f˜`į    „381ôôÉ0¸f˜`į    Å„1˘ôÉ¸f˜`į    É31Åôɸf˜`į    É3&1âôì&¸f˜`įÛ3Òò·‡>fg√Δ˜`
  8094. ÄÓÛ`
  8095. ÄÓFÛ`
  8096. ÄÓ<Û`Äfl`Äfl`Äfl`Äfl`Äfl`Ä˝x˚Ä˚x˚Ä˚`IJÜ˚`¸Ü˚`˚`#IJ`˛ H˛˝ `˝`$IJy ¿˛ P˛IJ `˝`$IJ¸ÄIJ@‡˛Ä?¿˛@`˝`#IJ¸Ä˝@¯˛Ä?¿˛@¸˝`$IJ¸ÄIJ@‡˛Ä?¿˛@¸˝`$IJ¸Ä ¿˛@P˛Ä?¿˛@`˝`$IJy`˛ H˛IJ `˝`IJ˚ ¸˝ `˝`IJÜ˚`¸Ü˚`˚`Ä˝x˚Ä˚x˚Ä˚`Äfl`Äfl`Äfl`Äfl`Äfl`Äfl`Äfl`Äfl`Äfl`IJ·`
  8097. Ä
  8098. ÄÄIJIJ ¯`Ä@@@˛˜`"ÄÇäÇÇä®àÄ †ä
  8099. (
  8100. ÇàäÇÇä"Ç¢Ä˚`Ä@˚D@A˛˛DA˛D@˚`Ä
  8101. Ç˚àƲàààÇÇ"˛"˙`Ä˙D@QQEEEADDA˙`Ä˙àÄ(Äà˛
  8102. àÇ¢"" Ä˚`Ä˙D@˛DD˛D@˚`"ÄÇàÇÇààÇÄ †ä
  8103. ÇàÇÇÄÇ""¢Ä˚`Ģ@Ú@˙`IJ˙ÄÚ ˙`įÚ@˙`Äfl`Äfl`Äfl`Äfl`Äfl`IJ·`ÄÄ˝àà˛Ç  ı`Ä
  8104. @˛˛@Ù`!Äàä
  8105. *†¢à †àà
  8106.  
  8107. Ç"(†
  8108.  †¢"ä®˙`!Ä"DDADD@DD˙`!Ĭ
  8109. àÇ"" †àÄ®àà
  8110. àÇ"  " ¢"àà˙`ĬDD˝
  8111. AD@˝DD˙` Ä"àDz" àIJààÇ" ˝"àà˙`ÄDD˝
  8112. ADD@˝DD˙`!Ä
  8113. ÇÇ
  8114. " †à ®à®
  8115. äÇ*( 
  8116.  †¢àà˙`Ĉ˚˜`IJˆ"¸ ˜`ÄÙP¸@˜`Äfl`Äfl`Äfl`Äfl`Äfl`IJ·`IJ
  8117.    ˘("†˝`Ä
  8118. ˛@@¯@¸`%#Ä
  8119.  
  8120. à(("Çä Ä((*ÇÇÄ(†"
  8121. "
  8122. Çà™†Ä`!Ä"˛¸D¸D@D@D`%Ĭ˛à
  8123.  ˛"¢""*˛"à "
  8124. ""àà""Ä`$Ĭ˛˛DA˛DEAD@˝D@`"Ä"˝à ˛" Ç"˝"Äà ˝"àà" †`"IJ¸D˝D@D@˛D@`%#Ä
  8125. "("¢Ç Ä"*""ÇÄ( (
  8126. "
  8127. Çà" Ä`Ä·`IJ·`Äfl`Äfl`Äfl`Äfl`Äfl`Äfl`IJ·`#Äà˝ÄÄIJIJÄ ˝`Ä@˚@¸@˛@˝`%Äà(àà ¢ÇÇà†Ä䲆
  8128. ¢Ä¢Ä(à® †Çä˛`$ÄDDDD@DDA˝AD@˛D˛`$Ä˛à    àà†Ç""®Ä˝à
  8129. ÇÇ  àà""˛`$ÄDDTEPEDA˝
  8130. D@DDQ˛`#ÄààÄà(Ç"àÄ˝àÇÇ àà"˛˛`$ÄD@DDDDA˝D@˛D˛`%Äà†(àà "Ç à®Äàà††ÄÄ"Ä((® †Ää˛`ÄÚ¯˚`IJÒĢ ˚`
  8131. ÄÊ@˚`Äfl`Äfl`Äfl`Äfl`Äfl`Äfl`Äfl`ĸÏˇ˚`ĸ Ï ˚`ĸÏ˚`ĸÏ˚`ĸÏ˚`ĸ¯ ˛(˚˚`ĸ¯@˛@˚˚` Ä¸ ("(àà¢(®†*"(†¢"äÇ
  8132.  
  8133. ˚` Ä¸˛DDDDD@DADD˚` Ä¸*""à àà " à""ààà˚` Ä¸DDTDTD@TAQDD˚` Ä¸"" à Äà " Ä"à˚` Ä¸DD@DDDD@DADD˚` Ä¸*((Çà (à * ( ¢àÇ
  8134.  
  8135. ˚`ĸˆ¯˚`ĸˆ ¯˚`ĸÏ˚`ĸÏ˚`ĸ Ï ˚`ĸÏˇ˚`Äfl`Äfl`Äfl`Äfl`Äfl`Äfl`Äfl`fiˇ‡flˇ‡ˇ0@ˇ ˇˇˇˇ@
  8136. ˇ·ˇ‚7^
  8137. 4*\¯, Palatino&e.3+l"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@lW–í)indows4⁄*˙¯
  8138. (‡*128    )B    Closing W ))indows4^*¿¯
  8139. ^*x¯4^*x¯
  8140. à*ê¯4â*ꯠä*ä˛
  8141. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdu*àu(É*    Closing Wè/°dONLNd    uuà™)KindowsˇˇˇˇˇˇU˛(É6
  8142. °dONLNdôl•&(¢l*The user closes a window either by clickinY¿°dONLNd:ô'•2)ªg t´@°dONLNd=ô2•“) #he window’s close box (in the upper√°dONLNd`ô“•Ê)†-left °dONLNdf¶l≤v(Øl9corner of the window) or by choosing the Close command fr˜†°dONLNdü¶v≤Œ(Øvom the File menu. Ts‡°dONLNd≤¶Œ≤’)Xo °dONLNd¥≥lø-(ºl*determine which window to close, you’ll pr~@°dONLNdfi≥-øI)¡oceed ì°dONLNd‰≥IøT)in ÿ°dONLNdÁ≥TøÑ) slightly difü@°dONLNdÛ≥Ñøê)0ferÅ¿°dONLNdˆ≥êø†) ent fl °dONLNd˙≥†ø»)    ways for æ@°dONLNd≥…øı))
  8143. these two °dONLNd¿lÃfi(…lcases. When the user click>`°dONLNd'¿flÃÍ)ss a˚`°dONLNd*¿ÍÃÚ) ; window’s close box, you can get a window pointer for that .°dONLNdeÕlŸ”(÷lwindow by calling the ,
  8144. Courier°dONLNd{Õ”Ÿ)g
  8145. FindWindow°dONLNdÖÕŸF)< function in rR`°dONLNdìÕFŸfi)7!esponse to the mouse-down event. .°dONLNd¥⁄lÊ®(„l When the use◊Ä°dONLNd¿⁄®Êÿ)< r chooses a:`°dONLNdÀ⁄ŸÊO)1 menu command, however8°dONLNd·⁄OÊÓ)v&, you can’t do that; instead, you can .°dONLNdÁlÛí(l    call the °dONLNdÁíÛ‘)& FrontWindow°dONLNdÁ‘Û )B function to rR`°dONLNd)Á Û~)7etrieve a pointer to the fr$¿°dONLNdDÁ~ÛÁ)sontmost window on the .°dONLNdZÙlx(˝lscrÚ@°dONLNd]Ùxá) eenV‡°dONLNd`Ùàä).
  8146. *¯4*¯    °dONLNdbl(lNote
  8147. ˇ·ˇ‚7^
  8148. °dONLNdgl&r*Y@Ä°dONLNdhr&M)1ou’ll also want to close any windows that might b:‡°dONLNdôN&ô)‹e on the desktop °dONLNd™&l2t(/lw◊°dONLNd´&t2)%hen the user quits your application. 0¿°dONLNd–&2)†YÒ@°dONLNd—&2l)ou can do that by rÚ†°dONLNd‰&l2é)SepeatedØ¿°dONLNdÎ&è2ó)#ly'@°dONLNdÌ&ò2ö)     ˇˇ„@.°dONLNdÓ2l>ç(;lcalling ˇˇ©¿c@°dONLNdˆ2é>–)" FrontWindowˇˇ„@c@°dONLNd2–>˜)B  until it rfl`°dONLNd 2˜>)'eturns ˇˇ©¿¬†°dONLNd2>&)NILˇˇ„@¬†°dONLNd2&><). See â °dONLNd2=>í)Listing 9-4 on page 2‡°dONLNd02ì>¢)V1752‡°dONLNd32¢>•).,Zapf Dingbatsˇˇ‡.2‡°dONLNd=5™=Ø)u
  8149. °dONLNd?ClO∏(LlWhen the user pr@°dONLNdOCπO÷)MBesses the mouse button while the cursor is in the close box, your .°dONLNdëPl\Î(Ylapplication should call the °dONLNd≠PÎ\-) TrackGoAway°dONLNd∏P-\r)B function to trac°dONLNd…Pr\Ç)Ek m°dONLNdÃPÇ\ó)ouse °dONLNd—Pó\«)    movement °dONLNd⁄P«\Ò)0
  8150. until the .°dONLNd‰]liÖ(fluser r≈`°dONLNdÍ]Öi)&eleases the button, as illustrated in ç °dONLNd] iS)õ Listing 6-13-`°dONLNd]TiV)4.
  8151. å*î¯4ç*î¯"ç*_
  8152. ˇ·ˇ‚7^    °dONLNdÇlçù(äl Listing 6-13°dONLNd+Ç∞ç-)D Handling clicks in the close box
  8153. .°dONLNdLúl®⁄(•l=PROCEDURE DoGoAwayBox (myWindow: WindowPtr; mouseloc: Point);°dONLNdä™l∂ä*BEGIN°dONLNdë∏~ƒh+'IF TrackGoAway(myWindow, mouseloc) THEN°dONLNdªΔê“ +DoCloseWindow(myWindow);°dONLNd‘‘l‡Ñ(›lEND;°dONLNdŸÏl¯v*If °dONLNd‹Ïv¯∏)
  8154. TrackGoAway°dONLNdÁÏ∏¯æ)B rR`°dONLNdÈÏ毀)eturns R`°dONLNdÏ€¯˘)FALSER`°dONLNdıÏ˘¯() , the user r$¿°dONLNdÏ(¯})/eleased the button $¿°dONLNdÏ}¯›)Uwhile the cursor was °dONLNd)˘l»(loutside the close box°dONLNd>˘»À)\,°dONLNd?˘Àé), and your application should do nothing. If °dONLNdk˘é–)√ TrackGoAway°dONLNdv˘–÷)B rR`°dONLNdx˘÷Û)eturns °dONLNdlÑ(lTRUE°dONLNdÉÑE)+, your application should invoke its own prR`°dONLNdÆEb)¡ocedur$¿°dONLNd¥b≈)e for closing a window9¿°dONLNd ƒ«)b..°dONLNdÃl$ü(!l Listing 6-14 @°dONLNdÿ†$#)4 illustrates an application-defiÈ¿°dONLNd¯#$∫)É!ned function that closes a window§†°dONLNd∫$Ï)ó . Notice thaa`°dONLNd%Ì$Ú)3t °dONLNd'%l1Ñ(.lthe efÕ@°dONLNd-%Ñ1)"fect of this function varies accor—°dONLNdO%1:)å    ding to wDÄ°dONLNdX%;1Ï)+(hich kind of window it’s being asked to .°dONLNdÄ2l>±(;lclose. If the use°dONLNdë2±>ÿ)E    r wants t°dONLNdö2ÿ>C)'o close a dialog windowï°dONLNd±2B>G)j, ï°dONLNd≥2G>ï)DoCloseWindowï°dONLNd¿2ï>Á)N simply hides the .°dONLNd“?lK(Hl)window; this strategy leaves the data strΔ¿°dONLNd˚?K5)≤ucturL†°dONLNd?6K‘)%es associated with the dialog box in °dONLNd%LlXë(UlmemoryÕ °dONLNd+LêXÚ)$, in expectation that thS°dONLNdCLÛX)ce user mÒ°dONLNdKLX&)%igh9‡°dONLNdNL'Xã)t open the dialog box a °dONLNdeLåXÃ)egain. If the useÈÄ°dONLNduLÃXÔ)@r wants .°dONLNd}Ylep(blt°dONLNd~Ype˛)o close a desk accessory windowï°dONLNdùY˝e)ç, ï°dONLNdüYeP)DoCloseWindowï°dONLNd¨YPe√)N calls the Desk Manager rg`°dONLNd≈Y√e·)soutine °dONLNdÃflr¥(ol CloseDeskAcc°dONLNdÿf¥r1)H to close that desk accessoryd@°dONLNdıf0r3)|.ˇ.$@ˇ ˇˇˇˇ@
  8155. ˇ·ˇ‚7^
  8156. 4H\, Palatino&e.3+ä"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@äW–í)indows4⁄ä˙(‡ä    Closing W ))indows
  8157. (‡129
  8158. ˇˇˇˇˇˇˇˇ4 4>lòÄ0 @>oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8159. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8160.  
  8161.  
  8162.  
  8163.  
  8164.  
  8165. ˆ                        ˜¯˘˙˚¸˝˛ˇ @>o @>o$——————————————————————————————òÄ
  8166.  6>@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8167. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8168.  
  8169.  
  8170.  
  8171.  
  8172.  
  8173. ˆ                        ˜¯˘˙˚¸˝˛ˇ 6>@ 6>@˜˜˜˜˜˜˜˜˜˜˜˜˝¸ˇ˛˙ˇ
  8174. ˛ˇ˛ˇˇ˛¸ˇˇ˝˛ˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜
  8175. 4C4fl?òÄ
  8176. C6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8177. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8178.  
  8179.  
  8180.  
  8181.  
  8182.  
  8183. ˆ                        ˜¯˘˙˚¸˝˛ˇC6fl@C6fl@$˚˝ˇ˛˛ˇ˝˚ˇˇˇ˘ˇˇ˚ˇˇˇ˛˛ˇ˝˚˝ˇ˜˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝˛ˇ˛
  8184. ˛ˇ˛ˇˇ
  8185. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  8186. ˛ˇ˛ˇˇ
  8187. ˛ˇ˛ˇˇ˝˛ˇ˛˜˜¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˛ˇˇ¸¸˛ˇˇ˜    ˛ˇˇ˛
  8188. ˛ˇˇˇˇ
  8189. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  8190. gHn4gHn"hH_
  8191. ˇ·ˇ‚7^    °dONLNd\ägª(dä Listing 6-14°dONLNd\Œg)DClosing a window,
  8192. Courier
  8193. .°dONLNdvHÇ\(H.PROCEDURE DoCloseWindow (myWindow: WindowPtr);°dONLNdMÑHêf*BEGIN°dONLNdTíZû‰+IF myWindow <> NIL THEN°dONLNdn†l¨,+ IF IsDialogWindow(myWindow) THEN°dONLNdõ†V¨Ï)Í{this is a dialog window}°dONLNd∏Æ~∫ˆ(∑~HideWindow(myWindow)°dONLNdœºl»>(≈l#ELSE IF IsDAccWindow(myWindow) THEN°dONLNdˇºV»‘)Í{this is a DA window}°dONLNd ~÷í(”~.CloseDeskAcc(WindowPeek(myWindow)^.windowKind)°dONLNdIÿl‰8(·l"ELSE IF IsAppWindow(myWindow) THEN°dONLNdxÿV‰¯)Í{this is a document window}°dONLNdóÊ~Ú (Ô~DoCloseDocWindow(myWindow);°dONLNd≥ÙH`(˝HEND;°dONLNd∏ äc+B/If the window to be closed is a document windowï°dONLNdÁ bg)ÿ, ï°dONLNdÈ gµ)DoCloseWindowï°dONLNdˆ µ·)N  calls the ˇˇ_x°dONLNdä%÷("äapplication-defi°dONLNd÷%Ò)Lned pr±ÿ°dONLNdÒ%)ocedurÑ8°dONLNd%)e ˇ˛h„∞°dONLNd%t)DoCloseDocWindowˇˇ_x„∞°dONLNd/t%á)` defiC(°dONLNd4à%£)ned in °dONLNd;§%ÿ) Listing 6-15aê°dONLNdGÿ%)4 to deallocate .°dONLNdV&ä2Õ(/äthe document r‹`°dONLNdd&Õ2fl)CecorP¿°dONLNdh&‡28)d, close the window,†°dONLNd{&82—)X", and then deallocate the window rã¿°dONLNdù&—2„)ôecor °dONLNd°&‰2Ô)d. 
  8194. UH]4VH]"VH_
  8195. ˇ·ˇ‚7^    °dONLNd•KäVª(Sä Listing 6-15°dONLNd≤KŒV¸)D Closing a V†°dONLNdΩK¸V).en@°dONLNdøKV)
  8196. n diÜP°dONLNd√KVN) agram window
  8197. .°dONLNd–eHqn(nH1PROCEDURE DoCloseDocWindow (myWindow: WindowPtr);°dONLNdsZl+VAR°dONLNd    Ålç¢+    myHandle:°dONLNdÅ¥ç¸)H MyDocRecHnd;°dONLNd#èHõf(òHBEGIN°dONLNd*ùZ©fi+IF myWindow = NIL THEN°dONLNdC´l∑+exit(DoCloseDocWindow)°dONLNde´D∑º)ÿ{ignore NIL windows}°dONLNd{πZ≈r(¬ZELSE°dONLNdÇ«l”ä+BEGIN°dONLNdã’~·í+.myHandle := MyDocRecHnd(GetWRefCon(myWindow));°dONLNdΩ„~Ô>* DisposeHandle(Handle(myHandle));°dONLNd·Ò~˝¸*CloseWindow(myWindow)°dONLNd˙Ò¸˝)~;°dONLNdÒD˝∞)H{close the window}°dONLNdˇ~ (~DisposePtr(Ptr(myWindow));°dONLNd=ˇD ⁄)Δ{and release the storage}°dONLNdYlÑ(lEND;°dONLNd^H'`($HEND;°dONLNdc3ä?û+BThe °dONLNdg3û?§)D°dONLNdh3§?˛)oCloseDocWindow°dONLNdw3˛?)Z °dONLNdx3?
  8198. )prR`°dONLNdz3
  8199. ?')
  8200. ocedur$¿°dONLNdÄ3'?.)e $¿°dONLNdÇ3.?2)r˜ °dONLNdÉ31?–)#etrieves a handle to the document r…Ä°dONLNd¶3–?‚)üecorõ‡°dONLNd™3‚?Ú)d frn@°dONLNdÆ3Ú?)om the °dONLNdµ@äL¥(Iäwindow rR`°dONLNdΩ@¥LΔ)*ecor$¿°dONLNd¡@ΔL )d. Then it calls $¿°dONLNd“@ LZ)FDisposeHandle$¿°dONLNdfl@ZLo)N to fr˜ °dONLNdÂ@nL˙)ee the memory occupied by the °dONLNdMäY∫(Vä
  8201. document rR`°dONLNdM∫YÃ)0ecor$¿°dONLNdMÃY◊)d. $¿°dONLNdM◊Y) Next $¿°dONLNdMYJ)DoCloseDocWindo$¿°dONLNd(MJYP)Zw$¿°dONLNd)MPYV) c$¿°dONLNd+MVYÚ)!loses the window by calling the Wò °dONLNdLMÒY)õindow °dONLNdRZäfæ(cä
  8202. Manager prR`°dONLNd\Zæf€)4ocedur$¿°dONLNdbZ€f‚)e $¿°dONLNddZ‚f$) CloseWindow$¿°dONLNdoZ$f¨)B and deallocates the window r˜ °dONLNdåZ´fΩ)áecor…Ä°dONLNdêZΩfÙ)d by calling °dONLNdùgäsΔ(pä
  8203. DisposePtr¬†°dONLNdßg≈s»);.ˇt@ˇ ˇˇˇˇ@
  8204. ˇ·ˇ‚7^
  8205. 4*\¯, Palatino&e.3+l"CHAPTER ”)>6,     Helvetica    ˇˇ—ÚˇÆ(@lW–í)indows4⁄*˙¯
  8206. (‡*130    )B    Closing W ))indows4^*¿¯
  8207. ^*k¯4^*k¯°dONLNd]lh(elNote
  8208. ˇ·ˇ‚7^
  8209. °dONLNdilu§* When you cr-`°dONLNdi•uÂ)9eate a window°dONLNdiÂu;)@, if you allow the WG°dONLNd1i;uè)Vindow Manager to .°dONLNdBulÅ(~l allocate memory for the window rR`°dONLNdbuÅ)ôecor$¿°dONLNdfuÅT)d (by passing ,
  8210. Courier$¿°dONLNdtuTÅf)=NILΔ`°dONLNdwueŧ) as the second °dONLNdÜÅlç©(älparameter to °dONLNdìÅ©çÒ)= GetNewWindow°dONLNdüÅÒçj)H), then you should call the °dONLNdªçlô∫(ñlDisposeWindow°dONLNd»ç∫ôΔ)N prR`°dONLNdÀçΔô„) ocedur$¿°dONLNd—ç„ôC)e to close the window9¿°dONLNdÊçBôò)_, instead of calling °dONLNd˚ôl•Æ(¢l CloseWindow°dONLNdôÆ•√)B and °dONLNd ô√•ˇ)
  8211. DisposePtr¬†°dONLNdô˛•);.,Zapf Dingbats.¬†°dONLNdú§ )uˇ@ˇ ˇˇˇˇ@
  8212. ˇ·ˇ‚7^
  8213. 4⁄∫˙,     Helvetica    .(‡∫Contents, Palatino
  8214. (‡131    3, Ã(#∫CHAPTER ßí)h7
  8215. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8216. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8217.  
  8218.  
  8219.  
  8220.  
  8221.  
  8222. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  8223. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8224. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8225.  
  8226.  
  8227.  
  8228.  
  8229.  
  8230. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˘ˇ
  8231. ˛ˇ˛ˇ    ¸ˇˇ¸˝ˇ˙ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜ˇˇˇˇˇˇ(JH
  8232. Figure 7-0*     Listing 7-0*    T)able 7-0
  8233. zH,
  8234. 4zH, H°dONLNd∫*˘+m Contentsˇˇˇˇˇˇ
  8235. ˇ·ˇ‚7^ˇˇ∫Ρ◊(qH7°dONLNd]∫yQ)r Dialog Boxes
  8236. °dONLNd;∫G*”About Dialog Boxes·°dONLNd*;&G5)l133°dONLNd.H∫T=(Q∫Using Modeless Dialog Boxesú`°dONLNdKHQT`)ó137°dONLNdOUƒaœ(^ƒCr\°dONLNdQUœaQ) eating a Modeless Dialog Box˘Ä°dONLNdoUeat)ñ137°dONLNdsbƒnı(kƒ Setting Up ¬°dONLNd~bın?)1Application-Defi'†°dONLNdéb@nk)K    ned ItemsŸ‡°dONLNdôbné)?139°dONLNdùoƒ{(xƒHandling User Q‡°dONLNd´o{ú)D Actions in a Modeless Dialog Box∫`°dONLNdÕo∞{ø)®141°dONLNd—|∫à¡(Ö∫UG@°dONLNd“|¬à0)sing Modal Dialog Boxesè °dONLNdÎ|DàS)Ç144°dONLNdÔâƒïI(íƒDisplaying a Modal Dialog Bo7‡°dONLNd âJïO)Üx`Ä°dONLNdâcïr)145°dONLNdñƒ¢÷(üƒDefi†°dONLNdñ◊¢u)#ning a Modal Dialog Filter Function◊`°dONLNd;ñâ¢ò)≤146ˇJ@ˇ ˇˇˇˇ@
  8237. ˇ·ˇ‚7^
  8238. 4^*¿¯ˇ?f@ˇ ˇˇˇˇ@
  8239. ˇ·ˇ‚7^, Palatino&e.3+ä"CHAPTER ”)>7
  8240. 4⁄ä˙,     Helvetica    (‡äAbout Dialog Boxes
  8241. (‡133
  8242. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8243. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8244.  
  8245.  
  8246.  
  8247.  
  8248.  
  8249. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  8250. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8251. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8252.  
  8253.  
  8254.  
  8255.  
  8256.  
  8257. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˘ˇ
  8258. ˛ˇ˛ˇ    ¸ˇˇ¸˝ˇ˙ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  8259. 4Å4w?òÄ
  8260. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8261. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8262.  
  8263.  
  8264.  
  8265.  
  8266.  
  8267. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˙ˇ    ˇ¸ˇ    ˇ¸ˇ
  8268. ˛ˇ˛ˇˇ˝˛ˇ˛˜    ¸ˇˇ˜˛ˇˇ˝
  8269. ˇˇˇ˛
  8270. ˇˇˇ˛˛˛ˇ˝ˇ˙˙ˇ˜˛˛ˇ˝
  8271. ˇ˛ˇ˛
  8272. ˇ˛ˇ˛˛˛ˇ˝˜ˇ˛ˇ˝
  8273. ˇˇ˛ˇ˛
  8274. ˇˇ˛ˇ˛˚ˇ˛˜˜˜˜˙ˇ     ˇˇˇ     ˇˇˇ     ˇˇˇ
  8275. ˛ˇˇˇˇˇ˜˛˛ˇ˝
  8276. ˇ˛ˇ˛
  8277. ˇ˛ˇ˛˛˛ˇ˝˜
  8278. ˇ˛ˇ˛˛ˇˇ˝˝ˇ¸˛ˇˇ˝
  8279. ˇ˛ˇ˛˛˛ˇ˝
  8280. ˇˇˇ˛
  8281. ˇˇˇ˛    ˇˇˇ˝˜    ˇˇ˝
  8282. ˇˇˇ˛
  8283. ˇˇˇ˛    ˛ˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜    ˇˇ—ÚˇÆ°dONLNdˇˇ(@ä Dialog Boxesˇˇˇˇˇˇ≠>(@7
  8284. °dONLNd\äh‚(eäLThis chapter describes how your application can use the Dialog Manager to crg`°dONLNdL\‚h    (e‚    eate and °dONLNdUiäuÏ(rämanage dialog boxes. n°dONLNdjiÏuÚ)bY.Ä°dONLNdkiÚu)Cou can use dialog boxes to alert the user to unusual situations or °dONLNdÆväÇ(äto solicit information fr™`°dONLNd«vÇ$)f om the user@°dONLNd“v$ÇC)4. The Vl`°dONLNdŸvBÇÏ)$enn Diagrammer application uses one °dONLNd˝ÉäèÒ(åämodeless dialog box anC °dONLNdÉÚè)hd two mA¿°dONLNdÉè[)%odal dialog box“@°dONLNd)É[èd)Desÿ‡°dONLNd+Édèf)    .°dONLNd-ïä°(ûäThis chapter shows how to,Zapf Dingbats°dONLNdG´ä≤è*n
  8285. °dONLNdI®ñ¥û) crµ@°dONLNdK®û¥∂)eate rœ‡°dONLNdQ®∂¥Œ)esour °dONLNdV®œ¥ )9ces describing dialog boxes and the items in dialog boxes°dONLNdêΩäƒè(√än
  8286. °dONLNdí∫ñΔÃ) open those rÁÄ°dONLNdû∫ÃΔ‰)6esour/¿°dONLNd£∫ÂΔY)ces to display a dialog box°dONLNdøœä÷è(’än
  8287. °dONLNd¡Ãñÿ¶) defir °dONLNd≈Ãßÿ)ne application-specifi°dONLNd€ÃÿC)_c dialog items°dONLNdÍ·äËè(Áän
  8288. °dONLNdÏfiñÍ…) Bhandle events associated with both modeless and modal dialog boxes°dONLNd/Ôä˚¡(¯äCMost Macintosh applications support a number of dialog boxes and pr¡‡°dONLNdrÔ¡˚Ó(¯¡    ovide mor9‡°dONLNd{ÔÔ˚ˆ).e °dONLNd}¸äË(äQcomplete event handling in those dialog boxes than is illustrated in this chapterz`°dONLNdŒ¸Ë˛(Ë. For °dONLNd‘    äT(ä,example, the dialog boxes supported by the Vfi°dONLNd    SÙ)…"enn Diagrammer application do not °dONLNd"ä"Δ(äcontain text fi∑°dONLNd1Δ" )<Kelds. For a complete description of the capabilities of the Dialog Manager °dONLNd|#ä//(,ä%and for code samples illustrating morB`°dONLNd°#0/Ù)¶,e advanced dialog handling, see the chapter °dONLNdÕ0ä<È(9ä“Dialog Manager” in fi`°dONLNd·0È<g)_Inside Macintosh: Macintosh T0‡°dONLNd˛0g<´)~oolbox Essentialsı‡°dONLNd0´<≠)D.
  8289. CH^4DH^
  8290. nHv4oHv pHp
  8291. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd[Hn◊(iHAbout Dialog BoxesˇˇˇˇˇˇU˛(i7
  8292. °dONLNd$äãë(àäA∫†°dONLNd%ëãì) :†°dONLNd&îãƒ)
  8293. dialog boxG@°dONLNd0ƒãv)0( is a window that’s used for some speciaW°dONLNdXvãÄ)≤l, l'¿°dONLNd\Åã)  imited purpose. In the simplest °dONLNd|åäò∑(ïäFcase, you can use a dialog box just to display information to the userL`°dONLNd¬å∑ò(ï∑. The information °dONLNd‘ôä•ø(¢ä might be a ruÄ°dONLNd‡ôø•
  8294. )5eport of some errÄ°dONLNdÒô •)Lor±@°dONLNdÛô•)), a grÖ`°dONLNd˘ô)•f)eeting, or a pr” °dONLNdôf•t)=ogrú¿°dONLNd ôu•Ê)ess bar showing what pery‡°dONLNd#ôÊ•)q centage of °dONLNd.¶ä≤(Øäsome operation has completed. ô†°dONLNdL¶≤.)åFigurl`°dONLNdQ¶.≤B)e 7-1    ‡°dONLNdV¶C≤Ñ) shows a simplÖ†°dONLNdd¶Ñ≤∞)A    e modal d∏†°dONLNdm¶∞≤    ),ialog box of this ilk; °dONLNdÑ≥äøü(ºäthis i!Ä°dONLNdä≥†ø–) s the box V˛°dONLNdï≥œø)/enn DiagrammeÉ`°dONLNd¢≥ø#)Hr d¿°dONLNd•≥$øX) isplays whe_¿°dONLNd∞≥XøÆ)4n the user chooses t¡Ä°dONLNdƒ≥Æøª)Vhe ~ °dONLNd«≥ªøŸ)About  °dONLNdÕ≥⁄ø·)V(`°dONLNdŒ≥‡øÚ)enn °dONLNd“¿äÃ≈(…ä Diagrammer ㆰdONLNd›¿≈ÃÎ);commanÍ¿°dONLNd„¿ÎÃ˙)&d frü`°dONLNdÁ¿˚Ã)om t´@°dONLNdοÃ)he g‡°dONLNdÓ¿ÃU) Apple menu.
  8295. ÓHˇ4ÔHˇ"ÔH]
  8296. ˇ·ˇ‚7^    °dONLNd˙‰äÔ¥(Ïä
  8297. Figure 7-1°dONLNd‰ÃÔŸ)BAn É °dONLNd‰ŸÔ)    About box
  8298. °dONLNdïä°)(ûä&This kind of dialog box is said to be ðdONLNd8ï)°H)ümodal:.`°dONLNd>ïI°ˇ) , it puts the user in the state or “mode” of °dONLNdj¢äÆ\(´ä0being able to work only inside the dialog box. T¿°dONLNdö¢\Æ
  8299. )“(o dismiss the dialog box, the user must °dONLNd¬Øäª<(∏ä*click one or the other of the two buttons.
  8300. ˛Ü}òÄ(Ω5HHK¿ˇˇˇˇˇˇΩ5ã{S€ˇ¯Ä‹ Ä‹ ü‹ˇÃü‹ˇÃò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò˝>Ä„Ãò˝¡∞`„Ãò˛@„Ãò˛†„Ãò˛†„Ãò˛D„Ãò˛Ñ„Ãò˛D„Ãò˛„Ãò˛ ¿˛¯¿ÎÃò˛¢ ¿˛ÃÍÃò˛° «èèÄëáÕû?„˛6ÛÃò˛A ˛Ã¿Ã»ÃŒ#˝38ÛÃò˝·∞‡ ˛Ã¿Ã«ÃÃ˝30ÛÃò˝?_Ä œÃÿ˝Ã˝3?0ÛÃò˝*™Ä à ÿ˝Ã˝300ÛÃò˝5UÄ åLÿ˝Ã˝310ÛÃò˝*™Äåÿ¯««Ã˛30ÛÃò˝U˜¿ÌÃò˝´¯¿ÌÃò˝V¯ÄÌà ò˝¨‚à ò˝‚Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò0˛>0¯0˙0¯Ãò0˛3˜0˙0¯Ã' ò1„„‡31·Ûgè¯ˇáçÅ„1„3cΔ`xé¸Ã%ò˛303233à˝ÃŒ˝3    2ff`1òô3¸Ã%ò˛3031Û3¸ÃÛ˛3    8ff`1òú3¸Ã%ò3Û30˝3 ˛ÃœÃ˝3    ff`1òé?¸Ã$ò330˝3 ˝Ã ˝3    ff`1òá0¸Ã%ò#30˝3 ˝ÃL˛3
  8301. 2&ff`1òì1¸Ã' ò¡„30>1ÒÛ˛Ã«åÛ1„¸„√‡é¸Ãò˜0Ù`ıÃò¯0ı`ıÃò¯‡ı¿ıÃò‹Ãò‹Ãò‹Ãò‹Ã#ò0˛0˚ `˛˝`1ĸÃò0˛˙ `˘`1ĸÃ)"ò1„„‡1·Ûgè¯p<„«èΔ|<f|<yÒ∞˛Ã(ò˛303233àÃû ffcú˝f˛f1ôô¿˛Ã(ò˛3031Û3ÃÇ ffcò˝f˛f1ôôIJÃ(ò3Û30˝3
  8302. ÃÃp fg„ò˛f~ff~1ô˘Ä˛Ã(ò330˝3
  8303. ÃÃ8 ff˛f`ff`1ôÅIJÃ(ò#30˝3
  8304. ÃÃò ff#ò˛fbdfb1ôâIJÃ)ò¡„301ÒÛÃÃp<„¡è˛f<¯f<òÒIJà ò˜0Áà ò¯0Áà ò¯‡ÁÃò‹Ãò‹Ãò‹Ãò‹Ãò˚f` ˛
  8305. ÅÄ```˜Ãò˚f¯ĸ`˜Ã"ò‡ff<>cè¯ pèèÄÒ∞gΔcΔc‡˜àò02¸fLà »ëôôÅô¿ffdff`˜Ã!ò8˝fg à ‡èôôÅôÄffcÊf`˜Ãò0˝fcåà p˛ôÅôĸf`˜Ãò0˝faÃà 8˛ôÅôĸf`˜àò0&˝fdÃà òôôÅôÄffF˛f˜Ã"ò>f<>cåà pôèÄÒÄfgÉÊcʘÃò¸ÂÃò¸FFÂÃò¸<<ÂÃò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò˛0˛xÄ Ä˝`ÛÃòpÃÃå ¿ @˝`Ûàòd0Ãà œèåx 误ÃÒ„`>ıà   òî0Ãà ˝Ã ˝Ãc3Ä32ıà   òÑ0ÃÃ˝Ã ˝Ãc330ıà   òî0||0 ˛Ã¸ ˝ÃcÛ30ıà   òd0 ` ˛Ã¿ ˝Ãc30ıà    ò0¿ ˛Ãƒ L˝Ãc 32`ˆÃ!ò˛0pp¸ œèåxáåï|1„ 3`ˆÃò¯ ˚¿˛ÚÃò¯ ˚¿˛ÚÃò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹ÃòÏ?˚ˇ˘ÃòÏ˙ˇ¸˘ÃòÌ˙ˇ˛˘Ãò̇˚˘Ãò˘˚ˇ¸è˚ˇ«˘Ãò˙˚ ¸∞˚7Ä˙Ãò˙˚¸ ˚Ä˙Ãò˙˚¸@˚ Ä˙Ãò˙˚¸@˚ Ä˙Ãò˙ÄxΔ¸    @Òå Ä˙Ãò˙ÄÃø    @ôò Ä˙Ãò˙„¿Ãÿ¸    @ô∞ Ä˙Ãò˙ì1ÄÃ¸    @ô‡ Ä˙Ãò˙”1ÄǸ    @ô¿ Ä˙Ãò˙Û1ÄÃ¸    @ô‡ Ä˙Ãò˙s1ÄÃÿ¸    @ô∞ Ä˙Ãò˙31ÄÃø    @ôò Ä˙Ãò˙‡¿xΔ¸    @Òå Ä˙Ãò˙˚¸@˚ Ä˙Ãò˙˚¸@˚ Ä˙Ãò˙˚¸@˚ Ä˙Ãò˙˚¸ ˚Ä˙Ãò˙˚ ¸∞˚7Ä˙Ãò˘˚ˇ¸è˚ˇ«˘Ãò̇˚˘ÃòÌ˙ˇ˛˘ÃòÏ˙ˇ¸˘ÃòÏ?˚ˇ˘Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãò‹Ãü‹ˇÃü‹ˇÃÄ‹ Ä‹ €ˇ¸ˇ.@@ˇ ˇˇˇˇ@
  8306. ˇ·ˇ‚7^
  8307. 4*\¯, Palatino&e.3+l"CHAPTER ”)>7,     Helvetica    ˇˇ—ÚˇÆ(@l Dialog Boxes4⁄*˙¯
  8308. (‡*134    )BAbout Dialog Boxes4^*¿¯
  8309. °dONLNd\lh¬(elThe system softwar↰dONLNd\¬h⁄)VAe distinguishes a special category of modal dialog boxes, called K`°dONLNdS\€hÚ(e€alert °dONLNdYiluà(rlboxes. °dONLNd_iâuã) mÄ°dONLNd`iãuë)Y.°dONLNdaiëu˙)ou’ll use alert boxes to r`†°dONLNd{i˙u )i    eport errÿ °dONLNdÑi u∑)&#ors or to give warnings to the user}¿°dONLNdßi∑uº)ó. }¿°dONLNd©iºu‘)FigurPÄ°dONLNdÆi‘uË)e 7-2Ó°dONLNd≥iËuÍ) °dONLNd¥vlÇ√(lshows an alert box. ˆ°dONLNd»v√ÇÕ)W(Vf@°dONLNd vÕÇZ)
  8310. enn Diagrammer displays this aè °dONLNdËvZÇv)çlert boÛ@°dONLNdÔvvÇì)    x if it cs °dONLNd¯vîÇ≥)annot r¿°dONLNdˇv¥Ç÷) ead the °dONLNdÉlèo(ålrE°dONLNdÉpèà)esourç@°dONLNdÉàè )ces it uses to crf¿°dONLNdÉ è)Beate menus; see ø¿°dONLNd.Éèg)GListing 8-1 on page Å¿°dONLNdBÉhèw)W155Å¿°dONLNdEÉwè|).)
  8311. ±*¬¯4≤*¬¯"≤*]
  8312. ˇ·ˇ‚7^    °dONLNdHßl≤ñ(Øl
  8313. Figure 7-2°dONLNdSßÆ≤fi)B An alert box
  8314. °dONLNd`,l8s(5lO[‡°dONLNda,t8È)Vther types of dialog boxes both display information to the user and allow the user to °dONLNd∑9lEÏ(Blenter or change information. ˚@°dONLNd‘9ÏEÚ)ÄYª¿°dONLNd’9ÚE”)6ou might, for instance, use a dialog box of this sort &†°dONLNd 9‘EÏ)‚in an °dONLNdFlR3(Ol.application that allows users to specify a wor≤`°dONLNd?F3Re)« d to be sear"‡°dONLNdKFfRä)3ched for»Ä°dONLNdSFâRî)#. TÈ@°dONLNdVFîR®) he V †°dONLNdZF®Rı)enn Diagrammer °dONLNdiSl_ÿ(\lapplication displays the å°dONLNdÇSÿ_)l    modeless f‡°dONLNdãS_E),dialog shown iφ°dONLNdôSE_M)An >°dONLNdõSN_f)    Figur¿°dONLNd†Sf_z)e 7-3Æ@°dONLNd•Sz_Ñ) wÖ@°dONLNdßSÖ_∑) hen the use‹¿°dONLNd≤S∑_Â)2 r chooses tÇ°dONLNdΩSÊ_Û)/he °dONLNd¿`llu(ilPrN†°dONLNd¬`vlÜ)
  8315. efer˙¿°dONLNdΔ`ÜlΔ) ences commanο°dONLNd“`«l÷)Ad fr†`°dONLNd÷`◊lÎ)om t¨@°dONLNd⁄`Îlˇ)he V„†°dONLNdfi`˛l,)    enn menu.
  8316. é*ü¯4è*ü¯"è*]
  8317. ˇ·ˇ‚7^    °dONLNdËÑlèñ(ål
  8318. Figure 7-3°dONLNdÛÑÆè¥)BA0°dONLNdÙÑ¥è) Preferences dialog box
  8319. °dONLNd ?lKÅ(HlThis Ä°dONLNd?ÇK≠)    modeless Ú`°dONLNd?≠K)+dialog box contains a ˘Ä°dONLNd0?K.)`button,†°dONLNd7?/KF)" four Δ¿°dONLNd=?FKY)chec√°dONLNdA?ZKf)kb˙Ä°dONLNdC?fKy) oxes˘‡°dONLNdG?zK|),y‡°dONLNdH?}K´)  and eight ;‡°dONLNdS?¨KÎ)/radio buttons.†°dONLNda?ÏK˜)@ It °dONLNdeLlX(Ul#also contains eight application-defi‹‡°dONLNdâLX,)öned item‹°dONLNdëL-X>)'s—t[`°dONLNdîL?X›)$he icons used to show the available °dONLNd∏Yle%(bl(existence symbols and emptiness patterns膰dONLNd‡Y%e')π.°dONLNd‚klw=(tl/In contrast to the modal dialog boxes shown in ¿°dONLNdk>wV)“Figur‘Ä°dONLNdkUwi)e 7-1r°dONLNdkjw) and _ °dONLNd kÄwò)Figur1‡°dONLNd%kòw¨)e 7-2œ`°dONLNd*k¨wÚ), the dialog box °dONLNd;xlÑó(Ål    shown in Ê°dONLNdDxóÑØ)+Figur∏¿°dONLNdIxØÑ√)e 7-3V@°dONLNdNxƒѸ) is said to be E‡°dONLNd]x˝Ñ*)9    modeless:à¿°dONLNdfx*ÑÊ)-* the user can switch to another window or °dONLNdêÖlëÿ(élRperform other actions without dismissing the dialog box. The user doesn’t have to °dONLNd‚ílû™*change any pr`°dONLNdÔí´ûª)?eferøÄ°dONLNdÛíªûÌ)Gences settings or click any buttons to be able to switch to a document °dONLNd:ül´(®lwindow or pull down a menu. Mor†°dONLNdYü    ´!)ùeover˛‡°dONLNd^ü ´È)/, clicking a button in the modeless dialog box 
  8320. ¡d¯òÄ4wìHHK¿ˇˇˇˇˇˇwìƒmsœˇ‡Ä–pÄ–pü—ˇ˛pü—ˇ˛pò—pò—pò—pò—pò—pò—pò—pò—pò—pò—pò—p(ò˛ˇÄ˛˝¿ÄÄ˝
  8321. ÄòåÛp(ò˛ˇˇ¿à˝¿0Ä˝
  8322. ÄÄÄÛp5òˇˇ‡ÄÒÒÒ‡yüÄ·√««òÒIJÒò·„Ãx¯û<fl··¿˛p5òˇÅôôò¿1ôôÅôì&fcÅ˛ôí1åÃÃ32ffqì3 ˛p5ò˛?¯Ģôôò¿1ôôÅô√Üfc˘Ä˘˛ôÅÒåÃà 38ffaÉ3IJp4
  8323. òˆ3¸Å˛ôò¿1ôôů·«ÊcôÅ˝ôÉ1åÃà ?ffaÉÒ¿˛p4
  8324. ò‚#˛Å˛ôò¿1ôôÅÄpÊcôÅ˝ôÉ1åÃà 0ffaɇ˛p4
  8325. ò?‚#ˇâ˛ôò¿1ôôÅâ2f&côÅ˝ôì1åÃà 1&ffaìf˛p5-ò¢#ˇÄ˘ôò`1ôèÄ·√Δaò˘Ä˘ÒÒò·Ãxà <>`··Δ˛pò"#ˇÄÌÅÄÔpò"#ˇÄÌÅÄÔpò"#ˇÄÿpò"#ˇÄÿpò"#ˇÄÿpò èÄÿpòÄÿp, òĈ˙p1Ä˝Ä¿˛ ¿`0˙0p(
  8326. òÄΔ˘¿1Ä˝˚¿`0˙0p53òÄ«Δ8ÄÒ‡yé<«èġå|¯>√Δ€f|xp3ò?ÄΔfd ˛ôÅò¿1ôò˝ô#Ãÿ˝Ã`33&gff0p4ò?ÄΔfp ôôÅò¿1ôò˛ôòÃÿ˝Ã`33fff0p4òÄΔf8 ôôÅò¿1ô¯˛ôò3Ãÿ˝Ã`3?fff0p4òÄΔf ôôÅò¿1ôIJôò3Ãÿ˝Ã`30fff0p3òˇÄΔfL ˛ôÅò¿1ôà˝ô3Ãÿ˝Ã`31&fff1Äp53òˇÄΔf8Ä¿òüé «å¿ÃÃ|Ã0>√Δ>|Äp!ò?ˇ˘Ä˚¯ ¯`˛p!òÅ˛˘Ä˚¯å¯`˛pòˇˇ¸¯ÔxÙpòˇˇ¯◊pòˇˇ◊pòˇˇ‡◊pò˛ˇˇ¿◊p!ò˘˝¿Δ1å pò¯¿˝¸
  8327. å p(ò¯ΔŸÅ≥«Δ<8œá¿œ33œÄxááôü·„„0˜p(ò¯«ÅΔffFdÃÿΔ31å¿å »ÃõôÅì330˜p(ò¯ΔÅÜff>`ÃÿΔ31å¿| «ÃôÅÉ330˜p(ò¯ΔÅáÊff`ÃÿΔ31å¿Ã ÃÃôÅÉ330˜p(ò¯ΔÅÜff`ÃÿΔ31å¿Ã ÃÃôÅÉ330˜p'ò¯ΔÅÜ&ffdÃÿΔ21å¿Ã ÃÃõôÅì˛3˜p(ò¯ΔÅÉ«Δ>8ë¿√¸0ÿ|á«èü·„·Û˜pò˜Ä¸¿ı0˜pò˜Ä˝¿ı0˜pò˜˙ÄÒ‡˜pò—pò—pò—pò—pò—pò—pò—pò—pò—pò—pò—pò—pò—pò—pò—pòÌ˘ˇÓpòÓ˘ˇ¸ÓpòÓ˘ˇ˛ÓpòÓÄ˙ÓpòÓ?˙ˇ«ÓpòÓ¿˙7ÄÔpòÓÄ˙ÄÔpòÓ˘ ÄÔpòÓ˘ ÄÔpòÓ˛1Ä ÄÔpòÓ˛33˛ ÄÔpòÓ˛36˛ ÄÔpòÓ˛3<˛ ÄÔpòÓ˛38˛ ÄÔpòÓ˛3<˛ ÄÔpòÓ˛36˛ ÄÔpòÓ˛33˛ ÄÔpòÓ˛1Ä ÄÔpòÓ˘ ÄÔpòÓ˘ ÄÔpòÓ˘ ÄÔpòÓÄ˙ÄÔpòÓ¿˙7ÄÔpòÓ?˙ˇ«ÓpòÓÄ˙ÓpòÓ˘ˇ˛ÓpòÓ˘ˇ¸ÓpòÌ˘ˇÓpò—pò—pò—pò—pò—pò—pò—pò—pò—pò—pò—pü—ˇ˛pÄ–pÄ–pœˇœˇ
  8328. ûh(¯òÄ$…HHK∏ˇˇˇˇˇˇ…°m$%fiˇ¿Äfl`ÄflpÄflpø˜˛ˇÍ?¸ˇpÄ@˛ò˛¸¿Ùpø@˛ˇò˛ĸ` ˙?¸ˇp"Ä@˛òÒÒò˘≥«¸fœ<lÒ··¿˚p#ø@˛ˇ˛ôòôôƒffgåfqôôì3 ?¸ˇp"Ä@˛˛ôòò˘ôÉÊfΔåfaôôÉ3Ä˚p#ø@˛ˇô˘ôò˛ôÜffå~a˘ôÉÒ¿?¸ˇp"Ä@˛ôÅôò˛ôÜff `aÅôɇ˚p#ø@˛ˇëâôò˛ôÜffåbaâôì`?¸ˇp"Ä@˛‡Òôò¯˘ÉÊf <`Òò··¿˚pø˜˛ˇ˘Û?¸ˇp ÄıÌp
  8329. ÄÙÌpÄflpfiˇÄflpÄflpÄflpį¿c˝Äıpį˛`˝ ¿ıpį¯¯Û>8 «è<x€‡¯pį ÃÃc332d »ΔÄ0¯pįåÃÃc338páΔÃ√0¯pį ÃÃc3?8 Δ¸√0¯pį ÃÃc30 Δ¿√0¯pį ÃÃc31&L Δƒ√0¯pįÃï338 √ x√0¯p
  8330. Äı¿Ïp
  8331. Äı¿ÏpÄflpÄflpÄflpÄflpĸˇ˛¸ˇ‡˝ˇ˛¸ˇ‡˛pĸ™™¸D`˝DF¸Ó‡˛p$Ä˝xUV˛Äà†˛x˛Ī†˛p%IJÜ™™˛ ` Ü˛`Ó‡˛p%IJUV˛  " ˛ ª†˛p%IJy™™˛  D`DF˛ Ó‡˛p%IJ¸ÅUV˛ @à†Å˛@ª†˛p%IJ¸Å™™˛ @ Å˛@Ó‡˛p%IJ¸ÅUV˛ @" Å˛@ª†˛p%IJ¸Å™™˛ @D`ÅDF˛@Ó‡˛p%IJyUV˛  à†˛ ª†˛p%IJ™™˛   ˛ Ó‡˛p%IJÜUV˛ `" Ü˛`ª†˛p$Ä˝x™™˛ÄD`˛xDF˛ÄÓ‡˛pĸUV¸à†˝¸ª†˛pĸˇ˛¸ˇ‡˝ˇ˛¸ˇ‡˛pÄflpÄflpÄflpÄflpÄflpÄflpÄflpį0˝˜pįÄ0˝2˜pįÉ3xÒ·‡0f«√Δ˜pį    É321ôôì08¸f˜pį    „381ôôÉ0¸f˜pį    Å„1˘ôÉ¸f˜pį    É31Åôɸf˜pį    É3&1âôì&¸f˜pįÛ3Òò·‡>fg√Δ˜p
  8332. ÄÓÛp
  8333. ÄÓFÛp
  8334. ÄÓ<ÛpÄflpÄflpÄflpÄflpÄflpÄ˝x˚Ä˚x˚Ä˚pIJÜ˚`¸Ü˚`˚p#IJ`˛ H˛˝ `˝p$IJy ¿˛ P˛IJ `˝p$IJ¸ÄIJ@‡˛Ä?¿˛@`˝p#IJ¸Ä˝@¯˛Ä?¿˛@¸˝p$IJ¸ÄIJ@‡˛Ä?¿˛@¸˝p$IJ¸Ä ¿˛@P˛Ä?¿˛@`˝p$IJy`˛ H˛IJ `˝pIJ˚ ¸˝ `˝pIJÜ˚`¸Ü˚`˚pÄ˝x˚Ä˚x˚Ä˚pÄflpÄflpÄflpÄflpÄflpÄflpÄflpÄflpÄflpIJ·pÄÄ¿¿Ä˛ `¯pÄ ¿¿¿Ä˛ ˜p"Ä «èá«è¯Ã¿pÒè<áåœ√«ûg√„Ä˚pÄ »˚ÿ…˛ô ÃÃΔ&c ˛f@˚pÄá˚ÿ·ôôò ÃÃΔÜc ffg˙pÄ ˙ÿq˘üò œ«Ü«„ ffcÄ˚pÄ ˙ÿ9Åò à ΔÊ ffa¿˚pÄ ˙ÿôâòô ÃLΔf# ffd¿˚p"Ä «Ã««åë¿pÒè «å√√¡Üfc„Ä˚pĢ¿Ú`˙pIJ˙¿Û`˙pįÄÛ¿˙pÄflpÄflpÄflpÄflpÄflpIJ·pÄIJåòÜ`0ıpÄ
  8335. ¿˛ ÄòÄ`Ùp!Ä Ãœ?·„ÃpÒôòÜf81·Ûgè¯˙p!Ä" ÃΔ3321å…ôòôÜfd`3233àÃÃ˙p!ĬÃΔ331Òå¿˘ôòôÜfp`31Û3ÃÃ˙p Ä¬ ÃΔ˛3 1å¡ôôòôÜf8`˝3 ÃÃ˙p Ä" ÃΔ˛3 1å¡ôôòôÜf`˝3 ÃÃ˙p Ä ÃΔ˛3 1å…ôôòôÜfL`˝3 ÃÃ˙p!Ä
  8336. «√31Ãp˘ò¯èÜ>801ÒÛÃÃ˙pĈ˚0˜pIJ˜&¸0˜pÄÙ¸‡˜pÄflpÄflpÄflpÄflpÄflpIJ·pIJ``0˘83‡˝pÄ
  8337. ò˛``¯`0Ä˝p%#Ä ò|<c√è1¿|<√√Äx33«çø·¿p%Ä"ôôò2ffdfF3 fF˛f@Ã`3#33åŒ33 p%#Ĭôôò0ffcÁ3f>ffgÃ`333åÃ33Äp$Ĭ˛ôò0˛fcÜ3˛fg„ÄÃ`˝3åÃ31¿p#Ä"˛ôò0˛faΔ3˝f¿Ã`˝3åÃ30‡p$Ä    ˛ôê2˛fdΔ3 ˝f$¿Ã`2˛3åÃ32`p%#Ä
  8338. è‡f<c„É1¿f>fc√Äx`<3áå31¿pÄ·pIJ·pÄflpÄflpÄflpÄflpÄflpÄflpIJ·p#Äå˝ ¿ÅIJ¿˛¿0˝p Ä @˚¿Ä˝¿˛¿˝p%Ä ÃxåÃq„««òÒÅüÒÒ∑Å„¿8ï1·«é˛p$Ä Ãà ÃûΔfcÅ˝ô
  8339. √Δ`dÃÃ33#˛p$Ä˛Ã     ÃÇΔfc˘Å˝ô
  8340. ÉΔ`pÃÃ33˛p$Ä Ãø«åp«ÊcôÅ˝ô
  8341. ÉΔ`8ÃÃ3Û˛p$Ä Ãÿ Ã8ΔcôÅ˝ô
  8342. ÉΔ`ÃÃ3˛p$Ä ûƒ LÃòΔ&côÅ˝ô
  8343. ÉΔ`LÃÃ3#˛p%ÄåxåÃpcΔaò˘ÅôôÒÅÄc¿8|¯1·¡é˛pÄÚĢ0˚pIJÚÄ˙0˚p
  8344. Äʇ˚pÄflpÄflpÄflpÄflpÄflpÄflpÄflpĸÏˇ˚pĸ Ï ˚pĸÏ˚pĸÏ˚pĸÏ˚pĸ¯`˛8˚˚pĸ2¯`˛`˚˚p Ä¸0<f<åÕ∂x¯>6xÒ„gèá˚p Ä¸8FffLŒ8ÃÃ`38Ãc3åÃÃôô˚p Ä¸>ff Ã0ÃÃ`30Ãc3 ÃÃú˚p Ä¸ff~ Ã0¸Ã`30¸cÛÃÃé˚p Ä¸ff` Ã0¿Ã`30¿c Ã˚p Ä¸&fdbLÃ0ƒÃ`30ƒc LÃòì˚p Ä¸>x<áÃ0xÃ0>0xa„å«˚pĸˆ0¯˚pĸˆ0¯˚pĸÏ˚pĸÏ˚pĸ Ï ˚pĸÏˇ˚pÄflpÄflpÄflpÄflpÄflpÄflpÄflpfiˇflˇˇ<à@ˇ ˇˇˇˇ@
  8345. ˇ·ˇ‚7^
  8346. 4H\, Palatino&e.3+ä"CHAPTER ”)>7,     Helvetica    ˇˇ—ÚˇÆ(@ä Dialog Boxes4⁄ä˙(‡äAbout Dialog Boxes
  8347. (‡135
  8348. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8349. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8350.  
  8351.  
  8352.  
  8353.  
  8354.  
  8355. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  8356. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8357. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8358.  
  8359.  
  8360.  
  8361.  
  8362.  
  8363. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˘ˇ
  8364. ˛ˇ˛ˇ    ¸ˇˇ¸˝ˇ˙ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  8365. 4Å4w?òÄ
  8366. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8367. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8368.  
  8369.  
  8370.  
  8371.  
  8372.  
  8373. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˙ˇ    ˇ¸ˇ    ˇ¸ˇ
  8374. ˛ˇ˛ˇˇ˝˛ˇ˛˜    ¸ˇˇ˜˛ˇˇ˝
  8375. ˇˇˇ˛
  8376. ˇˇˇ˛˛˛ˇ˝ˇ˙˙ˇ˜˛˛ˇ˝
  8377. ˇ˛ˇ˛
  8378. ˇ˛ˇ˛˛˛ˇ˝˜ˇ˛ˇ˝
  8379. ˇˇ˛ˇ˛
  8380. ˇˇ˛ˇ˛˚ˇ˛˜˜˜˜˙ˇ     ˇˇˇ     ˇˇˇ     ˇˇˇ
  8381. ˛ˇˇˇˇˇ˜˛˛ˇ˝
  8382. ˇ˛ˇ˛
  8383. ˇ˛ˇ˛˛˛ˇ˝˜
  8384. ˇ˛ˇ˛˛ˇˇ˝˝ˇ¸˛ˇˇ˝
  8385. ˇ˛ˇ˛˛˛ˇ˝
  8386. ˇˇˇ˛
  8387. ˇˇˇ˛    ˇˇˇ˝˜    ˇˇ˝
  8388. ˇˇˇ˛
  8389. ˇˇˇ˛    ˛ˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\ähv(eä7should not dismiss it; instead, the dialog box should r!Ä°dONLNd7\wh    )Ì!emain on the desktop so that the °dONLNdXiäuè(rä=user can continue to see the information displayed in it or rò†°dONLNdïièu
  8390. (rèepeat any actions it permits.
  8391. ÉHë4ÑHë°dONLNd≥Ñäå©(ääIMPORTÄ°dONLNdπÑ©åπ)ANT
  8392. ˇ·ˇ‚7^
  8393. °dONLNdΩèäõê(òäTµ¿°dONLNdæèèõ)o give users maximum contr¢†°dONLNdÿèõa)~ol and minimum fr≈`°dONLNdÈèaõ≈)Tustration, you should, °dONLNdõäߪ(§äBwhenever possible, implement your dialog boxes as modeless dialog °dONLNdBßä≥•* boxes.,Zapf Dingbats,`°dONLNdQ™´≤±)!s
  8394. °dONLNdS∏䃣(¡äThe d◊Ä°dONLNdX∏£ƒΔ)    istinctiv:@°dONLNda∏«ƒË)$e featur؇°dONLNdi∏˃)!e of d^†°dONLNdo∏ƒÎ)1ialog boxes—as opposed to windows—is that they ar…‡°dONLNd†∏΃)Íe very °dONLNdß≈ä—≥(Œä
  8395. easy to cr‡°dONLNd±≈¥—Z)*"eate and manage. The Dialog Manage±Ä°dONLNd”≈Z—®)¶r looks in dialog r≥Ä°dONLNdÊ≈®—¿)Nesour˚¿°dONLNdÎ≈¿—·)ces to fi7@°dONLNdÙ≈‚—)"nd °dONLNd˜“äfiê(€ädõ¿°dONLNd¯“êfi[)0escriptions of the dialog box and the items in iN°dONLNd(“\fiÄ)à   t. Then tfl‡°dONLNd1“Äfi)$he Dialog Manager draws the °dONLNdMfläÎt(Ëä5dialog box and handles user actions in the dialog box~¿°dONLNdÇfluÎé)Πaccor¿°dONLNdàflèδ)dingly⁄ °dONLNdéfl™Î). This can be especially °dONLNdßÏä¯ï(ıä=useful for managing dialog boxes that contain editable text fi~‡°dONLNdÂÏñ¯
  8396. (ıñelds. The Dialog Manager °dONLNd˛˘ä¶(äcalls T≥¿°dONLNd˘•2)!extEdit to handle all the standar“†°dONLNd&˘2G)çd tex£°dONLNd+˘HS)t-e‡°dONLNd.˘T) ,diting operations such as cutting, pasting, °dONLNdZä¡(ä and copying≠°dONLNde¡√)7.°dONLNdgä$ê(!äTµ¿°dONLNdhè$ü)o cr‡Ä°dONLNdlü$)eate a dialog box, you fiÂÄ°dONLNdÖ$J)irst need to defi‡°dONLNdïK$_)Cne a ú‡°dONLNdö_$§)dialog resourceQ@°dONLNd©•$‡)F and a dialog /Ä°dONLNd∑·$)<
  8397. item list.&¿°dONLNd¡    $ )( °dONLNd¬%ä1ø(.ä The dialog rÒ‡°dONLNdŒ%ø1◊)5esour: °dONLNd”%ÿ1)    ce specifib °dONLNd›%1})(es, among other things, the r@°dONLNd˙%~1œ)~ectangle on the scrπÄ°dONLNd%œ1    )Qeen in which °dONLNd2ä>˛(;äthe dialog box is drawn, a P`°dONLNd52ˇ>8)u
  8398. window defi  °dONLNd@28>b)9    nition IDC‡°dONLNdI2c>)+& indicating the type of dialog box to .°dONLNdo?äK¢(Hädrawï°dONLNds?°K≈)    , and a rg`°dONLNd|?≈K‹)$esour9¿°dONLNdÅ?‹K^)ce ID of the dialog item list. €`°dONLNd†?]Ke)ÅAN¿°dONLNd°?eKã)     dialog r! °dONLNd™?ãK¢)&esourÛÄ°dONLNdØ?°Kÿ)ce is of type ,
  8399. CourierÛÄ°dONLNdΩ?ÿK¸)7'DLOG'ÛÄ°dONLNd√?¸K)$. See .°dONLNd…LäX¢(UäFigurR¿°dONLNdŒL¢Xfi)e 3-2 on page °dONLNd‹LflXÈ)=58°dONLNdfiLÈX|)
  8400. # for the ResEdit form of a dialog r—¿°dONLNdL|Xî)ìesour°dONLNdLïX¥)ce and A°dONLNdL¥XÚ)Listing 3-1 on °dONLNdYäe°(bäpage Z‡°dONLNd!Y¢e¨)57Z‡°dONLNd#Y¨eP)
  8401. & for the Rez form of the same dialog r≥`°dONLNdIYPeh)§esour˚†°dONLNdNYhe√)ce. Both of these corr•@°dONLNddYƒe)\espond to the °dONLNdrfärΔ(oädialog box in –†°dONLNdÄfΔrfi)<Figur£`°dONLNdÖffirÚ)e 7-3@‡°dONLNdäfÛrı).°dONLNdåxäÑh(Åä3One of the main pieces of information in a dialog rK°dONLNdøxiÑÅ)flesourì@°dONLNdƒxÅÑ™) ce is the r‡°dONLNdœx´Ñ√)*esour] °dONLNd‘x√Ñ)ce ID of a dialog .°dONLNdÊÖäë√(éäitem list (a rR`°dONLNdÙÖ√ë⁄)9esour$¿°dONLNd˘Ö⁄ë) ce of type $¿°dONLNdÖë+)-'DITL'$¿°dONLNd
  8402. Ö+ëè)$). The item list specifi$¿°dONLNd"Öèë)des the items—such as buttons .°dONLNd?íäû    (õäYand static text—to display in an alert box or a dialog box. (Once again, you can specify °dONLNdòüä´–*Oan item list graphically using a utility like ResEdit or textually in the Rez r3°dONLNdÁü—´È(®—esour{@°dONLNdÏüÈ´Ù)ce °dONLNdÔ¨ä∏(µäUdescription language.) The Dialog Manager uses the item list both to draw the dialog °dONLNdDπä≈|*9box and also to handle user actions in dialog boxes. It r≤Ä°dONLNd}π|≈Ù)Úeports user actions to your °dONLNdôΔä“ (œäapplication by specifying the ∏@°dONLNd∑Δ “G)Ç item numberfi °dONLNd¬ΔG“i);     of the r…‡°dONLNdÀΔi“§)"elevant item. ÈÄ°dONLNdŸΔ§“);An item’s number is °dONLNdÌ”äfl(‹ä"simply its rank in the item list. ]Ä°dONLNd”fl)âIn `°dONLNd”flM) Listing 7-1≠†°dONLNd”MflU)., t°dONLNd ”Ufli)he V'`°dONLNd$”ifl¸)enn Diagrammer application defiH`°dONLNdC”¸fl)ìnes a °dONLNdI‡äÏø(ÈäGnumber of constants to keep track of the numbers of the items in its PrB °dONLNdꇿϖ(È¿eferÓ@°dONLNdϠ   )ences dialog °dONLNd°Ìä˘ö(ˆäbox•¿°dONLNd§Ìö˘ú).
  8403. H$4H$"H_
  8404. ˇ·ˇ‚7^    °dONLNd¶ä∂(ä Listing 7-1°dONLNd≤Œ)DDialog item numberÄ0°dONLNdƒ )Ns
  8405. .°dONLNdΔ,ä8ê(5äi°dONLNd«,ê8Ã)
  8406. Empty1Radi°dONLNd—,Ã8“)<o°dONLNd⁄,8 )N=°dONLNd€, 82) 1;°dONLNdfl:äFÃ(Cä iEmpty2Radi°dONLNdÍ:ÃF“)Bo°dONLNdÛ:F )N=°dONLNdÙ: F2) 2;°dONLNd¯HäTÃ(Qä iEmpty3Radi°dONLNd    HÃT“)Bo°dONLNd     HT )N=°dONLNd    H T2) 3;°dONLNd    VäbÃ(_ä iEmpty4Radi°dONLNd    VÃb“)Bo°dONLNd    %Vb )N=°dONLNd    &V b2) 4;°dONLNd    *däpΔ(mä
  8407. iEmpty1Ico°dONLNd    4dΔpÃ)<n°dONLNd    =dp )T=°dONLNd    >d p2) 5;°dONLNd    Brä~Δ({ä
  8408. iEmpty2Ico°dONLNd    LrΔ~Ã)<n°dONLNd    Ur~ )T=°dONLNd    Vr ~2) 6;°dONLNd    ZÄäåΔ(âä
  8409. iEmpty3Ico°dONLNd    dÄΔåÃ)<n°dONLNd    mÄå )T=°dONLNd    nÄ å2) 7;°dONLNd    réäöΔ(óä
  8410. iEmpty4Ico°dONLNd    |éΔöÃ)<n°dONLNd    Öéö )T=°dONLNd    Üé ö2) 8;°dONLNd    äúä®Ã(•ä iExist1Radi°dONLNd    ïúî“)Bo°dONLNd    ûú® )N=°dONLNd    üú ®2) 9;°dONLNd    £™ä∂Ã(≥ä iExist2Radi°dONLNd    Æ™Ã∂“)Bo°dONLNd    ∑™∂ )N=°dONLNd    ∏™ ∂8) 10;ˇ†@ˇ ˇˇˇˇ@
  8411. ˇ·ˇ‚7^
  8412. 4*\¯, Palatino&e.3+l"CHAPTER ”)>7,     Helvetica    ˇˇ—ÚˇÆ(@l Dialog Boxes4⁄*˙¯
  8413. (‡*136    )BAbout Dialog Boxes4^*¿¯,
  8414. Courier
  8415. .°dONLNd\lhÆ(el iExist3Radi°dONLNd \Æh¥)Bo°dONLNd\¸h)N=°dONLNd\h) 11;°dONLNdjlvÆ(sl iExist4Radi°dONLNd%jÆv¥)Bo°dONLNd.j¸v)N=°dONLNd/jv) 12;°dONLNd4xlÑ®(Ål
  8416. iExist1Ico°dONLNd>x®ÑÆ)<n°dONLNdGx¸Ñ)T=°dONLNdHxÑ) 13;°dONLNdMÜlí®(èl
  8417. iExist2Ico°dONLNdWÜ®íÆ)<n°dONLNd`ܸí)T=°dONLNdaÜí) 14;°dONLNdfîl†®(ùl
  8418. iExist3Ico°dONLNdpÆ)<n°dONLNdy)T=°dONLNdzî†) 15;°dONLNd¢lÆ®(´l
  8419. iExist4Ico°dONLNd⢮ÆÆ)<n°dONLNdí¢¸Æ)T=°dONLNdì¢Æ) 16;°dONLNdò∞lºΔ(πliGetNextRandoml°dONLNdß∞ΔºÃ)Zy°dONLNd∞∞¸º)6=°dONLNd±∞º) 19;°dONLNd∂æl ®(«l
  8420. iAutoAdjus°dONLNd¿æ® Æ)<t°dONLNd…渠)T=°dONLNd æ ) 20;°dONLNdœÃlÿΔ(’liShowSchoolName°dONLNdfiÃΔÿÃ)Zs°dONLNdÁøÿ)6=°dONLNdËÃÿ) 21;°dONLNdÌ⁄lÊ¿(„liUseExistImpor°dONLNd˚⁄¿ÊΔ)Tt°dONLNd⁄¸Ê)<=°dONLNd⁄Ê) 22;°dONLNd
  8421. ËlÙ∫(ÒliSaveVennPref°dONLNdË∫Ù¿)Ns°dONLNd Ë¸Ù)B=°dONLNd!ËÙ) 23°dONLNd$ËÙ);
  8422. *¯4*¯    .°dONLNd&l(
  8423. lNote
  8424. ˇ·ˇ‚7^
  8425. °dONLNd+lt*NŒ‡°dONLNd,t%)'otice that several item numbers (namely°dONLNdS$))∞, °dONLNdU):)17 ae°dONLNdY;@)n6`°dONLNdZAV)d 18)&°dONLNd_Wb) ark°dONLNdbbï) e missing frÿ°dONLNdnï•)3om °dONLNdql'≤($lthis list. They ar °dONLNdÉ≥'û)G5e the item numbers of the two text labels “Emptiness °dONLNd∏'l3
  8426. (0l"Pattern” and “Existence Symbol.” V.‡°dONLNd⁄'
  8427. 3o)ûenn Diagrammer ignor™@°dONLNdÓ'o3™)ees those item °dONLNd¸3l? (<l'numbers because clicking them has no ef¸`°dONLNd#3 ?2)¥fect.,Zapf DingbatsLÄ°dONLNd168>=)u
  8428. °dONLNd3DlPv(MlDi%†°dONLNd5DwP) #alog boxes can contain various sort÷@°dONLNdXDP)ös@°dONLNdYDPn) of items, such contr¶@°dONLNdnDnP})Xols ¡ °dONLNdrD}PÒ)(buttons, checkboxes, and °dONLNdåQl]≠(Zlradio buttons) ◊Ä°dONLNdõQ≠]Δ)Aand fiQ`°dONLNd°Q«]æ)8elds for entering and editing text. The Dialog Manager r] °dONLNdŸQæ]Î)˜
  8429. ecognizes °dONLNd„^lj (gl%these constants for dialog box items:.°dONLNd    ulÅä*CONST°dONLNdÉ~èÆ+ctrlItem°dONLNdÉÿè)Z= 4;°dONLNd#ɸè⁄)$%{add this to the next four constants}°dONLNdJë~ù®(ö~btnCtrl°dONLNdVëÿù)Z= 0;°dONLNd\ë¸ùí)${standard button control}°dONLNdwü~´®(®~chkCtrl°dONLNdÉüÿ´)Z= 1;°dONLNdâü¸´û)${standard checkbox control}°dONLNd¶≠~π®(∂~radCtrl°dONLNd≤≠ÿπ)Z= 2;°dONLNd∏≠¸πÜ)${standard radio button}°dONLNd—ª~«®(ƒ~resCtrl°dONLNd›ªÿ«)Z= 3;°dONLNd„ª¸«Ê)$'{control defined in a control resource}°dONLNd …~’¥(“~    helpItem °dONLNd…ÿ’)Z= 1;°dONLNd …¸’V)${help balloons}°dONLNd1◊~„Æ(‡~statText°dONLNd>◊ÿ„)Z= 8;°dONLNdD◊¸„J)${static text}°dONLNdSÂ~ÒÆ(Ó~editText°dONLNd`ÂÿÒˆ)Z= 16;°dONLNdg¸ÒV)${editable text}°dONLNdxÛ~ˇÆ(¸~iconItem°dONLNdÖÛÿˇˆ)Z= 32;°dONLNdåÛ¸ˇ )${icon}°dONLNdî~®(
  8430. ~picItem°dONLNd†ÿˆ)Z= 64;°dONLNd߸n)${QuickDraw picture}°dONLNdº~Æ(~userItem°dONLNd…ÿ)Z= 0;°dONLNdœ¸í)${application-defined item°dONLNdËíò)ñ}.°dONLNdÍ'l3‹(0lSeveral Dialog Manager r=‡°dONLNd'›3)q    outines r@°dONLNd '3˜)'9eturn these constants to your application. For instance, .°dONLNdD4l@£(=lFyou can get information about a particular dialog item by calling the °dONLNdä4£@Ò(=£GetDialogItem°dONLNdó4Ò@Û)N .°dONLNdòAlMo(JlrE°dONLNdôApMé)outine:.°dONLNd°Xld∫(alGetDialogItem°dONLNdÆX∫d)N    (myDialog°dONLNd∑Xd¬)6#, itemNum, myType, myHand, myRect);°dONLNd€pl|Ë(ylSuppose, for example, that °dONLNdˆpË|)|itemNum°dONLNd˝p|s)* has the value specifi°dONLNdps|Δ)aed by the constant °dONLNd&}lâ¿(ÜliSaveVennPrefs°dONLNd4}¿âÓ)T . Then on rR`°dONLNd?}Óâ).eturn fr$¿°dONLNdG}â:)!    om the pr˜ °dONLNdP}9âV)*ocedur…Ä°dONLNdV}Vâo)e call…Ä°dONLNd\}oât), …Ä°dONLNd^}tâò)myType…Ä°dONLNdd}òâ¢)$ w…Ä°dONLNdf}¢âÂ)
  8431. ill contain the °dONLNdvälñà(ìlvalue °dONLNd|äàñË)ctrlItem+btnCtrl°dONLNdåäËñe)`, indicating that the specifi°dONLNd©äeñæ)}ed item is a standarR`°dONLNdΩäæñ‰)Y    d button .°dONLNdΔól£Ç(†lcontr>Ä°dONLNdÀóÉ£ç)ol.ˇ9Δ@ˇ ˇˇˇˇ@
  8432. ˇ·ˇ‚7^
  8433. 4H\, Palatino&e.3+ä"CHAPTER ”)>7,     Helvetica    ˇˇ—ÚˇÆ(@ä Dialog Boxes4⁄ä˙(‡äUsing Modeless Dialog Boxes
  8434. (‡137
  8435. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8436. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8437.  
  8438.  
  8439.  
  8440.  
  8441.  
  8442. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  8443. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8444. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8445.  
  8446.  
  8447.  
  8448.  
  8449.  
  8450. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˘ˇ
  8451. ˛ˇ˛ˇ    ¸ˇˇ¸˝ˇ˙ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  8452. 4Å4w?òÄ
  8453. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8454. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8455.  
  8456.  
  8457.  
  8458.  
  8459.  
  8460. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˙ˇ    ˇ¸ˇ    ˇ¸ˇ
  8461. ˛ˇ˛ˇˇ˝˛ˇ˛˜    ¸ˇˇ˜˛ˇˇ˝
  8462. ˇˇˇ˛
  8463. ˇˇˇ˛˛˛ˇ˝ˇ˙˙ˇ˜˛˛ˇ˝
  8464. ˇ˛ˇ˛
  8465. ˇ˛ˇ˛˛˛ˇ˝˜ˇ˛ˇ˝
  8466. ˇˇ˛ˇ˛
  8467. ˇˇ˛ˇ˛˚ˇ˛˜˜˜˜˙ˇ     ˇˇˇ     ˇˇˇ     ˇˇˇ
  8468. ˛ˇˇˇˇˇ˜˛˛ˇ˝
  8469. ˇ˛ˇ˛
  8470. ˇ˛ˇ˛˛˛ˇ˝˜
  8471. ˇ˛ˇ˛˛ˇˇ˝˝ˇ¸˛ˇˇ˝
  8472. ˇ˛ˇ˛˛˛ˇ˝
  8473. ˇˇˇ˛
  8474. ˇˇˇ˛    ˇˇˇ˝˜    ˇˇ˝
  8475. ˇˇˇ˛
  8476. ˇˇˇ˛    ˛ˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\äh_(eä0As you can see, a dialog box can contain standarfl °dONLNd0\_h    )’(d user interface elements like buttons, °dONLNdXiäuL(rä,checkboxes, icons, and even arbitrary picturé °dONLNdÑiLu˝)¬*es. If you need to include other kinds of °dONLNdÆväÇ'(ä$elements in a dialog box, you can cr=@°dONLNd“v(ÇÇ)ûeate application-defiè¿°dONLNdÁvÇÇ)Zned items. Because the Dialog .°dONLNdÉäè(åäManager uses the constant ,
  8477. Courier°dONLNdÉè1)wuserItem°dONLNd'É1è¬)0! to designate these items, they’rR`°dONLNdHɬè)ëe often called R`°dONLNdWÉè)?user .°dONLNd\êäú•(ôäitems.˚†°dONLNdbê•ú¡) The V”¿°dONLNdhê¡úŸ)=enn Diagrammer application employs eight user items in the Prå¿°dONLNd•ê⁄úÍ(ô⁄efer8‡°dONLNd©êÎú)ences °dONLNdØùä©È(¶äOdialog box, to draw the four emptiness patterns and the four existence symbols.°dONLNdˇØäª$* When you use any application-defic@°dONLNd Ø%ª˙)õ1ned user items in a dialog box, your application °dONLNdQºä»◊(≈äJneeds to tell the Dialog Manager how to draw the items and what to do in r놰dONLNdõº◊»(≈◊ esponse to °dONLNd¶…ä’ (“ä$user selections of those items. See     Ä°dONLNd …!’W)ó “Setting Up KÄ°dONLNd÷…W’°)6Application-Defi± °dONLNdÊ…°’)Jned Items” beginning on °dONLNd˛÷ä‚°(fläpage Z‡°dONLNd÷¢‚±)139Z‡°dONLNd÷±‚÷)
  8478.  for instr.†°dONLNd÷◊‚º)&3uctions on implementing user items in a dialog box.
  8479. H˛4ÒH˛    °dONLNdDÔä˙ù(˜äNote
  8480. ˇ·ˇ‚7^
  8481. °dONLNdI¸ää*9Most dialog boxes don’t need to contain user items. The VΩ@°dONLNdǸâõ)ˇenn °dONLNdÜä«(äEDiagrammer application uses them because it needs to draw bit images °dONLNdÀä ≥*
  8482. (not entirg‡°dONLNd’≥ #))e icons) in the dialog box.,Zapf Dingbats‡°dONLNd˘).)vu
  8483. &HA4'HA
  8484. QHY4RHY SHS
  8485. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd˚>HQ(LHUsing Modeless Dialog BoxesˇˇˇˇˇˇU˛(L7
  8486. °dONLNdbänê(käTµ¿°dONLNdbèn,)#o display a modeless dialog box, yo‹`°dONLNd;b,nJ)ùu can cï`°dONLNdBbKnN)rZ`°dONLNdCbOn“)eate the dialog box by calling .°dONLNdboä{“(xä GetNewDialog°dONLNdno“{)H. Then you can rR`°dONLNd~o{Í)E1espond to user actions in the dialog box by inter$¿°dONLNdØoÍ{)”cepting .°dONLNd∑|äà≠(Öädialog-rä°dONLNdø|≠à)#Lelated events in your main event loop and handling those events. The Dialog °dONLNd âäïÙ(íäManager calls the ContrR†°dONLNd"âÙïC)jol Manager to draà¿°dONLNd3âCïw)O w any contr˛¿°dONLNd>âwï)4!ols you’ve put in the dialog box °dONLNd_ñä¢è(üäa°dONLNd`ñ袯)nd handle user actions iÂ@°dONLNdxñ¯¢)in them.h°dONLNdñ¢Á)"/ If the dialog box contains any application-defi‹@°dONLNdØñÁ¢˙)Õned °dONLNd≥ñ˚¢)user °dONLNd∏£äØ≤(¨ä    items, yoä°dONLNd¡£≤Ø¿)(u n‚Ä°dONLNdƒ£¿ØÁ)    eed to prÄ°dONLNdÕ£ËØÆ)(*ovide the Dialog Manager with a drawing prDÄ°dONLNd˜£ÆØÃ)Δocedur€¿°dONLNd˝£ÃØ˚)e so that it °dONLNd
  8487. ∞äº(πäknows how to draw the items. ⁄@°dONLNd'∞º)àYö¿°dONLNd(∞º)o@°dONLNd)∞º+)u aó`°dONLNd,∞+ºÓ)-lso need to handle user actions for any such °dONLNdYΩä…œ(Δäapplication-defi|‡°dONLNdiΩ–…$)Fned items yourself.
  8488. ÓHı4ÔHı ä
  8489. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd}fläÓM(ÍäCreating a Modeless Dialog Boxˇˇˇˇˇˇ€r(Í7
  8490. .°dONLNdúıäë(˛äYï°dONLNdùıêµ)    ou can crg`°dONLNd¶ıµ^)%&eate a modeless dialog box by calling g`°dONLNdÃı^¶)© GetNewDialogg`°dONLNdÿı¶˚)H and passing it the °dONLNdÏäé( ärR`°dONLNdÌé•)esour$¿°dONLNdÚ•Ï)ce ID of an appr˜ °dONLNdÎ)Fopriate ˜ °dONLNd
  8491. 3)$'DLOG'˜ °dONLNd39)$ r…Ä°dONLNd9P)esourõ‡°dONLNdPz)    ce. The VÄ °dONLNd y˛))enn Diagrammer application .°dONLNd;ä≥(ä    supports /‡°dONLNdD¥ )*only n@°dONLNdI 1)one modeless dialog boG‡°dONLNd_2h)hx, in which tø°dONLNdlhÑ)6he useÁ¿°dONLNdrц)r can sY°dONLNdy°)et various application °dONLNdêä(ì(%äprG °dONLNdíî(§)
  8492. eferÛ@°dONLNdñ§(º)ences °dONLNdõΩ(…). V!Ä°dONLNdû»(F) enn Diagrammer displays th•°dONLNd∏F(z)~ at dialog bo’†°dONLNdƒz(õ)4    x after tì °dONLNdÕú(∏)"he useª‡°dONLNd”∏(Ê) r chooses ta °dONLNdfiÁ(Ù)/he °dONLNd·)ä5ì(2äPrN†°dONLNd„)î5§)
  8493. efer˙¿°dONLNdÁ)§5Ù)ences command fr†`°dONLNd˜)ı5)Qom the V„†°dONLNdˇ)5B)'enn men?°dONLNd)C5K)'u..°dONLNd    @äL‰(IäiGetVennPrefs: °dONLNdNúZº+0DoModelessDialog(rVennDPrefsDial, gPrefsDialog);.°dONLNdKfär◊(oäAs you can see, V>@°dONLNd\f◊r≤)M/enn Diagrammer simply calls the application-defiÅÄ°dONLNdåf≤rœ)€ned pr`°dONLNdífœrÌ)ocedur†°dONLNdòfÓrı)e .°dONLNdösäÍ(|äDoModelessDialog°dONLNd™sÍ))`, passing it a rR`°dONLNd∫s)@)?esour$¿°dONLNdøs@
  8494. ).ce ID specifying the dialog box to open and a °dONLNdÌÄäå(âäglobal variable in which to rR`°dONLNd    
  8495. ÄåÉ)Éeturn the dialog pointer cr$¿°dONLNd    %ÄÉå¨)v    eated by $¿°dONLNd    .ĨåÙ)) GetNewDialog$¿°dONLNd    :ÄÙå˘)H. °dONLNd    =çäô∫(ñä Listing 7-2°dONLNd    Hç∫ô¬)0 d°dONLNd    Jç¬ôŒ)efi°dONLNd    MçŒô) nes the °dONLNd    UçôP)"DoModelessDialog°dONLNd    eçPô\)` prR`°dONLNd    hç\ôy) ocedur$¿°dONLNd    nçyôÅ)e.ˇË@ˇ ˇˇˇˇ@
  8496. ˇ·ˇ‚7^
  8497. 4*\¯, Palatino&e.3+l"CHAPTER ”)>7,     Helvetica    ˇˇ—ÚˇÆ(@l Dialog Boxes4⁄*˙¯
  8498. (‡*138    )BUsing Modeless Dialog Boxes4^*¿¯
  8499. g*n¯4g*n¯"h*_
  8500. ˇ·ˇ‚7^°dONLNd\lgò(dl Listing 7-2°dONLNd \∞g.)DCreating a modeless dialog box,
  8501. Courier
  8502. .°dONLNd+v*ÇŒ(*FPROCEDURE DoModelessDialog (myKind: Integer; VAR myDialog: DialogPtr);°dONLNdsÑ<êN+VAR°dONLNdyíNûä+
  8503. myPointer:°dONLNdáíñûÆ)HPtr;°dONLNdå†*¨H(©*BEGIN°dONLNdìÆ<∫¿+IF myDialog = NIL THEN°dONLNd∂Æ&∫Ú)Í"{the dialog box doesn't exist yet}°dONLNd€ºN»l(≈NBEGIN°dONLNd‰ `÷\+*myPointer := NewPtr(sizeof(DialogRecord));°dONLNdÿ`‰Í*IF myPointer = NIL THEN°dONLNd.ÊrÚ¸+exit(DoModelessDialog);°dONLNdJ`¬( `;myDialog := GetNewDialog(myKind, myPointer, WindowPtr(-1));°dONLNdâ`Í*IF myDialog <> NIL THEN°dONLNd•r*ê+BEGIN°dONLNd∞,Ñ8V+#DoSetupUserItems(myKind, myDialog);°dONLNd‡,n8‡)Í{set up user items}°dONLNd˘:ÑF&(CÑDoSetupCtrlValues(myDialog)°dONLNd:&F,)¢;°dONLNd":nF¯)H{set up initial values}°dONLNd>HrTä(QrEND;°dONLNdEVNb`(_NEND°dONLNdJd<pT(m<ELSE°dONLNdQrN~l+BEGIN°dONLNdZÄ`åfi+ShowWindow(myDialog);°dONLNdsé`öÍ*SelectWindow(myDialog);°dONLNdéú`®Ã*SetPort(myDialog);°dONLNd£™N∂f(≥NEND;°dONLNd®∏*ƒB(¡*END;°dONLNd≠–l‹Ä+BThe °dONLNd±–Ä‹‡)DoModelessDialog°dONLNd¡–‡‹Ï)` prR`°dONLNdƒ–Ï‹    ) ocedur$¿°dONLNd –    ‹)e fi$¿°dONLNdŒ–‹≥)!rst determines whether the specifi$¿°dONLNd–≥‹Ò)úed dialog box .°dONLNd˛›lÈâ(Êlhas alrª¿°dONLNd›âÈ¿) eady been crQ¿°dONLNd›¡Èÿ)8eatedC °dONLNd›ŸÈ€),√ °dONLNd›€È„) b ¿°dONLNd›„ÈN)y checking the value of tu‡°dONLNd2›OÈ“)lhe global variable passed to itχ°dONLNdQ›“È⁄)É. IK`°dONLNdT›€ÈÒ)    f the ˇˇ[j.°dONLNdZÍlˆ¡(Ûlvariable contains a6‘°dONLNdmͬˆÕ)Vny6‘°dONLNdoÍÕˆ„)  valuí>°dONLNdtÍ„ˆ)e other than ˇ˛>§|°dONLNdÅ͈!)8N§|°dONLNdÇÍ!ˆ-)ILˇˇ[j§|°dONLNdÑÍ-ˆÄ) , the dialog box alr‰Ñ°dONLNdòÍĈfl)Seady exists (but is per$å°dONLNdØ͇ˆ¯)`haps °dONLNd¥˜lµ(lhidden or obscurR`°dONLNdƒ˜µ)Ied by other windows). R`°dONLNd⁄˜1)fIf so,R`°dONLNd‡˜13) R`°dONLNd·˜3ì)DoModelessDialogR`°dONLNdÒ˜ìË)` simply makes the °dONLNdlÚ(ldialog box visible (by calling °dONLNd"Ú.)Ü
  8504. ShowWindow°dONLNd,.2)<)°dONLNd-2d) , makes it t°dONLNd9dÍ)2he active window (by calling °dONLNdVl¥(l SelectWindow°dONLNdb¥?)H!), and establishes it as the currR`°dONLNdÉ?¡)ãent graphics port (by calling R`°dONLNd°¡Î)ÇSetPortR`°dONLNd®ÎÚ)*).°dONLNd´#l/t(,lIf°dONLNd≠#t/°)    , however¬†°dONLNd∂#†/£),,¬†°dONLNd∑#£/’)  the specifi¬†°dONLNd√#’/x)2&ed dialog box doesn’t exist yet, then ¬†°dONLNdÈ#x/ÿ)£DoModelessDialog¬†°dONLNd˘#ÿ/⁄)` °dONLNd˙0l<(9l#allocates memory for a new dialog rR`°dONLNd0<)°ecor$¿°dONLNd!0<ë)d and (if successful) calls $¿°dONLNd=0ë<Ÿ)r GetNewDialog$¿°dONLNdI0Ÿ<fi)H, °dONLNdK=lIê(Flpassing °dONLNdS=êIö)$it °dONLNdV=öI¬)
  8505. the apprR`°dONLNd^=¬IÍ)(    opriate r$¿°dONLNdg=ÍI)(esour˜ °dONLNdl=I&)
  8506. ce ID. If ˜ °dONLNdv=&In)& GetNewDialog˜ °dONLNdÇ=nIt)H r…Ä°dONLNdÑ=tIÿ)eturns successfully (as °dONLNdúJlV≥(Slindicated by a rR`°dONLNd¨J≥V)Geturned dialog pointeR`°dONLNd¡JVY)ar whose value iR`°dONLNd–JYVk)Esn’t R`°dONLNd’JkV})NILR`°dONLNdÿJ}VÜ)), R`°dONLNd€JÜVÊ)    DoModelessDialogR`°dONLNdÎJÊVË)` °dONLNdÏWlc˙(`lthen calls two application-defi°dONLNd W˙c)éned rR`°dONLNdWc5)    outines, R`°dONLNdW5cï)%DoSetupUserItemsR`°dONLNd)Wïc™)` and ˇ˛D°dONLNd.dlp“(mlDoSetupCtrlValuesˇˇ[l°dONLNd?d“p‡)f, to 6ÿ°dONLNdDd·pd)tell the Dialog Manager how ˇÙ°dONLNd`ddpà)Édraw th[`°dONLNdgdâp¶)%e user i8°dONLNdodßp¯)tems in the dialog .°dONLNdÇql}Œ(zlbox and to set the corréÄ°dONLNdôqŒ}‹)bect ä¿°dONLNdùq›}˘)initial ¿°dONLNd•q˘}‘)2values for the dialog box’s radio buttons and chec} °dONLNd◊q’}‡)‹kb쇰dONLNdŸq‡}ˆ) oxes.ˇ2Z@ˇ ˇˇˇˇ@
  8507. ˇ·ˇ‚7^
  8508. 4H\, Palatino&e.3+ä"CHAPTER ”)>7,     Helvetica    ˇˇ—ÚˇÆ(@ä Dialog Boxes4⁄ä˙(‡äUsing Modeless Dialog Boxes
  8509. (‡139
  8510. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8511. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8512.  
  8513.  
  8514.  
  8515.  
  8516.  
  8517. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  8518. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8519. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8520.  
  8521.  
  8522.  
  8523.  
  8524.  
  8525. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˘ˇ
  8526. ˛ˇ˛ˇ    ¸ˇˇ¸˝ˇ˙ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  8527. 4Å4w?òÄ
  8528. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8529. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8530.  
  8531.  
  8532.  
  8533.  
  8534.  
  8535. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˙ˇ    ˇ¸ˇ    ˇ¸ˇ
  8536. ˛ˇ˛ˇˇ˝˛ˇ˛˜    ¸ˇˇ˜˛ˇˇ˝
  8537. ˇˇˇ˛
  8538. ˇˇˇ˛˛˛ˇ˝ˇ˙˙ˇ˜˛˛ˇ˝
  8539. ˇ˛ˇ˛
  8540. ˇ˛ˇ˛˛˛ˇ˝˜ˇ˛ˇ˝
  8541. ˇˇ˛ˇ˛
  8542. ˇˇ˛ˇ˛˚ˇ˛˜˜˜˜˙ˇ     ˇˇˇ     ˇˇˇ     ˇˇˇ
  8543. ˛ˇˇˇˇˇ˜˛˛ˇ˝
  8544. ˇ˛ˇ˛
  8545. ˇ˛ˇ˛˛˛ˇ˝˜
  8546. ˇ˛ˇ˛˛ˇˇ˝˝ˇ¸˛ˇˇ˝
  8547. ˇ˛ˇ˛˛˛ˇ˝
  8548. ˇˇˇ˛
  8549. ˇˇˇ˛    ˇˇˇ˝˜    ˇˇ˝
  8550. ˇˇˇ˛
  8551. ˇˇˇ˛    ˛ˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  8552. kHr4lHr mäm
  8553. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd\äkÕ(gä Setting Up n⁄°dONLNd \Õk,)CApplication-DefiX:°dONLNd\-ki)`    ned Itemsˇˇˇˇˇˇ€r)·7
  8554. °dONLNd%rä~ã({ä7Whenever a modeless dialog box contains application-defiw`°dONLNd]rå~ü({åned Æ °dONLNdarü~¥)user .Ä°dONLNdfrµ~»)itemˆ‡°dONLNdjr»~Œ)s,≥‡°dONLNdlrœ~‹) yo8Ä°dONLNdor›~Î)u në°dONLNdrrÎ~)eed to °dONLNdyäã3(àä%tell the Dialog Manager how to draw t‹@°dONLNdû3ãH)©hem.À@°dONLNd¢IãK) †°dONLNd£LãR)Yfi °dONLNd§Qã))ou do this by calling the Dialog Manager .°dONLNdÕåäòî(ïäprR`°dONLNdœåîò±)
  8555. ocedur$¿°dONLNd’å±ò∏)e ,
  8556. Courier$¿°dONLNd◊å∏ò–)SetD$¿°dONLNd€å–òÙ)ialogI$¿°dONLNd·åÙò)$tem$¿°dONLNd‰åò{) for each application-defi$¿°dONLNd˛å{òı)uned item in the dialog box. °dONLNdôä•∫(¢ä Listing 7-3°dONLNd&ô∫•Ï)0  shows the °dONLNd1ôÏ•L)2DoSetupUserItems°dONLNdAôL•X)` prR`°dONLNdDôX•u) ocedur$¿°dONLNdJôu•Ä)e c$¿°dONLNdMôÄ•®)     alled by $¿°dONLNdVô®•)(DoModelessDialog$¿°dONLNdfô•
  8557. )` .°dONLNdg¶ä≤û(Øä(defiΔ°dONLNdl¶û≤º)ned in 6Ä°dONLNds¶Ω≤Î) Listing 7-2÷¿°dONLNd~¶Î≤).).
  8558. ’H›4÷H›"÷H_
  8559. ˇ·ˇ‚7^    °dONLNdÅÀä÷∂(”ä Listing 7-3°dONLNdçÀŒ÷5)DSetting up application-defi‡°dONLNd®À6÷w)hned dialog items
  8560. .°dONLNdπÂHÒÏ(ÓHFPROCEDURE DoSetupUserItems (myKind: Integer; VAR myDialog: DialogPtr);°dONLNdÛZˇf+VA°dONLNdÛfˇl) R°dONLNdlñ+myType:°dONLNd¥fi)HInteger°dONLNdfi‰)*;°dONLNdlñ(lmyHand:°dONLNd(¥ÿ)HHandle°dONLNd.ÿfi)$;°dONLNd2l)ñ(&lmyRect:°dONLNd=¥)“)HRect;°dONLNdE+l7ê(4lcount:°dONLNdO+¥7‰)HInteger;°dONLNdZ9lE¢(Bl    origPort:°dONLNdg9¥E‰)HGrafPtr;°dONLNdpGHSf(PHBEGIN°dONLNdwUZaΔ+GetPort(origPort);°dONLNdãcZoΔ*SetPort(myDialog);°dONLNd†ZãÆ*CASE myKind OF°dONLNd±çlô“+rVennDPrefsDial: °dONLNdΔõ~ßn+(FOR count := 1 TO kVennPrefsItemCount DO°dONLNdÛ©êµz+'IF count IN [iExist1Icon..iExist4Icon, °dONLNd$∑Í√û+ZiEmpty1Icon..iEmpty4Icon] THEN°dONLNdG≈ê—®(ŒêBEGI°dONLNdK≈®—Æ)N°dONLNdR”¢flˆ(‹¢GetDialogItem(°dONLNd`”ˆflP)TmyDialog, count°dONLNdo”PflÏ)Z, myType, myHand, myRect);°dONLNdè·¢̈(Í¢SetDialogItem(°dONLNdù·ˆÌP)TmyDialog, count°dONLNd¨·PÌÜ)Z    , myType,°dONLNdµ·ÜÌŒ)6  @DoUserItem°dONLNd¡·ŒÌ)H    , myRect)°dONLNd ·Ì
  8561. )6;°dONLNd–Ôê˚®(¯êEND;°dONLNd◊˝l    ¢(l    OTHERWISE°dONLNd‰ ~Ñ+;°dONLNdÁZ%r("ZEND;°dONLNdÓ5ZAΔ*SetPort(origPort);°dONLNdCHO`(LHEND;°dONLNd[ägû+BThe °dONLNd
  8562. [ûg˛)DoSetupUserItems°dONLNd[˛g
  8563. )` prR`°dONLNd[
  8564. g') ocedur$¿°dONLNd#['gÜ)e simply selects the r˜ °dONLNd9[Ögˆ)^elevant application-defi˜ °dONLNdQ[ˆg)qned °dONLNdUhät¨(qäitems, rR`°dONLNd]h¨t )"etrieves information abouR`°dONLNdvh tB)tt each iR`°dONLNd~hBtà)"tem (by calling R`°dONLNdéhàt†)FGetDR`°dONLNdíh†tæ)ialogR`°dONLNdóhæt÷)ItemR`°dONLNdõh÷t    ) ), and then °dONLNdßuäÅ¢(~äcalls °dONLNd≠u¢Å∫)SetD°dONLNd±u∫Åÿ)ialog°dONLNd∂uÿÅ)Item°dONLNd∫uÅÆ)* to associate a particular application-defi°dONLNdÂuÆÅÚ)æned drawing prR`°dONLNdÛuÚÅ)Docedur$¿°dONLNd˘uÅ)e °dONLNd˚Çäé’(ãäwith each item. !†°dONLNd Ç’é])KAs you can see, the drawing prÙ°dONLNd)Ç\éy)áocedurΔ`°dONLNd/ÇyéÄ)e Δ`°dONLNd1ÇÄéÑ)(Δ`°dONLNd2ÇÑé¿)
  8565. DoUserItemΔ`°dONLNd<Ç¿éΔ)<) Δ`°dONLNd>ÇΔéÙ)
  8566. is the samΔ`°dONLNdHÇÙéˇ).e fΔ`°dONLNdKǡé
  8567. ) or .°dONLNdNèäõÒ(òäeach user item in the Pr9¿°dONLNdfèÚõ)hefer‡°dONLNdjèõÎ)6ences dialog box. This is possible because the Dialog ˇº@ˇ ˇˇˇˇ@
  8568. ˇ·ˇ‚7^
  8569. 4*\¯, Palatino&e.3+l"CHAPTER ”)>7,     Helvetica    ˇˇ—ÚˇÆ(@l Dialog Boxes4⁄*˙¯
  8570. (‡*140    )BUsing Modeless Dialog Boxes4^*¿¯
  8571. °dONLNd\lh˜(elManager passes the drawing prÁÄ°dONLNd\˜h)ãocedur~¿°dONLNd#\h·)-e the dialog pointer and item number when it °dONLNdPilu(rl%wants a particular item to be drawn. °‡°dONLNduiu=)£ Listing 7-4B °dONLNdÄi>uQ)/ defi¥@°dONLNdÖiQuy)    nes the VÜ°dONLNdéiyu–)(enn Diagrammer prE °dONLNdüi—uÔ)Xocedur‹`°dONLNd•iÔuˆ)e °dONLNdßvlÇÕ(lthat draws user items.
  8572. •*≠¯4¶*≠¯"¶*_
  8573. ˇ·ˇ‚7^    °dONLNdæõl¶ò*$ Listing 7-4°dONLNd õ∞¶)DDrawing application-defiÇp°dONLNd‚õ¶Q)`ned dialog items,
  8574. Courier
  8575. .°dONLNdÛµ*¡í(æ*<PROCEDURE DoUserItem (myDialog: DialogPtr; myItem: Integer);°dONLNd1√<œH+VA°dONLNd3√HœN) R°dONLNd7—N›x+myType:°dONLNdB—ñ›¿)HInteger°dONLNdI—¿›Δ)*;°dONLNdMflNÎx(ËNmyHand:°dONLNdXflñÎ∫)HHandle°dONLNd^fl∫ο)$;°dONLNdbÌN˘x(ˆNmyRect:°dONLNdmÌñ˘¥)HRect;°dONLNdu˚NÑ(N    origPort:°dONLNdÇ˚ñΔ)HGrafPtr;°dONLNdã    *H(*BEGIN°dONLNdí<#®+GetPort(origPort);°dONLNd¶%<1®*SetPort(myDialog);°dONLNdªA<Mê*GetDialogItem(°dONLNd…AêM)TmyDialog, myItem°dONLNdŸAMÜ)`, myType, myHand, myRect)°dONLNdÚAÜMå)ñ;°dONLNdˆ]<i(f<IF myDialog = gPrefsDialog THE°dONLNd]iˆ)¥N°dONLNdkNwT(tNC°dONLNdkTwú) ASE myItem O°dONLNd%kúw¢)HF°dONLNd*y`Öf(Ç`i°dONLNd+yfÖˆ)Exist1Icon..iExist4Icon:°dONLNdCyˆÖ¸)ê °dONLNdIárìx(êrB°dONLNdJáxìä)EGI°dONLNdMáäìê)N°dONLNdTïÑ°ä(ûÑD°dONLNdUïä°¿)    oPlotIcon°dONLNd^ï¿°)6(myRect,°dONLNdfï° )0 GetIcon°dONLNdnï °Ï)0"(kExistID + myItem - iExist1Icon),°dONLNdö£ÃØ“(¨Ãm°dONLNdõ£“Ø8)yDialog, srcCopy)°dONLNd¨£8Ø>)f;°dONLNd≤±rΩx(∫rE°dONLNd≥±xΩÑ)ND°dONLNdµ±ÑΩä) ;°dONLNd∫ø`Àf(»`i°dONLNdªøfÀˆ)Empty1Icon..iEmpty4Icon:°dONLNd”øˆÀ¸)ê °dONLNdŸÕrŸx(÷rB°dONLNd⁄ÕxŸä)EGI°dONLNd›ÕäŸê)N°dONLNd‰€ÑÁä(‰ÑD°dONLNd€äÁ¿)    oPlotIcon°dONLNdÓ€¿Á)6(myRect,°dONLNdˆ€ÁJ)0 GetIcon(kEmpty°dONLNd€JÁb)ZID +°dONLNd    €bÁí) myItem °dONLNd€íÁÏ)0- iEmpty1Icon),°dONLNd*ÈÃı“(ÚÃm°dONLNd+È“ı8)yDialog, srcCopy)°dONLNd<È8ı>)f;°dONLNdC˜Ñä(ÑF°dONLNdD˜ä∫)rameRect°dONLNdL˜∫)0    (myRect);°dONLNdZrx(rE°dONLNd[xÑ)ND°dONLNd]Ñä) ;°dONLNdb`f(`O°dONLNdcfê)THERWIS°dONLNdjêñ)*E°dONLNdp!r-x(*r;°dONLNdt/N;T(8NE°dONLNdu/T;`)ND°dONLNdw/`;ê) ; {CASE}°dONLNdÇK<W®(T<SetPort(origPort);°dONLNdûKWz)¥{restore original port}°dONLNd∂Y*eB(b*END;°dONLNdªql}Ä+BThe °dONLNdøqÄ}º)
  8576. DoUserItem°dONLNd…qº}»)< prR`°dONLNdÃq»}Â) ocedur$¿°dONLNd“qÂ}É)%e is also fairly simple. It makes sur˜ °dONLNd˜qÇ}ı)ùe that the dialog pointer .°dONLNd~läÊ(álpassed to it picks out the PrV°dONLNd.~Êäˆ)zefer °dONLNd2~˜ä”)3ences dialog box. Then it calls the application-defi;°dONLNdf~”äÊ)‹ned .°dONLNdjãlóv(îlprR`°dONLNdlãvóì)
  8577. ocedur$¿°dONLNdrãìóö)e $¿°dONLNdtãöó÷)
  8578. DoPlotIcon$¿°dONLNd~ã÷óÓ)< (defi$¿°dONLNdÑãÓó )ned in $¿°dONLNdãã óa)Listing 5-8 on page $¿°dONLNdüãaóp)V101$¿°dONLNd¢ãpó√)) to draw the appr˜ °dONLNd¥ã¬óÊ)Ropriate .°dONLNdºòl§ô(°l part of an —‡°dONLNd«òô§„)-icon in the item rdONLNdŸò‰§)Kectangle$†°dONLNd·ò    §)%. If tô`°dONLNdÁò§Ü)he emptiness patterns ar™`°dONLNdˇòܧ )le being drawn, .°dONLNd•l±®(Æl
  8579. DoUserItem°dONLNd•®±)< also draws a box arR`°dONLNd,•±Ä)Xound the pattern (by calling R`°dONLNdI•Ä±∂)Ä    FrameRectR`°dONLNdR•∂±Ω)6).ˇ-j@ˇ ˇˇˇˇ@
  8580. ˇ·ˇ‚7^
  8581. 4H\, Palatino&e.3+ä"CHAPTER ”)>7,     Helvetica    ˇˇ—ÚˇÆ(@ä Dialog Boxes4⁄ä˙(‡äUsing Modeless Dialog Boxes
  8582. (‡141
  8583. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8584. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8585.  
  8586.  
  8587.  
  8588.  
  8589.  
  8590. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  8591. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8592. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8593.  
  8594.  
  8595.  
  8596.  
  8597.  
  8598. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˘ˇ
  8599. ˛ˇ˛ˇ    ¸ˇˇ¸˝ˇ˙ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  8600. 4Å4w?òÄ
  8601. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8602. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8603.  
  8604.  
  8605.  
  8606.  
  8607.  
  8608. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˙ˇ    ˇ¸ˇ    ˇ¸ˇ
  8609. ˛ˇ˛ˇˇ˝˛ˇ˛˜    ¸ˇˇ˜˛ˇˇ˝
  8610. ˇˇˇ˛
  8611. ˇˇˇ˛˛˛ˇ˝ˇ˙˙ˇ˜˛˛ˇ˝
  8612. ˇ˛ˇ˛
  8613. ˇ˛ˇ˛˛˛ˇ˝˜ˇ˛ˇ˝
  8614. ˇˇ˛ˇ˛
  8615. ˇˇ˛ˇ˛˚ˇ˛˜˜˜˜˙ˇ     ˇˇˇ     ˇˇˇ     ˇˇˇ
  8616. ˛ˇˇˇˇˇ˜˛˛ˇ˝
  8617. ˇ˛ˇ˛
  8618. ˇ˛ˇ˛˛˛ˇ˝˜
  8619. ˇ˛ˇ˛˛ˇˇ˝˝ˇ¸˛ˇˇ˝
  8620. ˇ˛ˇ˛˛˛ˇ˝
  8621. ˇˇˇ˛
  8622. ˇˇˇ˛    ˇˇˇ˝˜    ˇˇ˝
  8623. ˇˇˇ˛
  8624. ˇˇˇ˛    ˛ˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  8625. kHr4lHr mäm
  8626. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd\äk‰(gäHandling User UÑ°dONLNd\‰kØ)Z Actions in a Modeless Dialog Boxˇˇˇˇˇˇ€r(g7
  8627. .°dONLNd/rä~¶({äThe Vd@°dONLNd4r•~P)%enn Diagrammer application calls its ,
  8628. Courierd@°dONLNdYrP~¬)´DoHandleDialogEventd@°dONLNdlr¬~)r function for each .°dONLNdäã±(àä
  8629. event it rΩ°dONLNdâ±ã›)' etrieves fr≥`°dONLNdî›ãA),om the Event ManagerŒ@°dONLNd®Aã€)d'. Its strategy is to determine if the rø†°dONLNdœ€ã)öeturned .°dONLNd◊åäò)(ïä&event applies to a dialog box. If so, °dONLNd˝å)òõ)üDoHandleDialogEvent°dONLNdåõò)r handles the event and °dONLNd'ôä•é(¢ärR`°dONLNd(ôé•´)eturns R`°dONLNd/ô´•√)TRUER`°dONLNd3ô√•l)( to indicate that it did so; otherwise, R`°dONLNd[ôl•fi)©DoHandleDialogEventR`°dONLNdnôfi•ı)r just r$¿°dONLNduôı•)eturns °dONLNd|¶ä≤®(ØäFALSE°dONLNdŶ®≤o). to indicate that it didn’t handle the event. °dONLNdضo≤ü)« Listing 7-5°dONLNd∫¶ü≤∞)0 defPÄ°dONLNdæ¶∞≤ƒ)ines °dONLNd√≥äø¸(ºäDoHandleDialogEvent°dONLNd÷≥¸ø)r. (See °dONLNd›≥øm)Listing 4-4 on page °dONLNdÒ≥møw)V77°dONLNdÛ≥wøØ)
  8630.  to see when °dONLNd¿äø(…äDoHandleDialogEvent°dONLNd¿¸Ã.)r is called.) 
  8631. ÔH˜4H˜"H_
  8632. ˇ·ˇ‚7^    .°dONLNd!Âä∂(Ìä Listing 7-5°dONLNd-ÂŒt)D(Handling events in a modeless dialog box
  8633. .°dONLNdVˇH ∂(H=FUNCTION DoHandleDialogEvent (myEvent: EventRecord): Boolean;°dONLNdïZl+VAR°dONLNdõl'∫+eventHandled:°dONLNdÆÿ')lBoolean;°dONLNdª2'Œ)Z{did we handle the event?}°dONLNdÿ)l5¢(2l    myDialog:°dONLNdÁ)ÿ5)l    DialogPtr°dONLNd)5)6;°dONLNdÙ7lCñ(@lmyItem:°dONLNd7ÿC)lInteger;°dONLNd
  8634. EHQf(NHBEGIN°dONLNdSZ_fi+eventHandled := FALSE;°dONLNd)aZmˆ*IF FrontWindow <> NIL THEN°dONLNdFol{ +IF IsDialogEvent(myEvent) THEN°dONLNdh}~âò+/IF DialogSelect(myEvent, myDialog, myItem) THEN°dONLNdúãêóÆ+BEGIN°dONLNdßô¢• +eventHandled := TRUE;°dONLNd¬ߢ≥*SetPort(myDialog);°dONLNd€√¢œ\*IF myDialog = gPrefsDialog THEN°dONLNd—¥›“+BEGIN°dONLNdflΔÎ+CASE myItem OF°dONLNd%Ìÿ˘Ä+iEmpty1Radio..iEmpty4Radio: °dONLNdK˚Ín+gEmptyIndex := myItem;°dONLNdj    ÿt(ÿiEmpty1Icon..iEmpty4Icon: °dONLNdéÍ#Ü+gEmptyIndex := myItem - 4;°dONLNd±%ÿ1Ä(.ÿiExist1Radio..iExist4Radio: °dONLNd◊3Í?¬+$gExistIndex := myItem - iEmpty4Icon;°dONLNdAÿMt(JÿiExist1Icon..iExist4Icon: °dONLNd(OÍ[8+gExistIndex :°dONLNd5O8[Ê)N= myItem - (iEmpty4Icon + 4);°dONLNd[]ÿifi(fÿi°dONLNd\]fiiD)GetNextRandomly: °dONLNdwkÍw§+ gStepRandom := NOT gStepRandom;°dONLNdüyÿÖ&(ÇÿiAutoAdjust: °dONLNd∂áÍì§+gAutoAdjust := NOT gAutoAdjust;°dONLNdfiïÿ°D(ûÿiShowSchoolNames: °dONLNd˙£ÍØò+gShowNames := NOT gShowNames;°dONLNd ±ÿΩ>(∫ÿiUseExistImport: ˇ@ˇ ˇˇˇˇ@
  8635. ˇ·ˇ‚7^
  8636. 4*\¯, Palatino&e.3+l"CHAPTER ”)>7,     Helvetica    ˇˇ—ÚˇÆ(@l Dialog Boxes4⁄*˙¯
  8637. (‡*142    )BUsing Modeless Dialog Boxes4^*¿¯,
  8638. Courier
  8639. .°dONLNd\ÃhÜ(eÃgGiveImport := NOT gGiveImport;°dONLNd(j∫v(s∫iSaveVennPrefs: °dONLNdBxÃÑ+ DoSavePrefs;°dONLNdWÜ∫í(è∫    OTHERWISE°dONLNdjîÆ“+;°dONLNds¢®Æ¿(´®END;°dONLNdÄæ® P*DoSetupCtrlValues(myDialog);°dONLNd®æÄ ⁄)ÿ{update values}°dONLNdæÃñÿÆ(’ñEND;°dONLNd«⁄rÊä(„rEND;°dONLNdŒˆ<(ˇ<$DoHandleDialogEvent := eventHandled;°dONLNdÛ*B(*END;°dONLNd¯l(Ä+BThe °dONLNd¸Ä(Ú)DoHandleDialogEvent°dONLNdÚ(é)r" function calls the Dialog Manager=`°dONLNd1è(ò)ù’s =`°dONLNd4ò(Ê)    IsDialogEvent=`°dONLNdAÊ(Ë)N .°dONLNdB)l5u(2l=function to determine whether at the time of the event the frdONLNd)u5Ú(2uontmost window is a dialog .°dONLNdö6lB¥(?lbox. If not, then °dONLNd¨6¥B&)HDoHandleDialogEvent°dONLNdø6&Bh)r just exits and rR`°dONLNd–6hB≥)Beturns the value R`°dONLNd·6≥B—)KFALSER`°dONLNdÊ6—B„). If, .°dONLNdÏClOí(Llhowever冰dONLNdÛCíOÔ)&P, the event did occur while a dialog box was active, then the event might apply .°dONLNdCPl\»(Ylto that dialog box. Tï°dONLNdXP«\d)[!o determine whether it does applyy@°dONLNdyPc\h)ú, y@°dONLNd{Ph\⁄)DoHandleDialogEventy@°dONLNdéP⁄\Ù)r calls °dONLNdï]li»(flthe Dialog Manager=`°dONLNdß]…i“)]’s =`°dONLNd™]“i)     DialogSelect=`°dONLNd∂]ifl)H, function, which handles most of the events .°dONLNd‚jlvo(slrE°dONLNd„jpvÍ)Zelating to a dialog box. For example, if the event is an update or activate event for the .°dONLNd=wlɆ(Äl dialog box, °dONLNdIw†ÉË)4 DialogSelect°dONLNdUwËÉ¢)H* updates or activates the dialog box and rR`°dONLNdw¢Éø)∫eturns R`°dONLNdÜwøÉ›)FALSER`°dONLNdãw›ÉÓ) (to .°dONLNdêÑlêfi(çlindicate that no further pr;‡°dONLNd´Ñflê)socessing is ròÄ°dONLNd∏Ñê+)5equirØ¿°dONLNdΩÑ+ê≠)ed by the calling application)..°dONLNd›ñl¢g(ül9If the event involves an enabled item in the dialog box, °dONLNdñg¢Ø)˚ DialogSelect°dONLNd"ñØ¢µ)H rR`°dONLNd$ñµ¢⁄)    eturns a °dONLNd-£lØñ(¨l
  8640. function rR`°dONLNd7£ñØπ)*    esult of R`°dONLNd@£πØ—)#TRUER`°dONLNdD£—ØÛ)    . In the R`°dONLNdM£ÛØ)"myItemR`°dONLNdS£ØI)$
  8641.  parameterï°dONLNd]£HØ[)1, it rg`°dONLNdc£[ؘ)#eturns the item number of the item ˇˇ¿:°dONLNdÜ∞lº√(πlselected by the userN°dONLNdö∞√º‰)W    . In the ˇˇ@ÆC¸°dONLNd£∞‰º)!myDialogˇˇ¿:C¸°dONLNd´∞ºE)0
  8642.  parameterF÷°dONLNdµ∞EºW)1, it rô™°dONLNdª∞Wºfi) eturns a pointer to the dialog rÌf°dONLNd€∞fiº)áecorøΔ°dONLNdfl∞º˜)d °dONLNd·Ωl…÷(Δlfor the dialog box wherR`°dONLNd¯Ω÷…$)je the event occurr$¿°dONLNd
  8643. Ω$…ò)Ned. In all other cases, the $¿°dONLNd&Ωò…‡)t DialogSelect$¿°dONLNd2Ω‡…‚)H °dONLNd3 l÷ñ(”l
  8644. function rR`°dONLNd= ñ÷≥)*eturns R`°dONLNdD ≥÷—)FALSER`°dONLNdI —÷Ù). When R`°dONLNdP Ù÷<)# DialogSelectR`°dONLNd\ <÷B)H r$¿°dONLNd^ B÷_)eturns $¿°dONLNde _÷w)TRUE$¿°dONLNdi w÷Î), you should do whatever .°dONLNdÇ◊l„ä(‡lis apprÓ†°dONLNdâ◊ä„√)opriate as a rœ@°dONLNdó◊√„˜)9Hesponse to the event involving that item in that particular dialog box; .°dONLNdfl‰lï(Ìl    when it rR`°dONLNdˉï≤))eturns R`°dONLNdÔ‰≤–)FALSER`°dONLNdÙ‰–;), you should do nothing.°dONLNdˆlÄ(ˇlThe °dONLNdˆÄÚ)DoHandleDialogEvent°dONLNd$ˆÚÎ)r9 function uses a very simple technique for handling user .°dONLNd]l‰( lselections of items in the Pr °dONLNdzÂı)yefer∏ °dONLNd~ıC)ences dialog box. ÇÄ°dONLNdêC )N As you can see, it sets the appr˚¿°dONLNd∞ Î)áopriate °dONLNd∏l“(lUapplication global variables for clicks of the radio buttons, and it toggles the apprÛ °dONLNd“Û(“opriate .°dONLNdl)Q(&l4global variables for clicks of the checkboxes. Then °dONLNdIQ)√)ÂDoHandleDialogEvent°dONLNd\√)Ô)r  calls the °dONLNdg*l6∏(3lapplication-defi°dONLNdw*∏6‘)Lned prR`°dONLNd}*‘6Ò)ocedur$¿°dONLNdÉ*Ò6¯)e $¿°dONLNdÖ*¯6^)DoSetupCtrlValues$¿°dONLNdñ*^6Â)f to change the values of those .°dONLNdµ7lCÇ(@lcontr>Ä°dONLNd∫7ÉCW)0ols, turning the radio buttons and checkboxes of–†°dONLNdÍ7WCô)‘f or on, as apprY¿°dONLNd˙7öCæ)C    opriate. ∏`°dONLNd7æCÏ)$ Listing 7-6X†°dONLNd7ÌCÔ)/ .°dONLNdDlP™(Mlgives the defi°dONLNdD™P“)>
  8645. nition of °dONLNd'D“P8)(DoSetupCtrlValues°dONLNd8D8P;)f.
  8646. s*{¯4t*{¯"t*_
  8647. ˇ·ˇ‚7^    .°dONLNd:iltò(ql Listing 7-6°dONLNdFi∞tu)D1Setting the state of radio buttons and checkboxes
  8648. .°dONLNdxÉ*èV(å*2PROCEDURE DoSetupCtrlValues (myDialog: DialogPtr);°dONLNd¨ë<ùN+VAR°dONLNd≤üN´r+count:°dONLNdºüñ´¿)HInteger°dONLNd√ü¿´Δ)*;°dONLNd«≠Nπx(∂NmyType:°dONLNd“≠ñπ¿)HInteger°dONLNdŸ≠¿πΔ)*;ˇ)Ù@ˇ ˇˇˇˇ@
  8649. ˇ·ˇ‚7^
  8650. 4H\, Palatino&e.3+ä"CHAPTER ”)>7,     Helvetica    ˇˇ—ÚˇÆ(@ä Dialog Boxes4⁄ä˙(‡äUsing Modeless Dialog Boxes
  8651. (‡143
  8652. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8653. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8654.  
  8655.  
  8656.  
  8657.  
  8658.  
  8659. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  8660. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8661. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8662.  
  8663.  
  8664.  
  8665.  
  8666.  
  8667. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˘ˇ
  8668. ˛ˇ˛ˇ    ¸ˇˇ¸˝ˇ˙ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  8669. 4Å4w?òÄ
  8670. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8671. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8672.  
  8673.  
  8674.  
  8675.  
  8676.  
  8677. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˙ˇ    ˇ¸ˇ    ˇ¸ˇ
  8678. ˛ˇ˛ˇˇ˝˛ˇ˛˜    ¸ˇˇ˜˛ˇˇ˝
  8679. ˇˇˇ˛
  8680. ˇˇˇ˛˛˛ˇ˝ˇ˙˙ˇ˜˛˛ˇ˝
  8681. ˇ˛ˇ˛
  8682. ˇ˛ˇ˛˛˛ˇ˝˜ˇ˛ˇ˝
  8683. ˇˇ˛ˇ˛
  8684. ˇˇ˛ˇ˛˚ˇ˛˜˜˜˜˙ˇ     ˇˇˇ     ˇˇˇ     ˇˇˇ
  8685. ˛ˇˇˇˇˇ˜˛˛ˇ˝
  8686. ˇ˛ˇ˛
  8687. ˇ˛ˇ˛˛˛ˇ˝˜
  8688. ˇ˛ˇ˛˛ˇˇ˝˝ˇ¸˛ˇˇ˝
  8689. ˇ˛ˇ˛˛˛ˇ˝
  8690. ˇˇˇ˛
  8691. ˇˇˇ˛    ˇˇˇ˝˜    ˇˇ˝
  8692. ˇˇˇ˛
  8693. ˇˇˇ˛    ˛ˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  8694. Courier.°dONLNd\lhñ(elmyHand:°dONLNd \¥hÿ)HHandle°dONLNd\ÿhfi)$;°dONLNdjlvñ(slmyRect:°dONLNd j¥v“)HRect;°dONLNd(xlÑ¢(Ål    origPort:°dONLNd5x¥Ñ‰)HGrafPtr;°dONLNd>ÜHíf(èHBEGIN°dONLNdEîZ†fi+IF myDialog = NIL THEN°dONLNd^¢lƸ+exit(DoSetupCtrlValues);°dONLNdyæZ Δ(«ZGetPort(origPort);°dONLNdñæ  ‡)Δ {save the current graphics port}°dONLNd∏ÃZÿΔ(’ZSetPort(myDialog);°dONLNd’àÿ⁄)Δ{always do this before drawing}°dONLNdˆ⁄ZÊÿ(„ZShowWindow(myDialog);°dONLNdˆZ*IF myDialog = gPrefsDialog THEN°dONLNd1lä+BEGIN°dONLNd:~n+(FOR count := 1 TO kVennPrefsItemCount DO°dONLNdg ê,Æ+BEGIN°dONLNdr.¢:P+GetDialogItem(myDialog, count°dONLNdè.P:Ê)Æ, myType, myHand, myRect)°dONLNd®.Ê:Ï)ñ;°dONLNdØ<¢H®(E¢I°dONLNd∞<®H‰)
  8695. F myType =°dONLNd∫<‰Ht)< ctrlItem + radCtrl THEN°dONLNdŸJ¥V(S¥CASE count OF°dONLNdÓXΔdn+iExist1Radio..iExist4Radio: °dONLNdfÿrn+SetCtlValue(ControlHandle°dONLNd,fnrû)ñ(myHand)°dONLNd4fûr§)0,°dONLNd?tÍÄ(}Í/ORD(gExistIndex = count - (iExist1Radio - 1)));°dONLNdvÇΔén(ãΔiEmpty1Radio..iEmpty4Radio: °dONLNdõêÿún+SetCtlValue(ControlHandle°dONLNd¥ênúû)ñ(myHand)°dONLNdºêûú§)0,°dONLNd«ûÍ™(ßÍ/ORD(gEmptyIndex = count - (iEmpty1Radio - 1)));°dONLNd˝¨¥∏Í(µ¥    OTHERWISE°dONLNd∫ΔΔÃ+;°dONLNd»¥‘Ã(—¥END;°dONLNd ÷¢‚®(fl¢I°dONLNd!÷®‚‰)
  8696. F myType =°dONLNd+÷‰‚t)< ctrlItem + chkCtrl THEN°dONLNdJ‰¥(Ì¥CASE count OF°dONLNd_ÚΔ˛2+iGetNextRandomly: °dONLNdzÿ n+SetCtlValue(ControlHandle°dONLNdìn û)ñ(myHand)°dONLNdõû §)0,°dONLNd© º(  ORD(gStepRandom = TRUE));°dONLNdÀΔ(2(%ΔiShowSchoolNames: °dONLNdÊ*ÿ6n+SetCtlValue(ControlHandle°dONLNdˇ*n6û)ñ(myHand)°dONLNd*û6™)0, °dONLNd8 D∂(A  ORD(gShowNames = TRUE));°dONLNd7FΔR,(OΔiUseExistImport: °dONLNdQTÿ`n+SetCtlValue(ControlHandle°dONLNdjTn`û)ñ(myHand)°dONLNdrTû`§)0,°dONLNdÄb nº(k  ORD(gGiveImport = TRUE));°dONLNd¢pΔ|(yΔiAutoAdjust: °dONLNd∏~ÿän+SetCtlValue(ControlHandle°dONLNd—~näû)ñ(myHand)°dONLNdŸ~ûä§)0,°dONLNdÁå òº(ï  ORD(gAutoAdjust = TRUE));°dONLNdö¥¶Í(£¥    OTHERWISE°dONLNd®Δ¥Ã+;ˇ∏@ˇ ˇˇˇˇ@
  8697. ˇ·ˇ‚7^
  8698. 4*\¯, Palatino&e.3+l"CHAPTER ”)>7,     Helvetica    ˇˇ—ÚˇÆ(@l Dialog Boxes4⁄*˙¯
  8699. (‡*144    )BUsing Modal Dialog Boxes4^*¿¯,
  8700. Courier
  8701. .°dONLNd\ñhÆ(eñEND;°dONLNd    jrvä(srEND;°dONLNdxNÑf(ÅNEND;°dONLNdî<†®(ù<SetPort(origPort);°dONLNd4î†⁄)Δ${restore the previous graphics port}°dONLNdY¢*ÆB(´*END;°dONLNd^∫lΔÄ+BThe °dONLNdb∫ÄΔÊ)DoSetupCtrlValues°dONLNds∫ÊΔÚ)f prR`°dONLNdv∫ÚΔ) ocedur$¿°dONLNd|∫Δ{)e simply calls the Contr˜ °dONLNdî∫zΔπ)kol Manager pr…Ä°dONLNd°∫πΔ÷)?ocedurõ‡°dONLNdß∫÷Δ›)e ˇˇàê°dONLNd©«l”Æ(–l SetCtlValueˇˇÿ0°dONLNd¥«Æ”/)B to set the value of each contr;∞°dONLNd”«0”ü)Çol in the dialog box accorG°dONLNdÌ«ü”¯)oding to the value of .°dONLNd‘l‡•(›lGsome global variable. This makes it easy to toggle checkboxes and to gr‡°dONLNdI‘¶‡¯(›¶oup radio buttons °dONLNd[·lÌX(Íl6in such a way that exactly one radio button in each grà`°dONLNdë·XÌÉ)Ï
  8702. oup is on.
  8703. ˚*    ¯4¸*    ¯°dONLNdú¸lã(lIMPORTÄ°dONLNd¢¸ãõ)ANT
  8704. ˇ·ˇ‚7^
  8705. °dONLNd¶lõ(lFThe strategy for handling dialog box events described in this section °dONLNdÏl˜*  might not be the best or most ef†°dONLNd ¯˛)åfi`°dONLNd˛™))cient strategy for your application. For °dONLNd7l+Ö((la morÄ°dONLNd<Ü+í)=e complete discussion of handling dialog box events, see the °dONLNdy+l7Ô(4lchapter “Dialog Manager” in †¿°dONLNdï+Ô7m)ÉInside Macintosh: Macintosh TÛ@°dONLNd≤+l7à)}oolbox °dONLNdπ7lCî(@l
  8706. Essentials °dONLNd√7ïCó)).,Zapf Dingbatså°dONLNdÕ:úB¢)s
  8707. I*d¯4J*d¯
  8708. t*|¯4u*|¯ v*v˛
  8709. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdœa*t6(o*Uc∞°dONLNd–a7tÍ)sing Modal Dialog BoxesˇˇˇˇˇˇU˛(o7
  8710. °dONLNdËÖlë¬(élRemember that a mW@°dONLNd˘Ö√ë)Wodal dialog boø °dONLNdÖë)?x pi‡°dONLNd
  8711. ÖëÌ)4uts the user into the state or “mode” of being able °dONLNd>ílû˜(õlXto work only inside the dialog box. The user cannot move the dialog box and can dismiss °dONLNdñül´*$it only by clicking its buttons (perχ°dONLNd∫ü´›)î0haps after supplying some necessary information)†°dONLNdÍüfi´‡)fi.
  8712. π*«¯4∫*«¯    °dONLNdÏ∏l√(¿lNote
  8713. ˇ·ˇ‚7^
  8714. °dONLNdÒ≈l—Á*The Dialog Manager also pr¬`°dONLNd ≈Á—){ovides h‡°dONLNd≈—Ö) movable modal dialog boxe…`°dONLNd+≈Ö—â)~s9†°dONLNd,≈ä—å);π†°dONLNd-≈å—ß) these °dONLNd4—l›t(⁄larE°dONLNd6—u›Ì)    e modal dialog boxes that c¿ °dONLNdQ—Ì›¶)x-ontain a title bar so that the user can drag °dONLNd~›lÈ™(Êlthe dialog boxt@°dONLNdå›´È∞)?. F†°dONLNdé›∞È∂)Y °dONLNdè›∂ȶ)2ou should use movable modal dialog boxes whenever °dONLNd¡Èlıü(ÚlDthe user might need to move a modal dialog box to see what it obscurß@°dONLNdÈüı™(Úües °dONLNdıl¢(˛lEor whenever you want allow the user to switch to another application °dONLNdMl* "while the dialog box is displayed.¸Ä°dONLNdx 
  8715. )ôu
  8716. °dONLNdzl‹(lIn general, it’s easier to crF°dONLNdó›€)q:eate and handle simple modal dialog boxes than it is to cr4@°dONLNd—€Ô)˛eate °dONLNd÷l+((l$and handle modeless dialog boxes. ThH °dONLNd˙+)©e¿°dONLNd˚+) ë¿°dONLNd¸+)rV¿°dONLNd˝ +Y)eason is that ü¿°dONLNd Y+Ω)9the Dialog Manager prˇ°dONLNd Ω+‹)dovides °dONLNd',l8ê(5l    special r¿°dONLNd0,ë8Â)%Ooutines that you can call to display alerts and other simple dialog boxes. The .°dONLNd9lE◊(BlDialog Manager also prR`°dONLNdï9◊E    )k ovides the R`°dONLNd†9    EK)2 ModalDialogR`°dONLNd´9KEW)B pr$¿°dONLNdÆ9WEt) ocedur˜ °dONLNd¥9sEfl)e, which you can call to .°dONLNdÕFlR:(Ol.manage all user actions in modal dialog boxes.
  8717. `*n¯4a*n¯°dONLNd¸aliã*IMPORTÄ°dONLNdaãiõ)ANT
  8718. ˇ·ˇ‚7^
  8719. °dONLNdllxw(ulEaõ¿°dONLNdlwxŒ) se of implementatio-‡°dONLNdlœx)Xn is not a suf@°dONLNd)lx)8fi%°dONLNd+lx()cient r†°dONLNd2l(xå)eason for using modal Ñ °dONLNdHlçx´)edialog °dONLNdOxlÑá(Ålboxes ,`°dONLNdUxàÑ€)instead of modeles2 °dONLNdgx€ÑÒ)Ss oneˇ†°dONLNdlxÒÑı)s<†°dONLNdmxˆÑ˚). °dONLNdox˚Ñ)YœÄ°dONLNdpxÑ)oE°dONLNdqxÑ£)"u should avoid using modal dialog °dONLNdìÑlê(çl&boxes except when absolutely necessaryB`°dONLNdπÑê)∞.¬`°dONLNd√á#è))sˇ1ò@ˇ ˇˇˇˇ@
  8720. ˇ·ˇ‚7^
  8721. 4H\, Palatino&e.3+ä"CHAPTER ”)>7,     Helvetica    ˇˇ—ÚˇÆ(@ä Dialog Boxes4⁄ä˙(‡äUsing Modal Dialog Boxes
  8722. (‡145
  8723. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8724. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8725.  
  8726.  
  8727.  
  8728.  
  8729.  
  8730. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  8731. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8732. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8733.  
  8734.  
  8735.  
  8736.  
  8737.  
  8738. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˘ˇ
  8739. ˛ˇ˛ˇ    ¸ˇˇ¸˝ˇ˙ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  8740. 4Å4w?òÄ
  8741. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8742. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8743.  
  8744.  
  8745.  
  8746.  
  8747.  
  8748. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˙ˇ    ˇ¸ˇ    ˇ¸ˇ
  8749. ˛ˇ˛ˇˇ˝˛ˇ˛˜    ¸ˇˇ˜˛ˇˇ˝
  8750. ˇˇˇ˛
  8751. ˇˇˇ˛˛˛ˇ˝ˇ˙˙ˇ˜˛˛ˇ˝
  8752. ˇ˛ˇ˛
  8753. ˇ˛ˇ˛˛˛ˇ˝˜ˇ˛ˇ˝
  8754. ˇˇ˛ˇ˛
  8755. ˇˇ˛ˇ˛˚ˇ˛˜˜˜˜˙ˇ     ˇˇˇ     ˇˇˇ     ˇˇˇ
  8756. ˛ˇˇˇˇˇ˜˛˛ˇ˝
  8757. ˇ˛ˇ˛
  8758. ˇ˛ˇ˛˛˛ˇ˝˜
  8759. ˇ˛ˇ˛˛ˇˇ˝˝ˇ¸˛ˇˇ˝
  8760. ˇ˛ˇ˛˛˛ˇ˝
  8761. ˇˇˇ˛
  8762. ˇˇˇ˛    ˇˇˇ˝˜    ˇˇ˝
  8763. ˇˇˇ˛
  8764. ˇˇˇ˛    ˛ˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  8765. kHr4lHr mäm
  8766. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNd\äk<(gäDisplaying a Modal Dialog Bob®°dONLNd\=kC)≥xˇˇˇˇˇˇ€r)—7
  8767. °dONLNdrä~∏({ä Listing 7-7 @°dONLNd)rπ~)/ shows a standarȆ°dONLNd9r~¬)I+d way to display a modal dialog box. It defiU†°dONLNder√~Ó)¡
  8768. nes the pr“ °dONLNdorÓ~ )+oceduri`°dONLNdur~)e ,
  8769. Courier.°dONLNdwäãΔ(àä
  8770. DoAboutBox°dONLNdÅΔã )<, which is calle°dONLNdë ã1)F    d after t°dONLNdö1ãM)%he use°dONLNd†Mã{) r chooses t°dONLNd´{ãÇ).h°dONLNd¨Çãâ)e !†°dONLNdÆâãë)A!†°dONLNdØëãÆ)bout V‡°dONLNdµ≠ãÙ)enn Diagramme‡°dONLNd¬Ùã˙)Gr .°dONLNdƒåäòé(ïäc@°dONLNd≈åéòø)    ommand frì¿°dONLNdŒå¿ò·)2om the \@°dONLNd’å·ò)! Apple menu.
  8771. ªH√4ºH√"ºH_
  8772. ˇ·ˇ‚7^    °dONLNd·±äº∂(πä Listing 7-7°dONLNḏŒºE)DDisplaying a modal dialog box
  8773. .°dONLNd Àä◊å(‘ä+PROCEDURE DoAboutBox (myWindow: WindowPtr);°dONLNd8ŸúÂÆ+VAR°dONLNd>ÁÆÛ‰+    myWindow:°dONLNdKÁˆÛ2)H
  8774. WindowPtr;°dONLNdXıƉ(˛Æ    myDialog:°dONLNdeıˆ2)H
  8775. DialogPtr;°dONLNdrÆÿ( ÆmyItem:°dONLNd}ˆ&)HInteger;°dONLNdÜä®(äBEGIN°dONLNdçú+,+myWindow := FrontWindow;°dONLNdß-ú9&*IF myWindow <> NIL THEN°dONLNd¡;ÆGå+%DoActivate(myWindow, 1 - activeFlag);°dONLNdÌWúcÚ(`ú9myDialog := GetNewDialog(rAboutDial, NIL, WindowPtr(-1));°dONLNd(eúq&*IF myDialog <> NIL THEN°dONLNdBsÆÃ+BEGIN°dONLNdKÅ¿ç,+SetPort(myDialog);°dONLNdaè¿õ\*DoDefaultButton(myDialog);°dONLNdÄ´¿∑‰*REPEAT°dONLNdãπ“≈™+$ModalDialog(@MyModalFilter, myItem);°dONLNd≥«¿”2(–¿UNTIL myItem = iOK;°dONLNdÀ„¿ÔP*DisposeDialog(myDialog);°dONLNdÁÒ¿˝,*SetPort(myWindow);°dONLNd¸ˇÆ Δ(ÆEND;°dONLNdä¢(äEND;.°dONLNd%ä1r*1When you display a modal dialog box, you should fiø°dONLNd8%r1Ó)Ërst deactivate any existing fr‡°dONLNdV%Ô1)}ont .°dONLNdZ2ä>Æ(;äwindowï°dONLNd`2≠>≤)#. ï°dONLNdb2≤>Δ)The ï°dONLNdf2Δ>)
  8776. DoAboutBoxï°dONLNdp2>)< ï°dONLNdq2>)prg`°dONLNds2>+)
  8777. ocedur9¿°dONLNdy2+>2)e 9¿°dONLNd{22>6)r  °dONLNd|26>”)#etrieves a window pointer to the frfiÄ°dONLNdü2“>)ú ont window °dONLNd™?äK_(Hä.and passes that pointer to the application-defi°dONLNdŸ?_Kû)’ned activate rR`°dONLNdÁ?ûKº)?outine R`°dONLNdÓ?ºK¯)
  8778. DoActivateR`°dONLNd¯?¯K)<. Then °dONLNdˇLäXΔ(Uä
  8779. DoAboutBox°dONLNd    LΔX‡)< calls °dONLNdL‡X() GetNewDialog°dONLNdL(X™)H to open the dialog box specifPÄ°dONLNd:L™Xfi)Ç ied by the r"‡°dONLNdFLfiXı)4esourı@°dONLNdKLÙX)ce ID °dONLNdQYäeΔ(bä
  8780. rAboutDial°dONLNd[YΔe…)<:°dONLNd]pä|®(yäCONST°dONLNdd~úä+rAboutDial = 7000;°dONLNd~>äÏ)¢{resource ID of About dialog}°dONLNdùñä¢î(üäIf °dONLNd†ñ)
  8781. GetNewDialog°dONLNd¨ñ‹¢‚)H rR`°dONLNdÆñ‚¢ˇ)eturns R`°dONLNdµñˇ¢)a dR`°dONLNd∏ñ¢H)ialog pointerR`°dONLNd≈ñH¢ü); whose value is not R`°dONLNdŸñü¢±)WNILR`°dONLNd‹ñ±¢Õ), then R`°dONLNd„ñÕ¢    )
  8782. DoAboutBoxR`°dONLNdÌñ    ¢ )< ˇˇÚ⁄°dONLNdÓ£äØ°(¨äcalls ˇˇÿér⁄°dONLNdÙ£¢ØÃ)SetPortˇˇÚ⁄r⁄°dONLNd˚£ÃØã)*, to establish the new dialog box as the currŒ‰°dONLNd'£ãØ)ø ent drawing port. Then it calls ˇˇ´4°dONLNdG∞äºÁ(πäthe application-defi+4°dONLNd[∞˺)^ned pr®»°dONLNda∞º )ocedur{(°dONLNdg∞ º&)e ˇˇú&\°dONLNdi∞'ºÅ)DoDefaultButtonˇˇ´4&\°dONLNdx∞źÇ)Z —ê°dONLNdy∞Ǻò)(defi—ê°dONLNd~∞òº¥)ned in '¯°dONLNdÖ∞µº‰) Listing 7-8”,°dONLNdê∞‰ºÈ)/) ~`°dONLNdí∞ͺ)
  8783. to draw a ˇ <@ˇ ˇˇˇˇ@
  8784. ˇ·ˇ‚7^
  8785. 4*\¯, Palatino&e.3+l"CHAPTER ”)>7,     Helvetica    ˇˇ—ÚˇÆ(@l Dialog Boxes4⁄*˙¯
  8786. (‡*146    )BUsing Modal Dialog Boxes4^*¿¯
  8787. °dONLNd\lhu(elthì¿°dONLNd\uhÅ)    ick{Ä°dONLNd\Çhì) borΩ†°dONLNd    \ìh≠)der ar⁄†°dONLNd\≠h⁄)Found the default button. This indicates that the user can dismiss the °dONLNdUilu¥(rldialog box by prÙ¿°dONLNdei¥uV)H%essing the Return key or the Enter ke’†°dONLNdäiWu\)£yI°dONLNdãi\u^).
  8788. ò*†¯4ô*†¯"ô*_
  8789. ˇ·ˇ‚7^    °dONLNdçélôò(ñl Listing 7-8°dONLNdôé∞ôŒ)DOutlinin†°dONLNd°éœôÍ)g the dÑ@°dONLNd®éÍô) efault butto    °dONLNd¥éôt)-n of a modal dialog box,
  8790. Courier
  8791. .°dONLNdîl¥å(±l0PROCEDURE DoDefaultButton (myDialog: DialogPtr);°dONLNd˛∂~¬ä+VA°dONLNd∂ä¬ê) R°dONLNdƒê–∫+myType:°dONLNdƒÿ–)HInteger°dONLNdƒ–)*;°dONLNd“êfi∫(€êmyHand:°dONLNd%“ÿfi¸)HHandle°dONLNd+“¸fi)$;°dONLNd/‡êÏ∫(ÈêmyRect:°dONLNd:‡ÿψ)HRect;°dONLNd@Ól˙Ñ(˜lBEGI°dONLNdDÓÑ˙ä)N°dONLNdG¸~“(~GetDialogItem(°dONLNdU¸“ )TmyDialog, iOK°dONLNdb¸ ∂)N, myType, myHand, myRect)°dONLNd{¸∂º)ñ;°dONLNd~
  8792. ~fi(~DoOutlineControl°dONLNdé
  8793. fi)`(myHand)°dONLNdñ
  8794. )0;°dONLNdòl$Ñ(!lEND;°dONLNdù0l<Ä*The °dONLNd°0Ä<⁄)DoDefaultButton°dONLNd∞0⁄<Ê)Z prR`°dONLNd≥0Ê<) ocedur$¿°dONLNdπ0<¢)"e simply calls the application-defi$¿°dONLNd‹0¢<æ)üned pr˜ °dONLNd‚0Ω<⁄)ocedur…Ä°dONLNdË0⁄<·)e °dONLNdÍ=lIÃ(FlDoOutlineControl°dONLNd˙=ÃI—)`; to outline the dialog item whose item number is 1 (identifPÄ°dONLNd5=—IÔ(F—ied by °dONLNd<JlV•(Slthe constant °dONLNdIJ•V∑)9iOK°dONLNdLJ∑V“)). See °dONLNdSJ“VÍ)page °dONLNdXJÍV˘)200°dONLNd[J˘V$)
  8795.  for a defi°dONLNdfJ$VL)+
  8796. nition of °dONLNdpJLV¨)(DoOutlineControl°dONLNdÄJ¨VØ)`.°dONLNdÇ\lht(elA°dONLNdÉ\ths):t this point, the modal dialog box is displayed on the scrR`°dONLNdΩ\shá)ˇeen. R`°dONLNd¬\áhõ)The R`°dONLNdΔ\õh◊)
  8797. DoAboutBoxR`°dONLNd–\◊hŸ)< °dONLNd—iluv(rlprR`°dONLNd”ivuì)
  8798. ocedur$¿°dONLNdŸiìuö)e $¿°dONLNd€iöuœ) loops indefi$¿°dONLNdÁiœuÎ)5nitely    °dONLNdÌiÍuÛ), r€`°dONLNdiÚu>)epeatedly callin€`°dONLNdi>uE)Lg €`°dONLNdiEuK)M€`°dONLNdiKuÅ)    odalDialo€`°dONLNd iÅuá)6g€`°dONLNdiáué) u€`°dONLNdiéuı)ntil the user clicks the °dONLNd(vlÇü(l OK button. °dONLNd3vüÇ≥)3The °dONLNd7v≥Çı) ModalDialog°dONLNdBvıǘ)B °dONLNdCv˜Ç)prR`°dONLNdEvÇ)
  8799. ocedur$¿°dONLNdKvÇ%)e $¿°dONLNdMv%Çô)handles all mouse, keystr˜ °dONLNdfvòÇ‚)soke, and update .°dONLNdvÉlèÏ(ålXevents that occur inside the dialog box until an event involving an enabled dialog item .°dONLNdŒêlúÏ*occurs. When that happens, °dONLNdÈêÏú.)Ä ModalDialog°dONLNdÙê.ú_)B  exits and rR`°dONLNdê_úÚ)1!eturns the dialog item number in .°dONLNd!ùl©À(¶lthe second parameter
  8800. Ä°dONLNd5ùÀ©–)_. ‹‡°dONLNd7ùœ©’)Yù`°dONLNd8ù’©õ),our application can then do whatever is apprJ†°dONLNddùú©Õ)« opriate in r(°dONLNdpùÕ©Ú)1esponse ˇˇip.°dONLNdx™l∂·(≥lto an event in that item. In ˇ˛<Pb°dONLNd∂)v
  8801. DoAboutBoxˇˇipb°dONLNdü™∂")<, ˇ˛<PÀÄ°dONLNd°™"∂d) ModalDialogˇˇipÀÄ°dONLNd¨™d∂ë)B  is called r⁄0°dONLNd∏™ë∂˜)-epeatedly until a click .°dONLNd–∑l√⁄(¿lin the OK button occurs. Ω‡°dONLNdÈ∑⁄√o)n#At that time, the modal dialog is rÏÄ°dONLNd ∑o√ú)ï    emoved fr$ °dONLNd∑ù√ ).
  8802. om the scrΩ@°dONLNd∑ √Ÿ)-een!‡°dONLNd"∑⁄√‹),°‡°dONLNd#∑‹√Ò) and .°dONLNd(ƒl–®(Õl
  8803. DoAboutBox°dONLNd2ƒ®–¬)< calls °dONLNd9ƒ¬–Ï)SetPort°dONLNd@ƒÏ–˝)* to rR`°dONLNdEƒ˝–()
  8804. einstate tR`°dONLNdOƒ(–õ)+he original drawing port.
  8805. ı*¸¯4ˆ*¸¯ ˜l˜¯
  8806. ˇ·ˇ‚7^ˇˇ‹..ˇ◊°dONLNdiÊlıÑ(ÒlDefi¯X°dONLNdmÊÑıW)#ning a Modal Dialog Filter Functionˇˇˇˇˇˇ€r(Ò7
  8807. .°dONLNdë¸l≠(lThe actions of °dONLNd†¸≠Ô)A ModalDialog°dONLNd´¸Ô˚)B arR`°dONLNdƸ˚B) e guided by the R`°dONLNdæ¸Bà)Gmodal dialog fiR`°dONLNdÕ¸àø)Flter functionR`°dONLNd⁄¸ø‡)7 whose °dONLNd·    lÇ(laddrR`°dONLNd    Ç‹)ess is passed in its fiR`°dONLNd¸    ‹)Zrst parameterï°dONLNd        P)=. If you pass ï°dONLNd    Pb)7NIL6†°dONLNd    bâ)     as the fi6†°dONLNd$    âÊ)'rst parameter to the ˇˇ9|°dONLNd9l"Æ(l ModalDialogˇˇΩ‘°dONLNdDÆ"π)B pr4°dONLNdG∫"◊) ocedur‚î°dONLNdM÷"@)e, you’ll get the standar¨D°dONLNdfA"g)k    d event f¯l°dONLNdog"ï)& iltering prà†°dONLNdzñ"˜)/ovided by the Dialog °dONLNdè#l/î(,lManager¬†°dONLNdñ#ì/œ)'. The standarï°dONLNd£#œ/˘)<    d event fiï°dONLNd≠#˘/6)*lter function rg`°dONLNdº#6/S)=eturns g`°dONLNd√#S/k)TRUEg`°dONLNd«#k/û)  and causes g`°dONLNd”#û/‡)3 ModalDialogg`°dONLNdfi#‡/Ì)B to .°dONLNd‚0l<o(9lrE°dONLNd„0p<≤)Geturn item number 1 (the number of the default button) when the user prû‡°dONLNd*0≤<€(9≤
  8808. esses the °dONLNd4=lI”(FlReturn or the Enter keyÄ°dONLNdK=”I’)g.°dONLNdMOl["(Xl(For most modal dialog boxes, the standar: °dONLNduO#[n)∑d modal dialog fi!`°dONLNdÜOo[‰)Llter function is too simple. °dONLNd£\lhr(elY@Ä°dONLNd§\rhÍ)our application should defig‡°dONLNdø\ÍhA)xne a modal dialog fiN`°dONLNd”\Bh˜)X*lter function that performs the following °dONLNd˝iluÑ(rltasks:,Zapf Dingbats°dONLNdlÜq*n
  8809. .°dONLNd|xà|) rR`°dONLNd||àï)eturn R`°dONLNd|ïà≠)TRUER`°dONLNd|≠à™): and the item number for the default button if the user pr$¿°dONLNdK|™àÙ)˝esses the Return .°dONLNd\àxîä(ëxkey Á‡°dONLNd`àäîï)or –°dONLNdcàñî¶) the -`°dONLNdgàßî—)    Enter key°dONLNdqùl§q(£ln
  8810. .°dONLNdsöx¶|) rR`°dONLNdtö|¶ï)eturn R`°dONLNdzöï¶≠)TRUER`°dONLNd~ö≠¶ß)9 and the item number for the Cancel button if the user pr$¿°dONLNd∑ö߶Ú)˙esses the Escape .°dONLNd»¶x≤0(Øx%key or the Command-period combinationˇ,‡@ˇ ˇˇˇˇ@
  8811. ˇ·ˇ‚7^
  8812. 4H\, Palatino&e.3+ä"CHAPTER ”)>7,     Helvetica    ˇˇ—ÚˇÆ(@ä Dialog Boxes4⁄ä˙(‡äUsing Modal Dialog Boxes
  8813. (‡147
  8814. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8815. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8816.  
  8817.  
  8818.  
  8819.  
  8820.  
  8821. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  8822. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8823. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8824.  
  8825.  
  8826.  
  8827.  
  8828.  
  8829. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜˘ˇ
  8830. ˛ˇ˛ˇ    ¸ˇˇ¸˝ˇ˙ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  8831. 4Å4w?òÄ
  8832. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8833. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8834.  
  8835.  
  8836.  
  8837.  
  8838.  
  8839. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˙ˇ    ˇ¸ˇ    ˇ¸ˇ
  8840. ˛ˇ˛ˇˇ˝˛ˇ˛˜    ¸ˇˇ˜˛ˇˇ˝
  8841. ˇˇˇ˛
  8842. ˇˇˇ˛˛˛ˇ˝ˇ˙˙ˇ˜˛˛ˇ˝
  8843. ˇ˛ˇ˛
  8844. ˇ˛ˇ˛˛˛ˇ˝˜ˇ˛ˇ˝
  8845. ˇˇ˛ˇ˛
  8846. ˇˇ˛ˇ˛˚ˇ˛˜˜˜˜˙ˇ     ˇˇˇ     ˇˇˇ     ˇˇˇ
  8847. ˛ˇˇˇˇˇ˜˛˛ˇ˝
  8848. ˇ˛ˇ˛
  8849. ˇ˛ˇ˛˛˛ˇ˝˜
  8850. ˇ˛ˇ˛˛ˇˇ˝˝ˇ¸˛ˇˇ˝
  8851. ˇ˛ˇ˛˛˛ˇ˝
  8852. ˇˇˇ˛
  8853. ˇˇˇ˛    ˇˇˇ˝˜    ˇˇ˝
  8854. ˇˇˇ˛
  8855. ˇˇˇ˛    ˛ˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,Zapf Dingbats°dONLNd_äfè(eän
  8856. .°dONLNd\ñh—) allow backgrR`°dONLNd\—h3);ound applications to r$¿°dONLNd$\3h™)beceive update events and r˜ °dONLNd>\©h¬)veturn ,
  8857. Courier˜ °dONLNdD\¬h‡)FALSE˜ °dONLNdI\‡h)  when they .°dONLNdThñt°(qñdo°dONLNdW}äÑè(Éän
  8858. .°dONLNdYzñÜö) rR`°dONLNdZzöÜ≥)eturn R`°dONLNd`z≥Ü—)FALSER`°dONLNdez—Ü{)' for all other events that your event fiR`°dONLNdçz{Ü—)™lter doesn’t handle.°dONLNd°ãäó∏(îä Listing 7-9 @°dONLNd¨ãπó¡)/ dº°dONLNdÆã¡óÀ)efií`°dONLNd±ãÃó() nes a modal dialog fiµ‡°dONLNdΔã(óÚ)\0lter function that accomplishes these tasks. In .°dONLNdˆò䧖(°äaddition, the fi°dONLNdò–§    )Flter function °dONLNdò    §W)9MyModalFilter°dONLNd!òW§)N' handles any disk-inserted events that .°dONLNdH•ä±X(Æä.occur while the modal dialog box is displayed.
  8859. ‘H‹4’H‹"’H_
  8860. ˇ·ˇ‚7^    °dONLNdw ä’∂*$ Listing 7-9°dONLNdÉ Œ’‘)DA0°dONLNdÑ ‘’) modal dialog fiч°dONLNdî ’>)<lter function
  8861. .°dONLNd¢‰HÚ(ÌHGFUNCTION MyModalFilter (myDialog: DialogPtr; VAR myEvent: EventRecord; °dONLNdÛÚͲû+¢VAR myItem: Integer): Boolean;°dONLNdZ f(    ZVA°dONLNdf l) R°dONLNdlñ+myType:°dONLNd$¥fi)HInteger°dONLNd+fi‰)*;°dONLNd/l(ñ(%lmyHand:°dONLNd:¥(ÿ)HHandle°dONLNd@ÿ(fi)$;°dONLNdD*l6ñ(3lmyRect:°dONLNdO*¥6“)HRect;°dONLNdW8lDê(AlmyKey:°dONLNda8¥D“)HChar;°dONLNdiFlR¢(Ol    myIgnore:°dONLNdvF¥R‰)HLongInt;°dONLNdTH`f(]HBEGIN°dONLNdÜbZn‰+MyModalFilter := FALSE;°dONLNd©b2n˛)ÿ"{assume we don't handle the event}°dONLNdŒ~Zä“(áZCASE myEvent.what OF°dONLNdÂålòÆ+ updateEvt: °dONLNdÙö~¶ú+BEGIN°dONLNd˛®ê¥§+.IF WindowPtr(myEvent.message) <> myDialog THEN°dONLNd2∂¢¬Ä+%DoUpdate(WindowPtr(myEvent.message));°dONLNdgƒ –º+~{update the window behind}°dONLNdÖ“~fiñ(€~END;°dONLNdå‡lÏÿ(ÈlkeyDown, autoKey: °dONLNd¢Ó~˙ú+BEGIN°dONLNd¨¸ê¬+3myKey := char(BAnd(myEvent.message, charCodeMask));°dONLNdÂê$™*/{if Return or Enter pressed, do default button}°dONLNd&ê2û*-IF (myKey = kReturn) OR (myKey = kEnter) THEN°dONLNdL4¢@∫+BEGI°dONLNdP4∫@¿)N°dONLNdXB¥N(K¥GetDialogItem(°dONLNdfBNV)TmyDialog, iOK°dONLNdsBVNÏ)N, myType, myHand, myRect)°dONLNdåBÏNÚ)ñ;°dONLNdîP¥\V(Y¥HiliteControl(ControlHandle°dONLNdØPV\Ü)¢(myHand)°dONLNd∑PÜ\§)0, 1);°dONLNd«^¸jÚ(g¸){make button appear to have been pressed}°dONLNd˜l¥xh(u¥Delay(kVisualDelay, myIgnore);°dONLNdz¥ÜV*HiliteControl(ControlHandle°dONLNd7zVÜÜ)¢(myHand)°dONLNd?zÜܧ)0, 0);°dONLNdKà¥î8(ë¥MyModalFilter := TRUE;°dONLNdnñ¥¢*myItem := iOK;°dONLNdǧ¢∞∫(≠¢END;ˇÄ@ˇ ˇˇˇˇ@
  8862. ˇ·ˇ‚7^
  8863. 4*\¯, Palatino&e.3+l"CHAPTER ”)>7,     Helvetica    ˇˇ—ÚˇÆ(@l Dialog Boxes4⁄*˙¯
  8864. (‡*148    )BUsing Modal Dialog Boxes4^*¿¯,
  8865. Courier
  8866. .°dONLNd\rhÜ(er.{if Escape or Cmd-. pressed, do Cancel button}°dONLNd3jrvÍ*IF (myKey = kEscape)°dONLNdMxÑÑ+OR ((myKey = kPeriod)°dONLNdjÜ®í»+$0AND (BAnd(myEvent.modifiers, CmdKey) <> 0)) THEN°dONLNd†îцú(ùÑBEGI°dONLNd§îú†¢)N°dONLNd¨¢ñÆÍ(´ñGetDialogItem(°dONLNd∫¢ÍÆP)TmyDialog, iCancel°dONLNdÀ¢PÆÊ)f, myType, myHand, myRect)°dONLNd‰¢ÊÆÏ)ñ;°dONLNdÏ∞ñº8(πñHiliteControl(ControlHandle°dONLNd∞8ºh)¢(myHand)°dONLNd∞hºÜ)0, 1);°dONLNd æfi ‘(«fi){make button appear to have been pressed}°dONLNdPÃñÿJ(’ñDelay(kVisualDelay, myIgnore);°dONLNdu⁄ñÊ8*HiliteControl(ControlHandle°dONLNdê⁄8Êh)¢(myHand)°dONLNdò⁄hÊÜ)0, 0);°dONLNd§ËñÙ(ÒñMyModalFilter := TRUE;°dONLNd¡ˆñ*myItem := iCancel;°dONLNdŸÑú(ÑEND;°dONLNd·`x(`END;°dONLNdË N,Ñ()N    diskEvt: °dONLNdı.`:~+BEGIN°dONLNdˇ<rH+DoDiskEvent(myEvent);°dONLNdJrVˆ*MyModalFilter := TRUE;°dONLNd9J&V⁄)¥{show we've handled the event}°dONLNd[X`dx(a`END;°dONLNdbfNrÑ(oN    OTHERWISE°dONLNdot`Äf+;°dONLNdrÇ<é~(ã< END; {CASE}°dONLNd~ê*ú<(ô*END°dONLNdÅê<úB);°dONLNdÉ®l¥+0An i°dONLNdᮥë)nterR`°dONLNdã®ë¥œ)esting part of R`°dONLNdö®œ¥)>MyModalFilterR`°dONLNdß®¥q)N is the way it inter$¿°dONLNdª®q¥Î)Tcepts key-down events and .°dONLNd’µl¡Ò(æl[translates them into button clicks. When, for instance, it detects that the Return key was ˇˇnΔ.°dONLNd0¬lŒv*prR`°dONLNd2¬vŒ≥)
  8867. essed, it calls ˇ˛LRû≤°dONLNdB¬≥Œ)=GetDialogItemˇˇnΔû≤°dONLNdO¬Œ)N to rNû°dONLNdT¬ŒÄ)etrieve a handle to the fix|°dONLNdn¬ÄŒ¯)orst item in the item list (by °dONLNdåœl€(ÿl!convention, the OK button). Then °dONLNd≠œ€Q)óMyModalFilter°dONLNd∫œQ€k)N calls °dONLNd¡œk€π)HiliteControl°dONLNdŒœπ€ˆ)N to invert the ˇˇÃðdONLNd›‹lË(Âl'state of the button, waits for a specifiî°dONLNd‹Ë®)ß#ed number of ticks, and then calls ˇˇfd≥(°dONLNd(‹®Ëˆ)ïHiliteControlˇˇÃÃ≥(°dONLNd5‹ˆË˜)N .°dONLNd6Èlı¨(Úlonce again to rFÄ°dONLNdEÈ≠ı¬)Aestor °dONLNdJȬın)+e the button to its original state. FinallyÖ °dONLNduÈnı )¨, it sets the function rÊÄ°dONLNdçÈ ıı)\
  8868. esult and .°dONLNdóˆl⁄(ˇlthe variable parameter °dONLNdƈ⁄˛)nmyItem°dONLNd¥ˆ˛)$, thus informing the calling rR`°dONLNd“ˆı)Åoutine that the event was .°dONLNdÏlì( lhandled.ˇN@ˇ ˇˇˇˇ@
  8869. ˇ·ˇ‚7^
  8870. 4⁄∫˙,     Helvetica    .(‡∫Contents, Palatino
  8871. (‡149    3, Ã(#∫CHAPTER ßí)h8
  8872. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8873. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8874.  
  8875.  
  8876.  
  8877.  
  8878.  
  8879. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  8880. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8881. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8882.  
  8883.  
  8884.  
  8885.  
  8886.  
  8887. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜
  8888. ˛ˇˇˇˇˇ˙ˇ     ˇˇˇ˙ˇ
  8889. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜ˇˇˇˇˇˇ(JH
  8890. Figure 8-0*     Listing 8-0*    T)able 8-0
  8891. zH,
  8892. 4zH, H°dONLNd∫*˘+m Contentsˇˇˇˇˇˇ
  8893. ˇ·ˇ‚7^ˇˇ∫Ρ◊(qH8°dONLNd]∫y    )rMenus
  8894. °dONLNd;∫Gˆ*” About Menusb@°dONLNd; G)Q151°dONLNd H∫T≈(Q∫Cr\°dONLNd"H≈T) eating MenusÖ@°dONLNd0HT$)P152°dONLNd4Uƒaœ(^ƒCr\°dONLNd6UœaÏ) eating 0‡°dONLNd=UÌa)a Menu Rˆ@°dONLNdEUa/)*esour>Ä°dONLNdJU0a9)cex`°dONLNdNUMa\)152°dONLNdRbƒnœ(kƒCr\°dONLNdTbœnÏ) eating 0‡°dONLNd[bÌn)) a Menu Bar Rц°dONLNdgb)nA)<esourÇ°dONLNdlbAnJ)ce¿°dONLNdpb_nn)154°dONLNdtoƒ{e(xƒ!Setting Up the Menu Bar and Menuse°dONLNdóoz{â)∂154°dONLNdõ|∫à˚(Ö∫ Handling Men°dONLNdß|˚à&)A    u Choicesƒ@°dONLNd≤|:àI)?156°dONLNd∂â∫ï (í∫Handling Keyboarÿ°dONLNdΔâ ïH)Rd Equivalentsµ‡°dONLNd’â]ïl)Q160°dONLNdŸñ∫¢(ü∫Adjusting Menus]Ä°dONLNdÍñ¢*)a161ˇJ@ˇ ˇˇˇˇ@
  8895. ˇ·ˇ‚7^
  8896. 4^*¿¯ˇ8~@ˇ ˇˇˇˇ@
  8897. ˇ·ˇ‚7^, Palatino&e.3+ä"CHAPTER ”)>8
  8898. 4⁄ä˙,     Helvetica    (‡ä About Menus
  8899. (‡151
  8900. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8901. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8902.  
  8903.  
  8904.  
  8905.  
  8906.  
  8907. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  8908. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8909. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8910.  
  8911.  
  8912.  
  8913.  
  8914.  
  8915. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜
  8916. ˛ˇˇˇˇˇ˙ˇ     ˇˇˇ˙ˇ
  8917. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  8918. 4€4—?òÄ
  8919. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8920. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8921.  
  8922.  
  8923.  
  8924.  
  8925.  
  8926. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  8927. ˛ˇˇˇˇ
  8928. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜    ˛ˇˇ˛
  8929. ˛ˇˇˇˇ
  8930. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜    ˇˇ—ÚˇÆ°dONLNd8äC§(@äMenusˇˇˇˇˇˇ≠>(@8
  8931. °dONLNd\ähfi(eäJThis chapter describes how your application can use the Menu Manager to crÏ °dONLNdP\fih(efi    eate and °dONLNdYiäu¸(rämanage menus. Menus prL¿°dONLNdoi˝ut)sovide a simple and standar`°dONLNdâiuu)x!d method for the user to view or °dONLNd™väDZ(ä    choose frL °dONLNd≥v≤Ç∫)(;om a list of commands and settings that your application pr7‡°dONLNdÓv∫ǯ(∫ovides. Every °dONLNd¸Éäè(åäYMacintosh application that has a user interface should support pull-down menus (that is, °dONLNdUêäú:*&menus that the user “pulls down” by prïÄ°dONLNd{ê:ú)∞0essing the mouse button when the cursor is over °dONLNd´ùä©(¶ä the menu title in the menu bar).°dONLNdÃØäª*This chapter shows how to,Zapf Dingbats°dONLNdÊ≈äÃè*n
  8932. °dONLNdˬñŒû) crµ@°dONLNdͬûŒ)eate menu and menu bar r#Ä°dONLNd¬Œ+)uesourk¿°dONLNd¬+Œ8)ces°dONLNd ◊äfiè(›än
  8933. °dONLNd‘ñ‡Ã) open those rÁÄ°dONLNd‘lj)6esour/¿°dONLNd‘‡^)ces to display the menu bar°dONLNd:Èäè(Ôän
  8934. °dONLNd<ÊñÚ-) "handle user clicks in the menu bar°dONLNd_˚äè(än
  8935. °dONLNda¯ñ≈)
  8936. handle use~@°dONLNdk¯ΔÙ)0 r choices o¸¿°dONLNdv¯Ù-). f menu items°dONLNdÉäè(än
  8937. °dONLNdÖ
  8938. ñ⁄) handle keyboarÄ°dONLNdì
  8939. €q)Ed equivalents of menu commands°dONLNd≤ä&è(%än
  8940. °dONLNd¥ñ() enable and disable menu items°dONLNd“-ä9(6äMost Macintosh applications pr䆰dONLNd-9C)å    ovide mor†°dONLNd˘-D9ˇ).,e menu handling than is illustrated in this °dONLNd%:äF´(Cächapter°dONLNd,:´F)!M. For example, you might want to use pop-up menus in a window or dialog box. °dONLNdyGäS(PäXFor a complete description of the capabilities of the Menu Manager and for code samples °dONLNd—Tä`œ*illustrating morðdONLNd·Tœ`)Ee advanced men̆°dONLNdÔT`&)Hu-h°dONLNdÚT'`)3andling techniques, see the chapter “Menu Manager” °dONLNd%aämï(jäin π¿°dONLNd(aïm) Inside Macintosh: Macintosh T @°dONLNdEamW)~oolbox Essentials—@°dONLNdVaWmY)D.
  8941. tHè4uHè
  8942. üHß4†Hß °H°
  8943. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdXåHü´(öH About MenusˇˇˇˇˇˇU˛(ö8
  8944. °dONLNdd∞äºë(πäA∫†°dONLNde∞ëºì) :†°dONLNdf∞îºÆ)menuU¿°dONLNdj∞ƺü)9 is a user interface element that your application can crp‡°dONLNd£∞üº
  8945. )Òeate to allow the user to °dONLNdΩΩä…˘(Δäview or choose an item fr˝@°dONLNd÷Ω˘…ˆ)o8om a list of commands and options that your application °dONLNd ä÷ì(”äprG °dONLNd î÷`)
  8946. -ovides. For example, the sample application VU°dONLNd= _÷∂)Àenn Diagrammer pr °dONLNdN ∑÷˙)Xovides a menu °dONLNd\◊ä„∏(‡ä
  8947. (shown in 9‡°dONLNdf◊π„—)/Figur †°dONLNdk◊—„Â)e 8-1™ °dONLNdp◊„–)5) that contains a list of commands for manipulating Vx¿°dONLNd•◊–„)Îenn diagrams.
  8948. H4H"H]
  8949. ˇ·ˇ‚7^    °dONLNd≥˚ä¥(ä
  8950. Figure 8-1°dONLNdæ˚Ó)BA0°dONLNdø˚“0) typical pull-down menu
  8951. °dONLNd◊àäî(ëä This kind of menu is known as a ú`°dONLNd˜àîk)ípull-down menu, °dONLNdàlî)P# because the user “pulls down” the °dONLNd)ïä°–(ûämenu by clickin°dONLNd8ï—°‹)Gg tXÄ°dONLNd;ï‹°È) he sÄ°dONLNd>ïÈ°)
  8952. menu title^ °dONLNdHï°?)/     (the wor ‡°dONLNdQï@°T)(d “VŸ°dONLNdUïS°π)enn” in the menu bar). ¬`°dONLNdlïπ°¿)fA˝°dONLNdmï¿°) pull-down menu °dONLNd}¢äÆ=(´ä(always has associated with it one or moré¿°dONLNd•¢=ÆD)≥e ÿ`°dONLNdߢDÆy)
  8953. menu itemso °dONLNd±¢zÆ|)6,Ô °dONLNd≤¢|ÆÇ) r4 °dONLNd¥¢ÉÆ)ectangles containing text and °dONLNd“Øäªπ(∏äEother characteristics that identify a command that the user can choos√°dONLNdØπª√(∏πe tO°dONLNd؃ª) o perform an 
  8954. ÑqòÄÖëHHKÜLˇˇˇˇˇˇÖëãnÈ˚ˇ¿Ù˚ˇ¿Ù˚ˇ¿Ù˚ˇ¿Ù    ˇÃ˝ˇ¿Ù    ˇÃ˝ˇ¿Ù
  8955. ˇÃ·¡¡ˇ¿Ù    ˇ˝Ãˇ¿Ù    ˇ˝Ãˇ¿Ù
  8956. ˇÃ¿ÃÃˇ¿Ù
  8957. ˇÃœÃÃˇ¿Ù
  8958. ˇÕŒÃÃˇ¿Ù
  8959. ˇ√·ÃÃˇ¿Ù˚ˇ¿Ù˚ˇ¿Ù˚ˇ¿Ù˚ˇ¿Ù˚ˇ¿ÙÔˇÄÒ@ÄÒ¿ÄÒ‡Äx¿Ģc¡‡ă¿ĢîôŇÄ¿¯xqò˘îõ‡Ä¿ÃÃ…∞˘‡Ä¿Ãᇢ‡Ŀø¡¿˘‡Ŀÿ¡‡˘îõ‡ăÃ…∞˘îôŇÄxÃxqò˘c¡‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄqIJ‡¿˛c‡
  8960. Ä…Äê˝îòŇÄ¡ÒôÅÅ„3<«èÄîò‡Ä·˛ôÅ√33Ãÿ‡Äq˛ôÄ„33ÃÿŇÄ9˛ôÄs33ÃÿŇIJôIJ3    ÃÿîôŇÄ˝ô˛3    ÃÿîôŇÄqòÒ˛·„ «å¿c‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡Äx¿ˆc‡ă¿ˆîôŇÄ¿«áçĢîôŇĿûŒ¯ŇĿëï‡Ä¿œÃïŇĿà ïîôŇăÃLïîôŇÄx«áïc‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡Äx` Ä Ä¿˛‡ ă`0Ä @˝‡Ä¿x8èûè<œá«‡ Ä¿Ã`<ôôå Δ˛ÃćċÃ`.ôôååΔÃÃŒ‡Äø`'üè œΔÃë‡Äÿ`#òåÃÃÃ√ćÄÃ`!òôåÃFÃÅćÄxx0 èÜáÉ Ã««‡
  8961. ÄÛ¿‡ ÄÙ¿‡ ÄÙćÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡Äx¸ÃÃ Δ˝‡Äøÿ ˝‡ÄÃp··√ÄÃxÃ|œ3˛‡ÄÃ…ì3&@ÃåÃÃΔ3˛‡ĸ·√3áÃ|ÃÃΔ3˛‡ÄÃp„Ò√Ä˝ÃΔ3˛‡ÄÃ8s·¿˝ÃΔ3˛‡ÄÃô3d¿»˛ÃΔ3˛‡ÄÃp··√Ä|Ã|√˛‡ Äı˛‡ Äı#˛‡ Äı˛‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡’U‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡į‡¯cŇÄÃįîôŇ Äß„«çû><8˛îôŇ ÄÄ1åŒ332fd˛Ň į√1åÃ330fp˛‡ Ä¿√ÒèÃ?30~8˛‡ Ä¿√å 030`˛î܇Ŀ√åL132bLf`î܇Ŀ¡·áå3<8f`c‡ÄÒ‡ÄÒ‡ÄÒ‡ÄÒ‡Ôˇ‡ˇ‡ˇî@ˇ ˇˇˇˇ@
  8962. ˇ·ˇ‚7^
  8963. 4*\¯, Palatino&e.3+l"CHAPTER ”)>8,     Helvetica    ˇˇ—ÚˇÆ(@lMenus4⁄*˙¯
  8964. (‡*152    )BCreating Menus4^*¿¯
  8965. °dONLNd\lhÊ(elaction. The menu shown in ˘¿°dONLNd\Êh˛)zFigurÃÄ°dONLNd\˛h)e 8-1j°dONLNd$\h®)! contains six menu items and one °`°dONLNdE\®h…)ïdividerÛ`°dONLNdL\…hı)!  (the gray °dONLNdWilufl(rlline used to separate the fi>†°dONLNdsi‡uÛ)trst fi=`°dONLNdyiÙu") ve items frÀÄ°dONLNdÑi"u).0om the last one). In addition, four of the menu °dONLNd¥vlÇŸ(litems in that menu have Æ°dONLNdÃvŸÇ<)mkeyboard equivalents°dONLNd‡v<Ç€)c$ associated with them. The user can °dONLNdÉlèˇ(ålinvoke the menu command by pr⁄Ä°dONLNd!ɡèB)ìessing the appr†°dONLNd0ÉCè˜)D)opriate combination of characters on the °dONLNdYêlúè(ôlkeyboar*°dONLNd`êêúC)$(d. For example, the user can make the PrØÄ°dONLNdàêCúS)≥efer[†°dONLNdåêTúÿ)ences dialog box appear by pr¢¿°dONLNd©êÿúˆ)Ñessing °dONLNd∞ùl©≠(¶lthe combinatiox¿°dONLNdæùÆ©Ω)Bn C· °dONLNd¡ùΩ©Ô)ommand-Yœ`°dONLNd…ùÓ©)1.
  8966. ∑*≈¯4∏*≈¯    °dONLNdÀ∂l¡(ælNote
  8967. ˇ·ˇ‚7^
  8968. °dONLNd–√lœÌ*This chapter shows how to cr¸¿°dONLNdÏ√Ìœõ)Å$eate and handle pull-down menus onlyÌ@°dONLNd√öœü)≠. °dONLNdœl€ê(ÿlThe worM@°dONLNdœë€Ú)%d “menu” should therꆰdONLNd-œÚ€)aeforˆ°dONLNd1œ€©)#e be understood to mean “pull-down °dONLNdT€lÁå(‰lmenu.”,Zapf Dingbatsv °dONLNdcfiíÊó)&u
  8969. °dONLNdeÏl¯œ(ılThe Menu Manager pr,@°dONLNdxÏ–¯Û)dovides ró¿°dONLNdÄÏÛ¯l)#outines that allow you to crÉ`°dONLNdúÏl¯”)yeate your application’s íÄ°dONLNd¥Ï”¯Ô)gmenu °dONLNdπ˘lz(lbar`°dONLNdº˘{Æ)
  8970.  and menus†°dONLNdΔ˘Ø±)4,ü†°dONLNd«˘±‰)E and to handle user actions in the menu bar and in individual menus. °dONLNd lr(lY@Ä°dONLNdr£)ou’ll call th©‡°dONLNd£ß)1esÄ°dONLNd®∑)se rø °dONLNd∑Δ):outines when you detect that a mouse-down event has occurr\‡°dONLNdY«Ô(«
  8971. ed in the °dONLNdclÉ(l=menu bar or when you detect that the user has typed a keyboar‡°dONLNd†ÉÎ(Éd equivalent of a menu °dONLNd∑ l,ù()l    command. Õ@°dONLNd¿ ù,£)1Yç¿°dONLNd¡ £,‰)Gou’ll also call the Menu Manager to perform other operations on menus, °dONLNd-l9©(6lEsuch as changing menu item text or enabling and disabling menu items.°dONLNdN?lKZ*6All Macintosh applications should support at least thrø‡°dONLNdÑ?ZKá)Ó
  8972. ee standar†°dONLNdé?àK√).d menus: the RÄ°dONLNdõ?√K‡);Apple °dONLNd°LlXÿ(UlRmenu, the File menu, and the Edit menu. In addition, you’ll want to support other °dONLNdÛYleI*.menus that contain commands and options specifiu‡°dONLNd"YJeƒ)fic to your application. The V+`°dONLNd>Yƒe÷)zenn °dONLNdBflr(ol;Diagrammer application supports only one application-specifi∫ °dONLNd~fr‰(oc menu along with the °dONLNdîsly(|lthrX¿°dONLNdósy¶)
  8973. ee standarùÄ°dONLNd°s¶Œ)-d menus.
  8974. Ü*°¯4á*°¯
  8975. ±*π¯4≤*π¯ ≥*≥˛
  8976. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd™û*±;(¨*CrJ9°dONLNd¨û<±ù) eating MenusˇˇˇˇˇˇU˛(¨8
  8977. °dONLNdπ¬lŒ–(ÀlThe easiest way to defi‡°dONLNd–¬—Œ÷)en’@°dONLNd—¬÷ŒÊ)e mÚ‡°dONLNd‘¬ÊŒP)enu titles and commandŸ °dONLNdͬQŒZ)ks i~Ä°dONLNd̬[Œâ)
  8978. s to use a rF °dONLNd˘¬äŒ¢)/esouré`°dONLNd˛¬¢Œ›)ce editor like °dONLNdœl€§(ÿlResEdit to crÑ°dONLNdœ§€º)8eate rû†°dONLNd œº€‘)esourʇ°dONLNd%œ‘€È)>ces describing your application’s menu bar and the individual °dONLNdc‹lËı(Âl menus. It’s also possible to defi0¿°dONLNdÑ‹ˆË·)ä3ne your menu bar and menu items internally in your °dONLNd∑Èlı[(Úl5application, but you can make your application signifi≤`°dONLNdÌÈ[ı—)Ôcantly easier to localize by °dONLNd
  8979. ˆl‚(ˇlisolating that information i`°dONLNd&ˆ„Ô)wn r¿°dONLNd)ˆÔ) esourg°dONLNd.ˆ)ces.
  8980. *¯4*¯    °dONLNd3l(lNote
  8981. ˇ·ˇ‚7^
  8982. °dONLNd8l(*%As you learned in the chapter “Resourª °dONLNd](n)©ces,” you can also crœÄ°dONLNdrn(Ü)Yeate rÍ °dONLNdxÜ(û)esour2`°dONLNd}ü(Æ)ces °dONLNdÅ(l4Æ(1lusing the Rez rß°dONLNdê(Æ4Δ)BesourÔ@°dONLNdï(Δ4P)ce-description language and a rπ@°dONLNd¥(Q4i)ãesourÄ°dONLNdπ(j4ù) ce compilerF‡°dONLNdƒ(ú4°)2. °dONLNdΔ4l@/(=l+This chapter shows how to use ResEdit to crY@°dONLNdÒ4/@d)√ eate menu-r=‡°dONLNd¸4d@Å)5elated °dONLNd@lLo(IlrE°dONLNd@pLà)esourç@°dONLNd    @àLó)ces.Ñ °dONLNdCùK¢)u
  8983. p*w¯4q*w¯ rlr¯
  8984. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdalp£(ll    Creating ˛°dONLNd!a§pfl)8a Menu Rîn°dONLNd)aflp);esourceˇˇˇˇˇˇ€r(l8
  8985. °dONLNd1wlÉr(ÄlY@Ä°dONLNd2wrÉ¢)
  8986. ou can defi‡°dONLNd=w¢É€)0Hne the menu title and characteristics of each individual menu item in a .°dONLNdÖÑlêÖ(çlmenu °dONLNdäÑÖê©)resource°dONLNdíÑ©ê´)$ °dONLNdìÑ´êª)(a rR`°dONLNdóѪê“)esour$¿°dONLNdúÑ“ê›)ce $¿°dONLNdüÑ›êˇ) of type ,
  8987. Courier$¿°dONLNdßÑˇê#)"'MENU'$¿°dONLNd≠Ñ#ê')$)$¿°dONLNdÆÑ'ê,). $¿°dONLNd∞Ñ,êD)Figur˜ °dONLNdµÑCêX)e 8-2˜ °dONLNd∫ÑXêÃ) shows the appearance of °dONLNd”ëlùô(öl
  8988. ResEdit’s °dONLNd›ëôùΩ)-'MENU'°dONLNd„ëΩù√)$ rR`°dONLNdÂë√ù⁄)esour$¿°dONLNdÍë⁄ù)    ce editorg`°dONLNdÛëù)&.ˇUº@ˇ ˇˇˇˇ@
  8989. ˇ·ˇ‚7^
  8990. 4H\, Palatino&e.3+ä"CHAPTER ”)>8,     Helvetica    ˇˇ—ÚˇÆ(@äMenus4⁄ä˙(‡äCreating Menus
  8991. (‡153
  8992. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  8993. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  8994.  
  8995.  
  8996.  
  8997.  
  8998.  
  8999. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  9000. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9001. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9002.  
  9003.  
  9004.  
  9005.  
  9006.  
  9007. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜
  9008. ˛ˇˇˇˇˇ˙ˇ     ˇˇˇ˙ˇ
  9009. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  9010. 4€4—?òÄ
  9011. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9012. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9013.  
  9014.  
  9015.  
  9016.  
  9017.  
  9018. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  9019. ˛ˇˇˇˇ
  9020. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜    ˛ˇˇ˛
  9021. ˛ˇˇˇˇ
  9022. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  9023. gHw4gHw"hH]
  9024. ˇ·ˇ‚7^    °dONLNd\äg¥(dä
  9025. Figure 8-2.°dONLNd \Ãg‹)BDefi°dONLNd\‹gˆ)ning a ,
  9026. Courier
  9027. °dONLNd[ˆg)'MENU'    °dONLNd\g@)$     resource
  9028. .°dONLNd&(ä4,(1ä&As you can see, the menu title is currˇ°dONLNdL(,4)¢1ently selected. ResEdit allows you to change the °dONLNd}5äA[(>ä1menu title text or to designate this menu as the é¿°dONLNdÆ5[A)—&Apple menu. This window also lets you °dONLNd‘BäN(KäWset the menu as initially enabled or disabled. In most cases, you’ll want to have your °dONLNd+Oä[*menus initially enabled. The V®`°dONLNdIO[ª)Ü#enn Diagrammer application, howeverc‡°dONLNdlOª[ )´, disables the Edit °dONLNdÄ\ähi(eä2menu because it does not support any text editing.°dONLNd≥näzê*Tµ¿°dONLNd¥nèzb)/o edit the text of a menu command, you can clic»¿°dONLNd„nbzl)”k i¿@°dONLNdÊnmzˇ) #t. ResEdit highlights the selected °dONLNd    {äá(Ñäcommand and changes the contr,†°dONLNd&{á±)ê#ols in the right side of the window°dONLNdI{±áÌ)ó, as shown in °dONLNdXàäî¢(ëäFigurR¿°dONLNd]à¢î∂)e 8-3@°dONLNdbà∂î∏).
  9029. ∑H»4∏H»"∏H]
  9030. ˇ·ˇ‚7^    °dONLNdd≠ä∏¥(µä
  9031. Figure 8-3°dONLNdo≠Ã∏2)BEditing a menu command
  9032. °dONLNdÜzäÜê(ÉäY@Ä°dONLNdázêÜË)ou can use the contr®`°dONLNdõzËÜ)XBols in the right side of the window to change the menu item text, °dONLNd›áäìæ(êä the keyboará`°dONLNdËáæì∂)48d equivalent, the menu’s mark, and several other items. j¿°dONLNd á∂ìº)¯Y+@°dONLNd!áºìÔ) ou can also °dONLNd-î䆂(ùäOdesignate the menu item as initially enabled or disabled. Once again, you’ll pr¿°dONLNd|(ù„obably °dONLNdÉ°ä≠:(™ä)want most items to be initially enabled. ±†°dONLNd¨°:≠@)∞Yr °dONLNd≠°@≠ô)ou can disable and r]@°dONLNd¡°ô≠Û)Yeenable menu items 
  9033. wÜòÄ>Á„HHKÜ ˇˇˇˇˇˇÁ„yåΔ≈ˇ¿ÄΔ`ÄΔpÄΔpø˜ˇˇ¿—¸ˇp.Ä@˛@'»&`$Ã˛嘠   6Üp˛ÄÙp2 ø@ˇˇ¿`f &`HÃ˛ ¿˜    6Ä¿˛Äò˙¸ˇp<Ä@˛pÊ&`lÃx¯¯ Ãx|Ÿ„˛˛>3IJÊœèò·„3g˚p; ø@ˇˇ¿yÊ&`l˝Ã ÃåÂ33˝3$ů«ôò˛ô    Åôôì33åôô¸ˇp:Ä@˛_gã¶`˝Ã Ã|áÛ3˝3ÄÜΔôò˛ôÅÒô√33 ú˚p=ø@ˇˇ¿Nf    Ê`øÃà ˛Ã"√333?33ůÜΔôòüôôÅô¯„33 鸡p<Ä@˛
  9034. DfÊ`ÿÃà ˛Ã!√333033ÄÜΔôòòôÅôÄs33 ˚p=ø@ˇˇ¿@ff`»ƒÃà ˛Ã√333133ÄÜΔôòôôÅôâ˛3 òì¸ˇp<Ä@˛/@g»#¿xÃÃå||¡Û333ΔòôÅò··Û˚pø˜ˇˇ¿Ù fl¸ˇp ÄÔåŸp ÄÔxŸpÄΔp≈ˇÄΔpÄΔpÄΔpÄΔpÄΔp ġpÄΔpĸˇ¿Ó‡p ĸˇ¿Ãpĸˇ¿Ó‡p ĸˇ¿Ãpĸˇ¿Ó‡pĸœ˛ˇ¿Ï¿Ëpĸœ˛ˇ¿ÓÚˇ˘p%ĸŒ¿Ï
  9035. ><Õûá>30ˆ ¿ p'ĸ˛Ãœ¿Ó3Œ3œ˛30ˆ
  9036.  p#ĸ˛Ãœ¿Ï3Ã3˚˛3ı         áèåx|p%ĸà Ü¿Ó 3Ã?s?33ıë »˝Ãp#ĸøÜ¿Ï    3Ã0#033ıaå«˝Ãp'ĸ‹ÏÃœ¿Ó 3Ã11330ˆa ˛Ã¸Ãp%ĸ>Ãœ¿Ï
  9037. 3 Ã30ˆë ˛Ã¿Ãpĸˇ¿ÓÍ         ˛ÃƒÃpĸˇ¿÷
  9038. ëœåx|pĸˇ¿ÓÍ ˘pĸˇ¿÷ˇ˘pĸˇ¿Ó‡p ÄˡćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@¿Ç‡pÄÄx¿ÄÙΔ¿A Ä‡pÄă¿Äı)ÄBLJpÄÄ¿¯xqòı)DćpÄÄ¿ÃÃ…∞Ù˛HLJpÄÄ¿Ãá‡Ù(^ćpÄĿø¡¿Ù˛BLJpÄĿÿ¡‡ı)BćpÄăÃ…∞ı)ÄBLJpÄÄxÃxqòÙΔ¿CćpÄÄÎ@LJpÄÄÎ@ćpÄÄΡǢ͡ÄpÄÄÎ@ĢÍÄpÄÄÎ@ǢÍÄpÄÄÎ@ĢΡ¸ÄpÄÄÎ@ǢΡ¸Äp$ÄÄqIJ‡¿˘Δ@Ä˚¿Ρ¸Äp% ÄÄ…Äê˘)Ä@Ç˚ 03Ïˇ¸Äp+ÄÄ¡ÒôÅÅ„3<«èĸ)@Ä?c3Ïˇ¸Äp-ÄÄ·˛ôÅ√33Ãÿ˚˛@Ç »3áÔˇ¸Äp+ÄÄq˛ôÄ„33Ãÿ˚(Ä@Ä gòÒÄ'‰˝3Ôˇ¸Äp+ÄÄ9˛ôÄs33Ãÿ˚˛Ä@Ç côÄ'‰˝3Ôˇ¸Äp.ÄIJôIJ3Ãÿ¸)Ä@Ä cò'‰333Ôˇ¸Äp-ÄÄ˝ô˛3Ãÿ¸)Ä@Ç c¯'‰3?33Ôˇ¸Äp-ÄÄqòÒ˛·„ «å¿˚Δ@Ä cÄ»7;33Ôˇ¸ÄpÄÄÎ@Ç câÄá33Ôˇ¸ÄpÄÄÎ @Ä aòÒÄ 0Ρ¸ÄpÄÄÎ@Ç˚¿Ρ¸ÄpÄÄÎ@ĢΡ¸ÄpÄÄÎ@ǢΡ¸ÄpÄÄÎ@ĢÍÄpÄÄÎ@ǢÍÄpÄÄx¿ÒΔ@Ģ͡ÄpÄă¿Ú)Ä@LJpÄÄ¿«áçÄı)Ä@ćpÄĿûŒÛ˛Ä@LJpÄĿëÃÛ(@ćpÄÄ¿œÃÃÛ˛Ä@LJpÄÄ¿Ã ÃÙ)Ä@ćpÄăÃLÃÙ)Ä@LJpÄÄx«áÃÛΔ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@Ç˚¿0ÍpÄÄÎ@Ä˚ 0`¯ıpÄÄÎ@Ç˚@<`¸ıpÄÄÎ@Ä˚∏ f`¸ıp ÄÄÎ@Ç˚ ¸ f||c¿√«Δcıp+ÄÄx` Ä Ä¿¯@Ä˚  ˝f`˝fcıp+Äă`0Ä @˜@Ç˚  ~˛f`˝fcıp/ÄÄ¿x8èûè<œá«˙@Ä˚ ¸ ˛fg‡fgÊfcıp/ÄÄ¿Ã`<ôôå Δ˛ÃÄ˚@Ç˚¸ ˝ffffcıp.ÄÄ‹Ã`.ôôååΔÃÃŒ˙@Ä˚¯ ˝f ff&fcıp/ÄÄø`'üè œΔÃë˙@Ç˚ 0∞f||c¿fcΔc‚ıp-ÄÄÿ`#òåÃÃÃ√Ä˚@Ä˚¿``˚ıp#ÄÄÃ`!òôåÃFÃÃ…Ä˚@Çı``ÓpÄÄxx0 èÜáÉ Ã««˙@ćpÄÄÛ¿˙@LJpÄÄÙ¿˙@ćpÄÄÙÄ˙@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄx¸ÃÃ Δ˜@ćpÄÄøÿ ˜@LJpÄÄÃp··√ÄÃxÃ|œ3¯@ćpÄÄÃ…ì3&@ÃåÃÃΔ3¯@LJpÄĸ·√3áÃ|ÃÃΔ3¯@ćpÄÄÃp„Ò√Ä˝ÃΔ3¯@LJpÄÄÃ8s·¿˝ÃΔ3¯@ćp    ÄÄÃô3d¿»˛ÃΔ3¯@LJpÄÄÃp··√Ä|Ã|√¯@ćpÄÄı¯@LJpÄÄı#¯@ÄÂx¿pÄÄı¯@ǃ¿pÄÄÎ@Ä¿x«çÄpÄÄÎ@Ç¿ÃÃŒpÄÄÎ@Ä¿˛ÃpÄÄÎ@Ç¿˛ÃpÄÄÎ@Ä¿˛ÃpÄÄÎ@ǃ˛ÃpÄÄÎ@ÄÂxx«åpÄÄÎ@LJpÄ’ÎU@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@DzˇpÄÄÎ@ÄÂ@pÄÄÎ@ÇÂ_ˇˇ˝ÄpÄÄÎ@ÄÂ_ˇˇ˝ÄpÄÄÎ@ÇÂ_ˇˇ˝ÄpÄį‡ÛΔÄ@ÄÂ_ˇˇ˝Äp!ÄÄÃÄÙ)Ä@ÇÍ ÿΔ_ˇˇ˝Äp' ÄÄß„«çû><8˙)Ä@ÄÍ Δ_ˇˇ˝Äp& ÄÄÄ1åŒ332fd˘˛Ä@ÇÍ Ê<`_ˇˇ˝Äp& Äį√1åÃ330fp˘(@ÄÍ Δf`_ˇˇ˝Äp& ÄÄ¿√ÒèÃ?30~8˘˛@ÇÍ Δf_ˇˇ˝Äp' ÄÄ¿√å 030`˙)@ÄÍ Δ~_ˇˇ˝Äp)ÄÄ¿√åL132bLf`¸)@ÇÍ Δ`_ˇˇ˝Äp(ÄÄ¿¡·áå3<8f`˚Δ@ÄÍ Δb`_ˇˇ˝ÄpÄÄÎ@ÇÍ f<`_ˇˇ˝ÄpÄÄÎ@ÄÂ_ˇˇ˝ÄpÄÄÎ@ÇÂ_ˇˇ˝ÄpÄÄÎ@ÄÂ_ˇˇ˝ÄpÄÄÎ@ÇÂ_ˇˇ˝ÄpÄÄÎ@ÄÂ@ÄpÄÄÎ@DzˇÄpÄÄÎ@IJˇÄpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@DzˇpÄÄÎ@ÄÂ@pÄÄÎ@ÇÂ_ˇˇ˝ÄpÄÄÎ@ÄÂ_ˇˇ˝ÄpÄÄÎ@ÇÂ_ˇˇ˝Äp#ÄÄÎ@Äı ˛¸¿|å_ˇˇ˝Äp#ÄÄÎ@Çı ˛0¿f0å_ˇˇ˝Äp#ÄÄÎ@Äı<¿0Òô‡f<xÒôû`_ˇˇ˝Äp#ÄÄÎ@Çı ff`1ôò¿ff1ôå`_ˇˇ˝Äp#ÄÄÎ@Äı ff`1ôò¿ff0˘ôå_ˇˇ˝Äp#ÄÄÎ@Çı ~f`1¯¿f~1ôôå_ˇˇ˝Äp#ÄÄÎ@Äı `f`1Åò¿f`1ôôå_ˇˇ˝Äp#ÄÄÎ@Çı bf`1âò¿fb1ôôå`_ˇˇ˝Äp#ÄÄÎ@Äı<f`0Òò`|<0¯˘Ü`_ˇˇ˝ÄpÄÄÎ@ÇÂ_ˇˇ˝ÄpÄÄÎ@ÄÂ_ˇˇ˝ÄpÄÄÎ@ÇÂ_ˇˇ˝ÄpÄÄÎ@ÄÂ_ˇˇ˝ÄpÄÄÎ@ÇÂ_ˇˇ˝ÄpÄÄÎ@ÄÂ@ÄpÄÄÎ@DzˇÄpÄÄÎ@IJˇÄpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@DzˇpÄÄÎ@ÄÂ@pÄÄÎ@ÇÂ@ÄpÄÄÎ@ÄÂ@ÄpÄÄÎ@ÇÂ@Äp!ÄÄÎ@Äı˛Ä¸@Äp!ÄÄÎ@Çı ˛ ¿¸@Äp#ÄÄÎ@Äıx¯Ã «áèõ<f|>`@Äp"ÄÄÎ@Çı<˛Ã »Ãõú˝f`@Äp"ÄÄÎ@Äı Ï˛ÃáÃò˝f@Äp"ÄÄÎ@Çı
  9039.     Ã¸Ãà ÃÃò˝f@Äp"ÄÄΡÄı
  9040. å¿ÃÃ ÃÃò˝f@Äp"ÄÄÎ@Çı
  9041. ƒÃà ÃÃõò˝f`@Äp#ÄÄÎ@Äı xÃ|á«èò<>f>`@ÄpÄÄÎCÇÏĸ@ÄpÄÄÎBÄÏĸ@ÄpÄÄÎBÇÏ˚@ÄpÄÄÎBÄÂ@ÄpÄÄÎ^ÇÂ@ÄpÄÄÎHÄÂ@ÄpÄÄÎDDzˇÄpÄÄÎBIJˇÄpÄÄÎA Ç‡pÄÄÎ@¿Ä‡pÄÄÎ@LJpÄÄÎ@ćp ÄˡLJpÄΔp ġpÄΔpÄΔpÄΔpÄΔp≈ˇΔˇ
  9042. «ÜcòÄ>Á„HHKܡˇˇˇˇˇÁ„ ã`≈≈ˇ¿ÄΔ`ÄΔpÄΔpø˜ˇˇ¿—¸ˇp.Ä@˛@'»&`$Ã˛嘠   6Üp˛ÄÙp2 ø@ˇˇ¿`f &`HÃ˛ ¿˜    6Ä¿˛Äò˙¸ˇp<Ä@˛pÊ&`lÃx¯¯ Ãx|Ÿ„˛˛>3IJÊœèò·„3g˚p; ø@ˇˇ¿yÊ&`l˝Ã ÃåÂ33˝3$ů«ôò˛ô    Åôôì33åôô¸ˇp:Ä@˛_gã¶`˝Ã Ã|áÛ3˝3ÄÜΔôò˛ôÅÒô√33 ú˚p=ø@ˇˇ¿Nf    Ê`øÃà ˛Ã"√333?33ůÜΔôòüôôÅô¯„33 鸡p<Ä@˛
  9043. DfÊ`ÿÃà ˛Ã!√333033ÄÜΔôòòôÅôÄs33 ˚p=ø@ˇˇ¿@ff`»ƒÃà ˛Ã√333133ÄÜΔôòôôÅôâ˛3 òì¸ˇp<Ä@˛/@g»#¿xÃÃå||¡Û333ΔòôÅò··Û˚pø˜ˇˇ¿Ù fl¸ˇp ÄÔåŸp ÄÔxŸpÄΔp≈ˇÄΔpÄΔpÄΔpÄΔpÄΔp ġpÄΔpĸˇ¿Ó‡p ÄÄ˝@ÃpÄÄ˝@Ó‡p ÄÄ˝@ÃpÄÄ˝@Ó‡pÄÉ0˛@Ï0Ä√Íp ÄÉ0˛@Ó
  9044. 0Ä√Ùˇ˘p'ÄÉ1„„‡@Ï 1·«èÄ«èÒį ¿ p)Äɲ30@Ó˛3#ôÄ√ôôį
  9045.  p&Äɲ30@Ï˛3ôÄ√ôò˜         áèåx|p'ÄÉ3Û30@Ó?3ÛôÄ√ôò˜ë »˝Ãp%ÄÉ330@Ï 03Ä√ò˜aå«˝Ãp)ÄÉ#30@Ó13#ôÄ√ôôįa ˛Ã¸Ãp'ÄÉ¡„30@Ï 1·¡èÄ¡èôįë ˛Ã¿ÃpÄÄ˝@ÓÍ         ˛ÃƒÃpÄÄ˝@÷
  9046. ëœåx|pÄÄ˝@ÓÍ ˘pÄÄ˝@÷ˇ˘pÄÄ˝@Ó‡p ÄˡćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@¿Ç‡pÄÄx¿ÄÙΔ¿A Ä‡pÄă¿Äı)ÄBLJpÄÄ¿¯xqòı)DćpÄÄ¿ÃÃ…∞Ù˛HLJpÄÄ¿Ãá‡Ù(^ćpÄĿø¡¿Ù˛BLJpÄĿÿ¡‡ı)BćpÄăÃ…∞ı)ÄBLJpÄÄxÃxqòÙΔ¿CćpÄÄÎ@LJpÄÄÎ@ćpÄÄΡǢ͡ÄpÄÄÎ@ĢÍÄpÄÄÎ@ǢÍÄpÄÄÎ@ĢÍÄpÄÄÎ@ǢÍÄp#ÄÄqIJ‡¿˘Δ@Ä˚¿ÍÄp' ÄÄ…Äê˘)Ä@Ç˚ 0¯‡ÓÄp-ÄÄ¡ÒôÅÅ„3<«èĸ)@Ä?0ÃÄÓÄp2ÄÄ·˛ôÅ√33Ãÿ˚˛@Ç 0»ß„«çû><8ÙÄp2ÄÄq˛ôÄ„33Ãÿ˚(Ä@Ä <fyÄ'‰Ä1åŒ332fdÙÄp2ÄÄ9˛ôÄs33Ãÿ˚˛Ä@Ç ff1Ä'‰¯√1åÃ330fpÙÄp3ÄIJôIJ3Ãÿ¸)Ä@Ä ff0'‰¿√ÒèÃ?30~8ÙÄp2ÄÄ˝ô˛3Ãÿ¸)Ä@Ç ~<0'‰¿√å 030`ÙÄp4ÄÄqòÒ˛·„ «å¿˚Δ@Ä `f0»¿√åL132bLf`ˆÄp$ÄÄÎ@Ç bf1Ä¿¡·áå3<8f`ˆÄpÄÄÎ @Ä <fÄ 0ÍÄpÄÄÎ@Ç˚¿ÍÄpÄÄÎ@ĢÍÄpÄÄÎ@ǢÍÄpÄÄÎ@ĢÍÄpÄÄÎ@ǢÍÄpÄÄx¿ÒΔ@Ģ͡ÄpÄă¿Ú)Ä@LJpÄÄ¿«áçÄı)Ä@ćpÄĿûŒÛ˛Ä@LJpÄĿëÃÛ(@ćpÄÄ¿œÃÃÛ˛Ä@LJpÄÄ¿Ã ÃÙ)Ä@ćpÄăÃLÃÙ)Ä@LJpÄÄx«áÃÛΔ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@Ç˚¿ËpÄÄÎ@Ä˚ 0˛ˆ¯p!ÄÄÎ@Ç˚˛˚¿òĢp!ÄÄÎ@Ä˚˛˚¿Ä¿˘p$ÄÄÎ@Ç˚ ˛<|<lÒ„Δ¡ô¿˘p1ÄÄx` Ä Ä¿¯@Ä˚ ˛2ffFqΔgôôò¿˘p0Äă`0Ä @˜@Ç˚ 
  9047. ™™Ü8ff>`¯Δfôôò¿˘p3ÄÄ¿x8èûè<œá«˙@Ä˚ ˛~ffaòΔfôô¯¿˘p4ÄÄ¿Ã`<ôôå Δ˛ÃÄ˚@Ç˚˛`ffaòΔfôôÄ¿˘p3ÄÄ‹Ã`.ôôååΔÃÃŒ˙@Ä˚˛&bffaòΔfôôà¿˘p3ÄÄø`'üè œΔÃë˙@Ç˚ 0˛<|>`¯cΔôòĢp.ÄÄÿ`#òåÃÃÃ√Ä˚@Ä˚¿˛`˘¯p"ÄÄÃ`!òôåÃFÃÃ…Ä˚@ÇÛ`ÔpÄÄxx0 èÜáÉ Ã««˙@ćpÄÄÛ¿˙@LJpÄÄÙ¿˙@ćpÄÄÙÄ˙@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄx¸ÃÃ Δ˜@ćpÄÄøÿ ˜@LJpÄÄÃp··√ÄÃxÃ|œ3¯@ćpÄÄÃ…ì3&@ÃåÃÃΔ3¯@LJpÄĸ·√3áÃ|ÃÃΔ3¯@ćpÄÄÃp„Ò√Ä˝ÃΔ3¯@LJpÄÄÃ8s·¿˝ÃΔ3¯@ćp    ÄÄÃô3d¿»˛ÃΔ3¯@LJpÄÄÃp··√Ä|Ã|√¯@ćpÄÄı¯@LJpÄÄı#¯@ÄÂx¿pÄÄı¯@ǃ¿pÄÄÎ@Ä¿x«çÄpÄÄÎ@Ç¿ÃÃŒpÄÄÎ@Ä¿˛ÃpÄÄÎ@Ç¿˛ÃpÄÄÎ@Ä¿˛ÃpÄÄÎ@ǃ˛ÃpÄÄÎ@ÄÂxx«åpÄÄÎ@LJpÄ’ÎU@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@DzˇpÄÄÎ@ÄÂ@pÄ͡¿ÇÂ_ˇˇ˝ÄpÄ͡¿ÄÂ_ˇˇ˝ÄpÄ͡¿ÇÂ_ˇˇ˝ÄpġˇˇˇÛˇ9Ê¿ÄˇË_ˇˇ˝Äp*ġˇ3ˇ˛Ùˇ˛÷Ê¿ÇÄ`Û Ä_ˇˇ˝Äp0 ġˇ3&8ra¡„√«˙ˇ˛÷Ê¿ÄÄ` ÄÛ _ˇˇ˝Äp4 ġˇ3Œs1ÃÃÕôõ˘ˇÊ¿ÇÄ|<8 üÒÒò¯ 3<¿_ˇˇ˝Äp2 ġˇ<Œs3ÃÃœôè˘ˇ◊ˇ¿ÄÄfFd¸ôò¯ 33¿_ˇˇ˝Äp2 ġˇ?<p3¿ÃœÅ«˘ˇ˘ˇ¿ÇÄf>p¸ôò¯ 33_ˇˇ˝Äp4 ġˇ?<˛sۜÜü„˙ˇ˛÷˘ˇ¿ÄÄff8˝ô˘ôò¯ ?_ˇˇ˝Äp6ġˇ?<Ós≥ŒÃÕù≥ôü¸ˇ˛÷˘ˇ¿ÇÄff˝ôÅôò¯ 03_ˇˇ˝Äp5ġˇ?>xs·Ã„√«ôü˚ˇ 9˘ˇ¿ÄÄffL    ˝ôâôò¯ 13¿_ˇˇ˝Äp%Ä͡¿ÇÄf>8üòÒò¯¯ 3 ¿_ˇˇ˝ÄpÄ͡¿ÄÄË_ˇˇ˝ÄpÄ͡¿ÇˇË_ˇˇ˝ÄpÄ͡¿ÄÂ_ˇˇ˝ÄpÄÄÎ@ÇÂ_ˇˇ˝ÄpÄÄÎ@ÄÂ@ÄpÄÄÎ@DzˇÄpÄÄÎ@IJˇÄpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@ÇÈˇˇ‡˛ˇpÄÄÎ@ÄÈ
  9048.  @pÄÄÎ@ÇÈ
  9049.  _ˇˇ˝ÄpÄÄÎ@ÄÈ
  9050.  _ˇˇ˝ÄpÄÄÎ@ÇÈ
  9051.  _ˇˇ˝ÄpÄÄÎ@ÄÈ
  9052.  _ˇˇ˝ÄpÄÄÎ@ÇÒÄ _ˇˇ˝ÄpÄÄÎ@ÄÒÄ0Ä _ˇˇ˝ÄpÄÄÎ@ÇÒ¯`ÒôÇÄ _ˇˇ˝ÄpÄÄÎ@ÄÒôò¡ôôÇÄ _ˇˇ˝ÄpÄÄÎ@ÇÒôôÛÅôò _ˇˇ˝ÄpÄÄÎ@ÄÒôò¡˘ò _ˇˇ˝ÄpÄÄÎ@ÇÒôòaÅò _ˇˇ˝ÄpÄÄÎ@ÄÒôôò1âôÇ _ˇˇ˝ÄpÄÄÎ@ÇÒò¯˘Ç _ˇˇ˝ÄpÄÄÎ@ÄÍ  _ˇˇ˝ÄpÄÄÎ@ÇÎ  _ˇˇ˝ÄpÄÄÎ@ÄÍ  _ˇˇ˝ÄpÄÄÎ@ÇÈ
  9053.  _ˇˇ˝ÄpÄÄÎ@ÄÈ
  9054.  @ÄpÄÄÎ@ÇÈˇˇ‡˛ˇÄpÄÄÎ@IJˇÄpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@LJpÄÄÎ@ćpÄÄÎ@DzˇpÄÄÎ@ÄÂ@pÄÄÎ@ÇÒ˜ˇ˛_ˇˇ˝ÄpÄÄÎ@ÄÒ˜_ˇˇ˝ÄpÄÄÎ@ÇÒ˜_ˇˇ˝ÄpÄÄÎ@ÄÒ˜_ˇˇ˝Äp ÄÄÎ@LjÄ˙_ˇˇ˝Äp ÄÄÎ@ĈÄ˙_ˇˇ˝Äp$ÄÄÎ@Lj<môÑ„·‡ˇ√_ˇˇ˝Äp$ÄÄÎ@Ĉ ûFq±Ñì330˛ˇÉ_ˇˇ˝Äp$ÄÄÎ@Lj ˆ>a‡”330˛_ˇˇ˝Äp$ÄÄÎˇÄˆ Êfa¿Û33˛>_ˇˇ˝Äp#ÄÄÎ@Lj
  9055. Ffa‡s33˝_ˇˇ˝Äp$ÄÄÎ@Ĉfa±Ñ˛3˛_ˇˇ˝Äp#ÄÄÎCLj >aôÑ„1‡˝_ˇˇ˝ÄpÄÄÎBÄÒ˜_ˇˇ˝ÄpÄÄÎBÇÒ˜_ˇˇ˝ÄpÄÄÎBÄÒ˜_ˇˇ˝ÄpÄÄÎ^ÇÒ˜_ˇˇ˝ÄpÄÄÎHÄÒˆˇ@ÄpÄÄÎDÇÒˆˇ˛ˇÄpÄÄÎBIJˇÄpÄÄÎA Ç‡pÄÄÎ@¿Ä‡pÄÄÎ@LJpÄÄÎ@ćp ÄˡLJpÄΔp ġpÄΔpÄΔpÄΔpÄΔp≈ˇΔˇˇ(@ˇ ˇˇˇˇ@
  9056. ˇ·ˇ‚7^
  9057. 4*\¯, Palatino&e.3+l"CHAPTER ”)>8,     Helvetica    ˇˇ—ÚˇÆ(@lMenus4⁄*˙¯
  9058. (‡*154    )BCreating Menus4^*¿¯
  9059. °dONLNd\lhY(el5dynamically during your application’s execution; see ï¿°dONLNd5\Yh—)Ì“Handling Menu Choices” °dONLNdMilu¿(rlbeginning on page V °dONLNd_i¡u–)U156V °dONLNdbi–u) for details.
  9060. ö*°¯4õ*°¯ úlú¯
  9061. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdpãlö£(ñl    Creating ˛°dONLNdyã§ö¯)8 a Menu Bar R∞f°dONLNdÖã¯ö()Tesourceˇˇˇˇˇˇ€r)¯8
  9062. °dONLNdç°l≠r(™lY@Ä°dONLNdé°r≠¢)
  9063. ou can defi‡°dONLNdô°¢≠»)0    ne the or£¿°dONLNd¢°…≠Ò)'    der and r-‡°dONLNd´°Ú≠
  9064. ))esourv °dONLNd∞°
  9065. ≠Õ)-ce IDs of the menus in your application in a ã`°dONLNd›°Õ≠È)√menu .°dONLNd‚Æl∫°(∑l bar resource°dONLNdÓÆ°∫≥)5 (a rR`°dONLNdÛÆ≥∫ )esour$¿°dONLNd¯Æ ∫˜) ce of type ,
  9066. Courier$¿°dONLNdƘ∫)-'MBAR'$¿°dONLNd    Æ∫)$)$¿°dONLNd
  9067. Æ∫$). ˜ °dONLNd Æ#∫*)Y  °dONLNdÆ*∫i)ou should defi  °dONLNdÆi∫ã)?ne your   °dONLNd#Æã∫Ø)"'MBAR'  °dONLNd)ÆØ∫µ)$ rfiÄ°dONLNd+Æ¥∫À)esour∞‡°dONLNd0ÆÀ∫·)ce in .°dONLNd6ªl«ƒ(ƒlsuch a way that the A°dONLNdJªƒ«)XApple menu is the fiD °dONLNd^ª«ç)Zrst menu in the menu barv`°dONLNdvªç«í)o. H¿°dONLNdxªí«ò)Y    @°dONLNdyªò«◊)ou should defi °dONLNdáªÿ«ı)@ne the °dONLNdé»l‘fi(—lQnext two menus as the File and Edit menus, followed by any other menus that your °dONLNdfl’l·∏*application uses. ‘°dONLNdÒ’∏·æ)LYîÄ°dONLNdÚ’æ·)ou do not need to defi÷°dONLNd’·b)ane the Keyboar´`°dONLNd’b·î)C d, Help, or V`°dONLNd"’î·ˆ)2Application menus in .°dONLNd7‚lÓÇ(Îlyour °dONLNd<‚ÇÓ¶)'MBAR'°dONLNdB‚¶Ó¨)$ rR`°dONLNdD‚¨Ó√)esour$¿°dONLNdI‚√Óæ)5ce; the Menu Manager automatically adds them to your °dONLNd~Ôl˚W(¯l5application’s menu bar if your application calls the °dONLNd≥ÔW˚ç)Π   GetNewMBa°dONLNdºÔç˚ì)6r°dONLNdΩÔì˚¡)  function a°dONLNd»Ô¡˚‰).nd your .°dONLNd–¸lÕ(lmenu bar includes an @°dONLNd¸Œò)b.Apple menu or if your application inserts the ‡°dONLNd¸òˆ) Apple menu into the .°dONLNd'    l}(lcurrR`°dONLNd+    }„)ent menu list using the R`°dONLNdC    „)f
  9068. InsertMenuR`°dONLNdM    +)< pr$¿°dONLNdP    +H) ocedur˜ °dONLNdV    GO)e.°dONLNdYl's($lYï°dONLNdZr'ÿ)ou can use ResEdit to crg`°dONLNdrÿ'˚)feate an g`°dONLNdz˚')#'MBAR'g`°dONLNdÄ'%)$ r9¿°dONLNdÇ%'<)esour  °dONLNdá<'J)ce.   °dONLNdãJ'b)FigurfiÄ°dONLNdêa'v)e 8-4fiÄ°dONLNdïv'®)  shows the fiÄ°dONLNd†®'Ã)2'MBAR'fiÄ°dONLNd¶Ã'Œ)$ .°dONLNdß(l4o(1lrE°dONLNd®(p4à)esourç@°dONLNd≠(à4‚)ce window for the Vu‡°dONLNd¿(·4c)Yenn Diagrammer application.
  9069. V*g¯4W*g¯"W*]
  9070. ˇ·ˇ‚7^    °dONLNd‹LlWñ(Tl
  9071. Figure 8-4.°dONLNdÁLÆWª)BAn 
  9072. °dONLNdÍKªWfl)'MBAR'    °dONLNdLflW0)$ resource in ResEdit
  9073. °dONLNd>lJ{(GlAn °dONLNd>{Jü)'MBAR'°dONLNd>üJ•)$ rR`°dONLNd>•Jº)esour$¿°dONLNd>ºJ*)ce is simply a list of the $¿°dONLNd0>*JV)n    menu IDs,$¿°dONLNd9>VJ~),
  9074.  in the or˜ °dONLNdC>}JÀ)'der you want the .°dONLNdTKlW}(Tlcorr`°dONLNdXK~W)"esponding menu titles to appear frµ °dONLNdzKW†)ò om left to right in the menu barΔ¿°dONLNdöK†W¢)ä.
  9075. }*ѯ4~*ѯ l¯
  9076. ˇ·ˇ‚7^ˇˇ‹.ˇ◊°dONLNdúnl}I(yl!Setting Up the Menu Bar and Menusˇˇˇˇˇˇ€r(y8
  9077. °dONLNdæÉlèπ(ålOne of the very fiú°dONLNd–ÉπèØ)M8rst things you need to do when your application starts r≈Ä°dONLNdÉØèÈ)ˆunning is set °dONLNdêlúı(ôlup your menu bar and menus. j†°dONLNd2êıú˚)âY+ °dONLNd3ê˚úÁ)4ou can do this by calling the Menu Manager function ˇˇÀ¯.°dONLNdgùl©®(¶l
  9078. GetNewMBarˇˇÓ®°dONLNdqù®©–)<    , which r/∞°dONLNdzù—©
  9079. ))eads a specif›Ä°dONLNdáù
  9080. ©)9ied ˇˇÀ¯Ã(°dONLNdãù©?)'MBAR'ˇˇÓ®Ã(°dONLNdëù?©D)$ rç0°dONLNdìùE©\)esour_ê°dONLNdòù\©n)ce fr ò°dONLNdùùo©÷)om your application’s ræ°dONLNd¥ù÷©Ì)gesourëP°dONLNdπùÌ©˜)ce 
  9081. fg'¯òÄ2!éHHKÜ ˇˇˇˇˇˇ!éim%o–ˇ¯Ä—Ä—Ä—ø˜ˇ¿Ÿ˛ˇÓ* Ä@@'√«¿$Ä@˛ ¯`1`˛ò˛ı/ø@ˇ¿`˛f`H¿¿˛ Ã`1ò·ò ˛ò˛Ä˙˛ˇÓ2,Ä@pÊff`l·«èå¿ÃxŸ 1ò`òlÒˇòÒÒè36p‡˝3 ø@ˇ¿yÊff`lÛ˛Ã¿Ãå‚@1òÄ`ò qôôÅ˛ô
  9082. òôô338…ôê˛ˇÓ2 Ä@_g«Á¿æ˛Ã¿¯|¿1ò`0 aôôÅ˛ô    òú330¡ô¿˝3ø@ˇ¿N˛f$`úœÃÿÃÿ1òÄ`aò aôôÅô˘ôòüé330¡¯‡˛ˇÓ2Ä@D˛f#`àà ÿÃÿ1ò`¡ò aôôÅôÅôòò330¡Äp˝3ø@ˇ¿@˛f$`ÄÃLÿÃÿ1òaÅò aôôÅëâôòòì330…â0˛ˇÓ2,Ä@@gΔf`Ä«å«¿¯|¿1a¯ `ÒôŇÒôòè0p‡˝ø˜ˇ¿Ÿ˛ˇÓÄ—Ä—Ä—–ˇ˛Ä”ĔĔ ĔĔ!Ä”@éÄ”ÄNÄ”·ÓÄ”!Ä”!Ä”!Ä”?ĔĔĔˇ˛Äį ·Ä¿¯`·Äį†·    ÄÄ„ƒG˛ ·Ä¿©$HÄ·    ÄÄ©Ú$G˝ ·
  9083. Ä©$@IJ ·
  9084. Ä©$»Ä˛ ·    Ä®‚#G˝ ·Ä”ĔĔĔĔĔĔĔĔĔĔĔĔĔ Ä÷    Ä@Ä ‹    Ä¿Ä
  9085. ï*T®‹    Ä@@8p‹    Ä@@8p‹    Ä@@
  9086. ï*T®‹    Ä@@ ‹ Ä@@◊ Ä@Ä◊ Ä@Ä◊ Ä÷ĔĔĔĔĔĔĔĔÄÙ˜ˇ¿ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ    ¯ˇ˛@ÏÄÙ    ¯ˇ˛@ÏÄÙ    ¯ˇ˛@ÏÄ˙áÄ    Ôè˚ˇ˛@ÏÄ∞˙Ñ@    œvÔ˚ˇ˛@ÏÄP˙Ñ@    ÔˆÔ˚ˇ˛@ÏÄ«àÄ,8pÑ@    Ô˜˚ˇ˛@ÏÄ$HÄ2DàÑ@    ÔÓÔ˚ˇ˛@ÏĉHÄ"|pÑ@    ÔfiÔ˚ˇ˛@ÏÄHÄ @Ñ@    ÔæÔ˚ˇ˛@ÏÄ$IÄ DàÑ@    Ô~Ô˚ˇ˛@ÏăFÄ 8páÄ    Ô˚ˇ˛@ÏÄÙ    ¯ˇ˛@ÏÄÙ    ¯ˇ˛@ÏÄÙ    ¯ˇ˛@ÏÄÙ    ¯ˇ˛@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜ˇ¿ÏĔĔĔĔĔĔĔ Ä÷    Ä‡Ä ‹    ÄÄ
  9087. ï*T®‹    Ä@8p‹    Ä@8p‹    Ä @
  9088. ï*T®‹    Ä@@ ‹ ÄÄ@◊ ÄÄ◊ ÄÄ◊ Ä÷ĔĔĔĔĔĔĔĔÄÙ˜ˇ¿ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄ˙áÄp‡˙@ÏÄ∞˙Ñ@0â˙@ÏÄP˙Ñ@    ˙@ÏÄ«àÄ,8pÑ@    ˙@ÏÄ$HÄ2DàÑ@˙@ÏĉHÄ"|pÑ@ ˙@ÏÄHÄ @Ñ@@˙@ÏÄ$IÄ DàÑ@Ä ˙@ÏăFÄ 8páį¿˙@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜ˇ¿ÏĔĔĔĔĔĔĔ Ä÷    Ä‡Ä ‹    ÄÄ
  9089. ï*T®‹    Ä@8p‹    Ä`@8p‹    Ä@
  9090. ï*T®‹    Ä@ ‹ Ä@◊ ÄÄ◊ ćÄ◊ Ä÷ĔĔĔĔĔĔĔĔÄÙ˜ˇ¿ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄ˙áÄp‡˙@ÏÄ∞˙Ñ@0â˙@ÏÄP˙Ñ@    ˙@ÏÄ«àÄ,8pÑ@1˙@ÏÄ$HÄ2DàÑ@    ˙@ÏĉHÄ"|pÑ@    ˙@ÏÄHÄ @Ñ@    ˙@ÏÄ$IÄ DàÑ@â˙@ÏăFÄ 8páÄp‡˙@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜ˇ¿ÏĔĔĔĔĔĔĔ Ä÷    Ä Ä ‹    Ä`Ä
  9091. ï*T®‹    Ä†@8p‹    Ä @8p‹    Ä@
  9092. ï*T®‹    Ä @ ‹ Ä @◊ Ä Ä◊ Ä Ä◊ Ä÷ĔĔĔĔĔĔĔĔÄÙ˜ˇ¿ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄ˙áÄp@˙@ÏÄ∞˙Ñ@0à¿˙@ÏÄP˙Ñ@@˙@ÏÄ«àÄ,8pÑ@0@˙@ÏÄ$HÄ2DàÑ@@˙@ÏĉHÄ"|pÑ@@˙@ÏÄHÄ @Ñ@@˙@ÏÄ$IÄ DàÑ@à@˙@ÏăFÄ 8páÄp@˙@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜@ÏÄÙ˜ˇ¿ÏĔĔĔĔĔĔĔ Ä÷    ÄÄ ‹    ÄÄ
  9093. ï*T®‹    Ä@8p‹    Ä‡@8p‹    Ä@
  9094. ï*T®‹    Ä@ ‹ Ä@◊ ÄÄ◊ˇ˛ ćÄ◊ Ä÷Ä”?Ä”!Ä”!Ä”!Ä”·ÓÄ”ÄNÄ”@éÄ”!ĔĔ ĔĔĔˇ˛Ä”ĔĔ˛Ä”ÇÄ”ÉÓÄ”Ç.Ä”Ç.Ä”Ç.Ä”˛.Ä” .Ä” .Ä” .Ä”?ÓÄ”–ˇ˛—ˇ˛ˇ7z@ˇ ˇˇˇˇ@
  9095. ˇ·ˇ‚7^
  9096. 4H\, Palatino&e.3+ä"CHAPTER ”)>8,     Helvetica    ˇˇ—ÚˇÆ(@äMenus4⁄ä˙(‡äCreating Menus
  9097. (‡155
  9098. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9099. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9100.  
  9101.  
  9102.  
  9103.  
  9104.  
  9105. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  9106. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9107. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9108.  
  9109.  
  9110.  
  9111.  
  9112.  
  9113. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜
  9114. ˛ˇˇˇˇˇ˙ˇ     ˇˇˇ˙ˇ
  9115. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  9116. 4€4—?òÄ
  9117. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9118. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9119.  
  9120.  
  9121.  
  9122.  
  9123.  
  9124. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  9125. ˛ˇˇˇˇ
  9126. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜    ˛ˇˇ˛
  9127. ˛ˇˇˇˇ
  9128. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\ähC(eä)fork and inserts each menu described therÈ°dONLNd)\Chô)πe into the menu bar4†°dONLNd<\ôhû)V. °dONLNd>\ûh§)Y«Ä°dONLNd?\£h”)
  9129. ou can defiw‡°dONLNdJ\‘h)1ne a constant .°dONLNdXiäuü(räthat°dONLNd\iüuÌ) indicates which ,
  9130. Courier°dONLNdmiÌu)N'MBAR'°dONLNdsiu)$ rR`°dONLNduiu.)esour$¿°dONLNdzi.uT)    ce to ope$¿°dONLNdÉiTu\)&n.°dONLNdÜÄäå®(âäCONST°dONLNdçéúöˆ+rMenuBar = 128;°dONLNdßéböÊ)Δ{menu bar resource ID}°dONLNdæ¶ä≤∫(Øä Listing 8-1°dONLNd…¶∫≤)0 shows a standarR`°dONLNdŸ¶≤B)Kd way to call R`°dONLNdÁ¶B≤~)=
  9131. GetNewMBarï°dONLNdÒ¶}≤Ä);.
  9132. ’H›4÷H›"÷H_
  9133. ˇ·ˇ‚7^    .°dONLNdÛÀä÷∂(”ä Listing 8-1°dONLNdˇÀŒ÷])D!Setting up the menu bar and menus
  9134. .°dONLNd!ÂäÒ(ÓäPROCEDURE DoSetupMenus;°dONLNd:ÛúˇÆ+VAR°dONLNd@Æfi+menuBar:°dONLNdLˆ )HHandle;°dONLNdTä®(äBEGIN°dONLNd[ú)\+ menuBar := GetNewMBar(rMenuBar);°dONLNd}+ú7*IF menuBar = NIL THEN°dONLNdï9ÆEP+DoBadError(eCantFindMenus);°dONLNd≥Uúa(^úSetMenuBar(menuBar);°dONLNd…cúo *DisposeHandle(menuBar)°dONLNdflc o&)Ñ;°dONLNd‚qú}D(zúAppendResMenu(GetMenuHandle(°dONLNd˛qD}™)®mApple), 'DRVR');°dONLNdúã‰(àú DrawMenuBar;°dONLNdçäô¢(ñäEND;°dONLNd#•ä±¢*The rR`°dONLNd(•¢±¿)outine R`°dONLNd/•¿±) DoSetupMenusR`°dONLNd;•±)H cr$¿°dONLNd>•±∏)
  9135. %eates the application’s menu bar by r˜ °dONLNdc•∑±ı)•eading in the °dONLNdq≤äæú(ªädefi°dONLNdu≤úæ¡)    nition frR`°dONLNd~≤¡æ‚)%om the R`°dONLNdÖ≤‚æ)!'MBAR'R`°dONLNdã≤æ )$ r$¿°dONLNdç≤ æ#)esour˜ °dONLNdí≤"æJ)    ce with r…Ä°dONLNdõ≤Jæa)(esourõ‡°dONLNd†≤aæz)ce ID õ‡°dONLNd¶≤zæ™)rMenuBarfiÄ°dONLNdÆ≤©æ¬)/. The fiÄ°dONLNd¥≤¬æ˛)
  9136. GetNewMBarfiÄ°dONLNdæ≤˛æ)< .°dONLNdøøäÀµ(»ä
  9137. function r”@°dONLNd…øµÀå)+0eturns a handle to the menu bar information storR¿°dONLNd˘øçÀΩ)ÿ ed in that rç°dONLNdøΩÀ’)0esour’@°dONLNd
  9138. ø’À)ce and in the .°dONLNdÃäÿÆ(’ä'MENU'°dONLNdÃÆÿ¥)$ rR`°dONLNd Ã¥ÿÀ)esour$¿°dONLNd%ÃÀÿ)ces whose IDs ar˜ °dONLNd5Ãÿf)Ie contained in the ˜ °dONLNdHÃfÿä)R'MBAR'˜ °dONLNdNÃäÿê)$ r…Ä°dONLNdPÃêÿß)esourõ‡°dONLNdUÃßÿÌ)ce. Notice that °dONLNdeŸä“(‚ä DoSetupMenus°dONLNdqŸ“Â)H
  9139.  makes surR`°dONLNd{ŸÂ0). e that the R`°dONLNdÜŸ0Âi)0value of the R`°dONLNdìŸiÂm)9r$¿°dONLNdîŸmÂâ)eturne$¿°dONLNdöŸâÂò)d h$¿°dONLNdùŸò ) andle isn’t $¿°dONLNd©Ÿ Â‹)2NIL$¿°dONLNd¨Ÿ‹Â); if it is, you .°dONLNdºÊäÚfl(Ôäshouldn’t continue.
  9140. H4H    °dONLNd–ˇä
  9141. ù*Note
  9142. ˇ·ˇ‚7^
  9143. .°dONLNd’ äŒ*Checking that °dONLNd„ Œ
  9144. )D
  9145. GetNewMBar°dONLNdÌ 
  9146. )< rR`°dONLNdÔ ')eturnR`°dONLNdÙ '4)s hR`°dONLNd˜ 4P)andle R`°dONLNd˝ PÑ) with a non-R`°dONLNd Ññ)4NILÙ°dONLNd  ï≥) value Ù°dONLNd ≥Ω)is .°dONLNdä$ì(!äprG °dONLNdî$¸)
  9147. obably overkill. It’s extr`°dONLNd1˝$ø)i*emely unlikely that the Menu Manager will °dONLNd[$ä0≥(-ä    have a prà`°dONLNdd$≥0‘))oblem rPÄ°dONLNdk$’0-)"eading your menu-r  °dONLNd}$.0O)Yelated r*‡°dONLNdÖ$O0g)!esours °dONLNdä$g0à)ces or fi^‡°dONLNdì$â0…)"nding enough .°dONLNd†0ä<í(9äfrR`°dONLNd¢0í<O))ee memory to hold the menu list to which R`°dONLNdÀ0O<y)ΩmenuBarR`°dONLNd“0y<≥)* is a handle. °dONLNd‡<äH (Eä"Nonetheless, it’s best to make surR`°dONLNd< Hk)ñe, because passinR`°dONLNd<kHr)Kg R`°dONLNd<rH¿)AppendResMenuR`°dONLNd"<¿H»)N aR`°dONLNd$<»H ) °dONLNd%HäTÚ(Qähandle whose value is °dONLNd;HÚT)hNIL!†°dONLNd>HTÀ)/ is likely to cause your application to crash. °dONLNdmTä`§(]äAs a rR`°dONLNdsT§`ø)esult, R`°dONLNdzTø`) DoSetupMenusR`°dONLNdÜT`)H calls the application-defiR`°dONLNd°T`ï)xned r$¿°dONLNd¶Tï`≥)outine °dONLNd≠`älΔ(iä
  9148. DoBadError°dONLNd∑`Δl€)< (defPÄ°dONLNdº`€l¸)ined in PÄ°dONLNdƒ`¸lR)!Listing 9-5 on page PÄ°dONLNdÿ`Rla)V178PÄ°dONLNd€`alŒ)) to alert the user of the .°dONLNdˆläxì(uäprG °dONLNd¯lîx4)
  9149. #oblem and terminate the application‰°dONLNdl4x?)†. Ifñ`°dONLNdl@x»)   the application can’t even put °dONLNd?xäÑœ(Åäup its menu bar§°dONLNdNxœÑÂ)E, therF`°dONLNdTxÊÑh)e’s no point in continuing to r"`°dONLNdsxiÑt)Éun˙‡°dONLNduxtÑv) .z‡°dONLNdvxwÑé) (See °¿°dONLNd|xéѶ)FigurtÄ°dONLNdÅx¶Ñ )    e 7-2 on °dONLNdäÑäê°(çäpage Z‡°dONLNdèÑ¢ê±)134Z‡°dONLNdíѱêc)* for the alert box displayed if the menu ru‡°dONLNdºÑcê{)≤esouræ °dONLNd¡Ñ{êØ)ces can’t be °dONLNdŒêäú™(ôäfound.),Zapf DingbatsÄ°dONLNdfiì∞õµ)&uˇb@ˇ ˇˇˇˇ@
  9150. ˇ·ˇ‚7^
  9151. 4*\¯, Palatino&e.3+l"CHAPTER ”)>8,     Helvetica    ˇˇ—ÚˇÆ(@lMenus4⁄*˙¯
  9152. (‡*156    )BHandling Menu Choices4^*¿¯
  9153. .°dONLNd\lhv(elIf ,
  9154. Courier°dONLNd\vh≤)
  9155.  
  9156. GetNewMBar°dONLNd\≤h∏)< rR`°dONLNd\∏h’)eturns R`°dONLNd\’h‰)a hR`°dONLNd\‰h˛)andleR`°dONLNd\˛h4)  with a non-R`°dONLNd*\4hF)6NILÙ°dONLNd-\Eha) valueÙ°dONLNd3\ah}), then Ù°dONLNd:\}h≈) DoSetupMenusÙ°dONLNdF\≈hÒ)H  calls the ˇˇ—§°dONLNdQiluv(rlprR`°dONLNdSivuì)
  9157. ocedur$¿°dONLNdYiìuô)e ˇˇtψd°dONLNd[iôu’)
  9158. SetMenuBarˇˇ—§ˆd°dONLNdei’u≤)<2 to install the individual menus into the menu baró»°dONLNdói≤u∂)›.  °dONLNdôi∑u¯)At that point, .°dONLNd®vlÇw(lyoц°dONLNd™vwÇ«) u no longer need t°dONLNdºv»Ç–)Q;he handle and you can dispose of it (by calling the Memory .°dONLNd˜Élèö(ål    Manager rR`°dONLNdÉöè∏).outine R`°dONLNdÉ∏è)DisposeHandleR`°dONLNdÉè)N). R`°dONLNdÉè()    Next R`°dONLNdÉ(èj) DoSetupMenuR`°dONLNd'Éjèp)BsR`°dONLNd(Épèú)  calls the R`°dONLNd3ÉúèÍ),AppendResMenuR`°dONLNd@ÉÍèÏ)N .°dONLNdAêlúu(ôlprG °dONLNdCêvúî)
  9159. ocedurfi`°dONLNdIêîúΩ)
  9160. e to add tY¿°dONLNdSêæú)*he items in the 2‡°dONLNdcêúè)CApple Menu Items folder to the ‡°dONLNdÇêèú¿)é    Apple menp`°dONLNdãê¿ú»)1u.˜Ä°dONLNdçê»úÈ) FinallyÄ°dONLNdïêÈúÓ)!, .°dONLNdóùl©~(¶lthe °dONLNdõù~©Δ) DoSetupMenus°dONLNdßùΔ©“)H prR`°dONLNd™ù“©Ô) ocedur$¿°dONLNd∞ùÔ©ù)'e displays the menu bar by calling the $¿°dONLNd◊ùù©fl)Æ DrawMenuBar$¿°dONLNd‚ùfl©·)B .°dONLNd„™l∂u(≥lprG °dONLNd™v∂î)
  9161. ocedurfi`°dONLNdΙî∂õ)e.
  9162. Ω*ÿ¯4æ*ÿ¯
  9163. Ë*¯4È*¯ Í*Ͳ
  9164. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdÓ’*Ëì(„* Handling Men˘°dONLNd˙’îËŸ)j    u ChoicesˇˇˇˇˇˇU˛(„8
  9165. °dONLNd˘lr(lY@Ä°dONLNd˘r!)'our application is informed of user menÛ‡°dONLNd,˘!O)Ø u choices i˘¿°dONLNd7˘OÜ).n a slightly r8@°dONLNdE˘áfl)8oundabout fashion. °dONLNdXl‘(lFirst, your application r„¿°dONLNdq‘Ò)h@eceives a mouse-down event indicating that the user has clicked .°dONLNd±l±(lin the menu bar¬†°dONLNd¿∞µ)D. d@°dONLNd¬µ∑)8At that time, you should call the Menu Manager function d@°dONLNd˙∑Û(∑
  9166. MenuSelectd@°dONLNdÛı)< .°dONLNd l,B()l-to determine which menu and menu item, if anyh`°dONLNd2 A,e)’    , the use”Ä°dONLNd; e,Ü)$r chose.ɇ°dONLNdC á,À)" When you call .°dONLNdR-l9®(6l
  9167. MenuSelect°dONLNd\-®9^)<&, the Menu Manager pulls down the apprR`°dONLNdÇ-^9‹)∂opriate menu and tracks all .°dONLNdû:lFs(Cl6subsequent mouse movement in the menu. When the user rÆ`°dONLNd‘:sFÊ(Cseleases the mouse button, .°dONLNdÓGlS®(Pl
  9168. MenuSelect°dONLNd¯G®SŸ)<  exits and rR`°dONLNdGŸSÒ)1?eturns to your application a long integer that indicates which .°dONLNdCTl`)(]l)menu and item the user chose. The high-or´Ä°dONLNdlT)`L)Ωder worï°dONLNdsTL`„)#$d of that long integer contains the °dONLNdóalm™(jl menu number© °dONLNd¢a™m)>, and the low-or∂‡°dONLNd≤am)Fder wor†`°dONLNdπam®)#d contains the menu item number{@°dONLNdÿa®m™)ï.°dONLNd⁄slr(|lTµ¿°dONLNd€sqå)o coorÀÄ°dONLNd·såÊ)Fdinate the menu numbers and menu item numbers with the menus and menu .°dONLNd'Älå•(âl items as defi°dONLNd4Ä•åÿ)9 ned in your °dONLNd@Äÿå¸)3'MBAR'°dONLNdFĸå)$ and °dONLNdKÄå5)'MENU'°dONLNdQÄ5å;)$ rR`°dONLNdSÄ;åR)esour$¿°dONLNdXÄRåã)ces, you’ll pr˜ °dONLNdfÄäå·)8obably want to defi˜ °dONLNdyÄ·åÌ)Wne .°dONLNd|çlôÛ(ñl a set of constants, as shown in º†°dONLNdúçÛô!)á Listing 8-2\‡°dONLNdßç"ô$)/.
  9169. º*ƒ¯4Ω*ƒ¯"Ω*_
  9170. ˇ·ˇ‚7^    °dONLNd©≤lΩò(∫l Listing 8-2°dONLNdµ≤∞Ω¿)DDefiÄ °dONLNdπ≤¿Ωs)'ning menu numbers and menu item numbers
  9171. .°dONLNd·Ãlÿä(’lCONST°dONLNdË⁄~Ê¢+mApple°dONLNdÛ⁄ÿʸ)Z= 128;°dONLNdˇ⁄DÊÊ)l{resource ID of Apple menu}°dONLNdË~Ù¢(Ò~iAbout°dONLNd'ËÿÙ)Z= 1;°dONLNd1ËDÙ¬)l{our About... dialog}°dONLNdI~ú(~mFile°dONLNdSÿ¸)Z= 129;°dONLNd_D‡)l{resource ID of File menu}°dONLNd{~ñ(~iNew°dONLNdÑÿ)Z= 1;°dONLNdä ~,¢()~iClose°dONLNdï ÿ,)Z= 2;°dONLNdõ.~:ú(7~iQuit°dONLNd•.ÿ:)Z= 4;°dONLNd¨J~Vú(S~mEdit°dONLNd∂JÿV¸)Z= 130;°dONLNd¬JDV‡)l{resource ID of Edit menu}°dONLNdfiX~dú(a~iUndo°dONLNdËXÿd)Z= 1;°dONLNdÓf~rñ(o~iCut°dONLNd˜fÿr)Z= 3;°dONLNd˝t~Äú(}~iCopy°dONLNdtÿÄ)Z= 4;°dONLNdÇ~é¢(ã~iPaste°dONLNdÇÿé)Z= 5;°dONLNdê~ú¢(ô~iClear°dONLNd)êÿú)Z= 6;°dONLNd0¨~∏ú(µ~mVenn°dONLNd:¨ÿ∏¸)Z= 131;°dONLNdF¨D∏‡)l{resource ID of Venn menu}ˇ,Ó@ˇ ˇˇˇˇ@
  9172. ˇ·ˇ‚7^
  9173. 4H\, Palatino&e.3+ä"CHAPTER ”)>8,     Helvetica    ˇˇ—ÚˇÆ(@äMenus4⁄ä˙(‡äHandling Menu Choices
  9174. (‡157
  9175. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9176. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9177.  
  9178.  
  9179.  
  9180.  
  9181.  
  9182. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  9183. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9184. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9185.  
  9186.  
  9187.  
  9188.  
  9189.  
  9190. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜
  9191. ˛ˇˇˇˇˇ˙ˇ     ˇˇˇ˙ˇ
  9192. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  9193. 4€4—?òÄ
  9194. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9195. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9196.  
  9197.  
  9198.  
  9199.  
  9200.  
  9201. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  9202. ˛ˇˇˇˇ
  9203. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜    ˛ˇˇ˛
  9204. ˛ˇˇˇˇ
  9205. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  9206. Courier.°dONLNd\úhÿ(eú
  9207. iCheckVenn°dONLNd\ˆh)Z= 1;°dONLNdjúvΔ(súiDoVenn°dONLNd!jˆv)Z= 2;°dONLNd'xúÑÿ(Åú
  9208. iClearVenn°dONLNd6xˆÑ)Z= 3;°dONLNd<Üúí“(èú    iNextTask°dONLNdJ܈í)Z= 4;°dONLNdPîú†“(ùú    iCheckArg°dONLNd^)Z= 5;°dONLNdd¢úÆÍ(´úiGetVennPrefs°dONLNdv¢ˆÆ)Z= 7;
  9209. ΩHÀ4æHÀ    .°dONLNd{ºä«ù(ƒäNote
  9210. ˇ·ˇ‚7^
  9211. °dONLNdÄ…ä’à*7The divider in a menu counts as a menu item, even thougπ‡°dONLNd∑…à’∂)˛ h the user °dONLNd¬’ä·é(fiäc@°dONLNd√’é·õ)an’à‡°dONLNdΔ’ú·À) t choose it.,Zapf Dingbats©@°dONLNd€ÿ–‡’)4u
  9212. .°dONLNd›ÊäÚÎ(ÔäIn general, you’ll defi°dONLNdÙÊÎÚ)ane a rR`°dONLNd˙ÊÚ6) outine like R`°dONLNdÊ6ÚÑ)3DoMenuCommandR`°dONLNdÊÑÚ∞)N
  9213.  shown in R`°dONLNdÊ∞Ú‡), Listing 8-3R`°dONLNd(ʇÚ)0  to handle .°dONLNd3Û䡙(¸äall men?¿°dONLNd:Û´ˇ‰)!u choices. BonÄ°dONLNdGÛ‰ˇÁ)9t∞‡°dONLNdHÛÁˇ)h your mT†°dONLNdPÛˇá))ouse-down event handler (i†°dONLNdiÛᡛ)wListing 6-9 on page +†°dONLNd}ÛfiˇÌ)W121+†°dONLNdÄÛÌˇ˝)) an–‡°dONLNdÑÛ˝ˇ)d .°dONLNdÜä ¶(    äyour k°dONLNdå¶ )ey-down event handler (°dONLNd£ E)o Listing 8-5°dONLNdÆE S)0 on °dONLNd≤S k)page °dONLNd∑k z)160°dONLNd∫z ~))°dONLNdª~ î) call °dONLNd¡î –)
  9214. MenuSelect°dONLNdÀ– 
  9215. )<. It is passed °dONLNd⁄äø(ä either the rR`°dONLNdÊø‚)5    esult of R`°dONLNdÔ‚)#
  9216. MenuSelectR`°dONLNd˘â)< (for menu selections) or R`°dONLNdâ≥)kMenuKeyR`°dONLNd≥Ì)* (for keyboar$¿°dONLNd'Ìı):d .°dONLNd)ä&(#ä equivalents of menu selections).
  9217. IHQ4JHQ"JH_
  9218. ˇ·ˇ‚7^    °dONLNdJ?äJ∂*$ Listing 8-3°dONLNdV?ŒJ5)DHandling menu selections
  9219. .°dONLNdoYHeb(bH/PROCEDURE DoMenuCommand (menuAndItem: LongInt);°dONLNd†gZsl+VAR°dONLNd¶ulÅ®+
  9220. myMenuNum:°dONLNd¥u¥ʼn)HInteger;°dONLNdøÉlè®(ål
  9221. myItemNum:°dONLNdÕÉ¥è‰)HInteger;°dONLNdÿëlù¢(öl    myResult:°dONLNdÂë¥ù‰)HInteger;°dONLNdül´¢(®l    myDAName:°dONLNd˝ü¥´fi)HStr255;°dONLNd≠lπ¢(∂l    myWindow:°dONLNd≠¥π)H
  9222. WindowPtr;°dONLNdªH«f(ƒHBEGIN°dONLNd&…Z’ +!myMenuNum := HiWord(menuAndItem);°dONLNdI◊Z„ *!myItemNum := LoWord(menuAndItem);°dONLNdlÂZÒΔ*GetPort(myWindow);°dONLNdÅZ¿*CASE myMenuNum OF°dONLNdïlú+mApple: °dONLNd°~)‰+CASE myItemNum OF°dONLNd∑+ê7¿+iAbout: °dONLNd≈9¢E¿+BEGIN°dONLNd—G¥Sˆ+ DoAboutBox;°dONLNd‚U¢a∫(^¢END;°dONLNdÎcêoΔ(lê    OTHERWISE°dONLNd˙q¢}∫+BEGI°dONLNd˛q∫}¿)N°dONLNd¥ãh(à¥GetMenuItemText(GetMenuHandle(°dONLNd$hã‘)¥mApple), myItemNum°dONLNd6‘ã⁄)l,°dONLNdDç ô&(ñ  °dONLNdEç&ôb)
  9223. myDAName);°dONLNdVõ¥ßÄ(§¥"myResult := OpenDeskAcc(myDAName);°dONLNd~©¢µ∫(≤¢END;ˇÓ@ˇ ˇˇˇˇ@
  9224. ˇ·ˇ‚7^
  9225. 4*\¯, Palatino&e.3+l"CHAPTER ”)>8,     Helvetica    ˇˇ—ÚˇÆ(@lMenus4⁄*˙¯
  9226. (‡*158    )BHandling Menu Choices4^*¿¯,
  9227. Courier
  9228. .°dONLNd\`hx(e`END;°dONLNdjNvx(sNmFile: °dONLNdx`Ñ~+BEGIN°dONLNdÜríÿ+CASE myItemNum OF°dONLNd3îц®+iNew: °dONLNd@¢ñÆ8+myWindow := DoCreateWindow;°dONLNda∞Ѻ¥(πÑiClose: °dONLNdpæñ 8+DoCloseWindow(FrontWindow);°dONLNdëÃÑÿÆ(’ÑiQuit: °dONLNdü⁄ñÊ¿+DoQuit;°dONLNd¨ËÑÙ∫(ÒÑ    OTHERWISE°dONLNdºˆñú+;°dONLNd¬rä(rEND;°dONLNd `x(`END;°dONLNd— N,l()NmEdit°dONLNd÷ l,r):°dONLNd€.`:x(7`BEGI°dONLNdfl.x:~)N°dONLNdÂ<rHP(Er%IF NOT SystemEdit(myItemNum - 1) THEN°dONLNdJÑVä+;°dONLNdX`dx(a`END;°dONLNdfNr~(oNmVennD: °dONLNd(t`Ä~+BEGIN°dONLNd2Çré+myWindow := FrontWindow;°dONLNdOêrúÿ*CASE myItemNum OF°dONLNdfûÑ™Ã+ iCheckVenn: °dONLNdy¨ñ∏+DoVennCheck(myWindow);°dONLNdï∫ÑΔ∫(√Ñ    iDoVenn: °dONLNd•»ñ‘ +DoVennAnswer(myWindow);°dONLNd¬÷Ñ‚Ã(flÑ iClearVenn: °dONLNd’‰ñ+DoVennClear(myWindow);°dONLNdÒÚÑ˛Δ(˚Ñ iNextTask: °dONLNdñ +DoVennNext(myWindow);°dONLNdÑΔ(Ñ iCheckArg: °dONLNd0ñ( +DoVennAssess(myWindow);°dONLNdM*Ñ6fi(3ÑiGetVennPrefs: °dONLNdc8ñD∂+0DoModelessDialog(rVennDPrefsDial, gPrefsDialog);°dONLNdôFÑR∫(OÑ    OTHERWISE°dONLNd©Tñ`ú+;°dONLNdØbrnä(krEND;°dONLNd∑p`|x(y`END;°dONLNdøåNòÑ(ïN    OTHERWISE°dONLNdÃö`¶f+;ˇ7–@ˇ ˇˇˇˇ@
  9229. ˇ·ˇ‚7^
  9230. 4H\, Palatino&e.3+ä"CHAPTER ”)>8,     Helvetica    ˇˇ—ÚˇÆ(@äMenus4⁄ä˙(‡äHandling Menu Choices
  9231. (‡159
  9232. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9233. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9234.  
  9235.  
  9236.  
  9237.  
  9238.  
  9239. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  9240. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9241. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9242.  
  9243.  
  9244.  
  9245.  
  9246.  
  9247. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜
  9248. ˛ˇˇˇˇˇ˙ˇ     ˇˇˇ˙ˇ
  9249. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  9250. 4€4—?òÄ
  9251. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9252. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9253.  
  9254.  
  9255.  
  9256.  
  9257.  
  9258. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  9259. ˛ˇˇˇˇ
  9260. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜    ˛ˇˇ˛
  9261. ˛ˇˇˇˇ
  9262. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  9263. Courier.°dONLNd\Zhr(eZEND;°dONLNdjZvÆ*HiliteMenu(0);°dONLNdxHÑ`(ÅHEND;°dONLNdêäúû+BThe °dONLNdêûúÏ)DoMenuCommand°dONLNd+êÏú¯)N prR`°dONLNd.ê¯ú) ocedur$¿°dONLNd4êú)8e is passed a long integer that encodes the menu number °dONLNdlùä©Ï(¶äand item number of th°dONLNdÅùÏ©)b
  9264. e chosen i°dONLNdãù©-)+tem. !†°dONLNdêù-©q)As you can see, !†°dONLNd†ùq©ø)DDoMenuCommand!†°dONLNd≠ùø©)N consists mainly °dONLNdæ™ä∂ù(≥äof a °dONLNd√™ù∂µ)CASE°dONLNd«™µ∂~)+ statement that branches on the menu number¬†°dONLNdÚ™}∂‘)». Each menu number@°dONLNd™‘∂˚)W , in turn, °dONLNd∑ä√‰(¿äconsists mainly of a °dONLNd$∑‰√¸)ZCASE°dONLNd(∑¸√‹)0 statement that branches on the menu item number¬†°dONLNdX∑€√)fl
  9265. . In this .°dONLNdbƒä–Ω(Õä
  9266. simple wayw‡°dONLNdlƒº–ã)2., you can handle all menus and all menu items.°dONLNdõ÷ä‚Ç(flä8Most of the innermost branches just call application-defi– °dONLNd‘÷Ç‚ô)¯ned rÀ‡°dONLNdŸ÷ô‚¯)outines to handle the °dONLNdÔ„äÔû(ÏäapprI@°dONLNdÛ„üÔÁ)opriate menu ite`°dONLNd„ËÔ)I    m choice.ø¿°dONLNd „Ôz)) (For example, if the use¨†°dONLNd%„{ÔÆ)j r chooses QÎ`°dONLNd0„ÆÔ∂)3ui⁄‡°dONLNd2„∑Ô¿)    t fÒ °dONLNd5„¿Ô√)    r∂ °dONLNd6„ƒÔ˜) om the File .°dONLNdBä¸Ω(˘ä menu, then °dONLNdMΩ¸ )3DoMenuCommand°dONLNdZ ¸É)N calls the application-defi°dONLNduɸô)xned rR`°dONLNdzô¸∑)outine R`°dONLNdÅ∑¸€)DoQuitR`°dONLNdá€¸)$ .) The code .°dONLNdì˝ä    º(ä that handleΔ†°dONLNdû˝º    Ë)2 s choices i`°dONLNd©˝È    )-n the R¿°dONLNdØ˝    2)    Apple menø@°dONLNd∏˝2    =)1u (ö@°dONLNdª˝>    l) Listing 8-4:Ä°dONLNdΔ˝m    u)/) iˆ¿°dONLNd…˝u    ´)s slightly difÜ@°dONLNd◊˝¨    ∏)7ferh¿°dONLNd⁄˝∏    Ì) ent, howeveÄ°dONLNd½Ó    Ò)6rR¿°dONLNdÊ˝Ò    Û).
  9267. ,H44-H4"-H_
  9268. ˇ·ˇ‚7^    °dONLNdË"ä-∂(*ä Listing 8-4°dONLNdÙ"Œ-Ù)D    Handling ê°dONLNd˝"Ù-N)&Apple menu selections
  9269. .°dONLNd<äH∫(EäiAbout: °dONLNdJúV∫+BEGIN°dONLNd%XÆd+ DoAboutBox;°dONLNd2fúr¥(oúEND;°dONLNd7täÄ¿(}ä    OTHERWISE°dONLNdBÇúé¥+BEGI°dONLNdFÇ¥é∫)N°dONLNdJêÆúb(ôÆGetMenuItemText(GetMenuHandle(°dONLNdhêbú)¥mApple), myItemNum, myDAName);°dONLNdâûÆ™z(ßÆ"myResult := OpenDeskAcc(myDAName);°dONLNd≠¨ú∏¥(µúEND;.°dONLNd≤ƒä–≤(Õä
  9270. If the useÄ°dONLNdºƒ≥–·)) r chooses t¬¿°dONLNd«ƒ·–Ê).hî °dONLNd»ƒÁ–Ú)e cN°dONLNdÀƒÛ–) omman<‡°dONLNd–ƒ–)"d z@°dONLNd“ƒ–$)AAÄ°dONLNd”ƒ%–B)bout V$Ä°dONLNdŸƒB–â)enn Diagramme©‡°dONLNdʃâ–í)Gr (p`°dONLNdȃì–
  9271. )
  9272. picked out by the constant ˇ˛t`.°dONLNd—ä›Æ(⁄äiAboutˇˇ| °dONLNd
  9273. —Æ›Ã)$), then ˇ˛t`x@°dONLNd—Õ›)DoMenuCommandˇˇ| x@°dONLNd—›é)N calls the application-defΩ °dONLNd9—é›ß)sined r †°dONLNd?—®›≈)outine ˇ˛t`á¿°dONLNdF—≈›)
  9274. DoAboutBoxˇˇ| á¿°dONLNdP—›)< (see .°dONLNdVfiä͇(ÁäListing 7-7 on page B°dONLNdjfi·Í)W145B°dONLNdmfiÍz)). Otherwise, the user must hav∑†°dONLNdåfizÍß)ä
  9275. e chosen a`°dONLNdñfi®Í). desk accessory or other .°dONLNdØÎä˜æ(Ùä item in the !†°dONLNdªÎæ˜3)4Apple menu. In that case, !†°dONLNd’Î3˜Å)uDoMenuCommand!†°dONLNd‚ÎŘá)N rÙ°dONLNd‰Îܘ)etrieves the name of the desk °dONLNd¯ä‚(äaccessory (by callin°dONLNd¯‚È)Xg °dONLNd¯ÈC)GetMenuItemText°dONLNd'¯CG)Z)°dONLNd(¯G…) and passes that name to the °dONLNdE¯… )Ç OpenDeskAcc°dONLNdP¯ )B .°dONLNdQä±(ä    function.°dONLNd[ä#∑*    Because V¿°dONLNdd∂#),Lenn Diagrammer doesn’t support any text editing, it simply calls the system .°dONLNd∞$ä0≠(-äsoftwarR`°dONLNd∑$≠0∏)#e r$¿°dONLNd∫$∏0÷) outine $¿°dONLNd¡$÷0)
  9276. SystemEdit$¿°dONLNdÀ$0»)<* to handle user choices in the Edit menu. $¿°dONLNdı$»0)∂
  9277. SystemEdit$¿°dONLNdˇ$0)< .°dONLNd1ä=Ë(:ächecks whether the frˇ‡°dONLNd1Ë=)^Aontmost window belongs to a desk accessory; if so, it passes the .°dONLNdV>äJ9(Gä'menu choice to the desk accessory and rR`°dONLNd}>9JV)Øeturns R`°dONLNdÑ>VJn)TRUER`°dONLNdà>nJƒ). The parameter to R`°dONLNdõ>ƒJ)V
  9278. SystemEditR`°dONLNd•>J )< is .°dONLNd©KäW®(TäinterprˇÄ°dONLNd∞K®W®):eted so you can pass the item number less 1 of the standar@°dONLNdÍK©W(T©d Edit menu commands..°dONLNd]äië(fäB°dONLNd]ëi£)eforR`°dONLNd]£iœ) e exiting, R`°dONLNd]œi),DoMenuCommandR`°dONLNd]ió)N calls the Menu Manager pr$¿°dONLNd7]ói¥)zocedur˜ °dONLNd=]≥i∫)e ˜ °dONLNd?]∫iˆ)
  9279. HiliteMenu˜ °dONLNdI]ˆi)< to °dONLNdMjäv,(sä#undo the menu title highlighting prR`°dONLNdpj,vü)¢ovided automatically by R`°dONLNdàjüv€)s
  9280. MenuSelectR`°dONLNdíj€vË)< or R`°dONLNdñjËv)MenuKey6†°dONLNdùjv)). ˇ¬@ˇ ˇˇˇˇ@
  9281. ˇ·ˇ‚7^
  9282. 4*\¯, Palatino&e.3+l"CHAPTER ”)>8,     Helvetica    ˇˇ—ÚˇÆ(@lMenus4⁄*˙¯
  9283. (‡*160    )BHandling Keyboard Equivalents4^*¿¯
  9284. ^*x¯4^*x¯
  9285. à*ê¯4â*ꯠä*ä˛
  9286. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdu*à∞(É*Handling Keyboar    Å°dONLNdu±à)ád EquivalentsˇˇˇˇˇˇU˛(É8
  9287. °dONLNdôl•ë(¢lKeyboar›°dONLNd%ôë•Ë)%Gd equivalents of menu commands allow the user to invoke a menu command °dONLNdl¶l≤s(Ølfrò‡°dONLNdn¶s≤∑)om the keyboari¿°dONLNd|¶∏≤√)Ed. W‡°dONLNd¶√≤…) Y`°dONLNdĶ…≤ñ).ou can determine if the user chose the keyboarq °dONLNdƶñ≤‚)Õd equivalent of a °dONLNd¿≥lø$(ºl%menu command by examining the event r@@°dONLNdÂ≥%ø7)πecor¥†°dONLNdÈ≥7ø‹)&d for a key-down event. If the user pr¶@°dONLNd≥‹øˆ)•essed °dONLNd¿lÃi(…l5the Command key in combination with another character] °dONLNdJ¿iÃÙ)˝!, you can then determine if this °dONLNdkÕlŸÙ(÷lcombination maps to a known 6 °dONLNdáÕıŸl)âCommand-key equivalentX‡°dONLNdùÕlŸÛ)w by calling the Menu Manager .°dONLNd∫⁄lÊí(„l    function ,
  9288. Courier°dONLNd√⁄íʺ)&MenuKeyd@°dONLNd ⁄ªÊ¿)). d@°dONLNdÃ⁄¿Ê) Listing 8-5d@°dONLNd◊⁄Ê*)0  shows the VHÄ°dONLNd„⁄)ʵ)9enn Diagrammer application’s HÄ°dONLNd⁄µÊÎ)å    DoKeyDownHÄ°dONLNd    ⁄ÎÊÌ)6 .°dONLNd
  9289. ÁlÛu(lprG °dONLNd ÁvÛî)
  9290. ocedurfi`°dONLNdÁîÛò)e®°dONLNdÁôÛ¡)    , which hK¿°dONLNdÁ¬Û´))2andles key-down events and determines if a keyboars@°dONLNdNÁ´Û‰)Èd equivalent °dONLNd[Ùlä(˝lwas pr[ °dONLNdaÙä§)essed.
  9291. #*+¯4$*+¯"$*_
  9292. ˇ·ˇ‚7^    °dONLNdhl$ò(!l Listing 8-5°dONLNdt∞$˙)DHandling Comman@°dONLNdÉ˚$)Kd-kÄ¿°dONLNdÜ$@) ey equivalents
  9293. .°dONLNdï3l?n(<l+PROCEDURE DoKeyDown (myEvent: EventRecord);°dONLNd¬A~Mê+VAR°dONLNd»Oê[¥+myKey:°dONLNd“Oÿ[ˆ)Hchar;°dONLNdÿ]liä(flBEGIN°dONLNdflk~w™+2myKey := chr(BAnd(myEvent.message, charCodeMask));°dONLNdy~Öí*.IF (BAnd(myEvent.modifiers, CmdKey) <> 0) THEN°dONLNdDáêìÆ+BEGIN°dONLNdM+DoMenuAdjust;°dONLNd^£¢ØV*DoMenuCommand(MenuKey(myKey));°dONLNd±êΩ®(∫êEND;°dONLNdÑølÀÑ(»lEND;°dONLNdâ◊l„Ä*The °dONLNdç◊Ä„∂)    DoKeyDown°dONLNdñ◊∂„¬)6 prR`°dONLNdô◊¬„fl) ocedur$¿°dONLNdü◊fl„Ì)e fi$¿°dONLNd£◊Ì„=)rst extracts the pr˜ °dONLNd∂◊<„q)O essed key fr…Ä°dONLNd¬◊q„í)5om the …Ä°dONLNd…◊턺)!message…Ä°dONLNd–◊º„≈)* fi…Ä°dONLNd”◊≈„Û)     eld of the °dONLNdfi‰lã(Ìlevent rR`°dONLNd‰ãù)ecor$¿°dONLNdȉù)d and then examines the $¿°dONLNd‰C)p    modifiers$¿°dONLNd
  9294. ‰CL)6 fi$¿°dONLNd‰L‘)    eld to determine whether the .°dONLNd*Òl˝‚(˙lCommand key was also prÄ°dONLNdAÒ‚˝a)vessed. If so, the application fi.`°dONLNdaÒb˝Ë)Ärst adjusts its menus and then .°dONLNdIJl
  9295. ñ(l
  9296. calls the °dONLNdä˛ñ
  9297. ‰)*DoMenuCommand°dONLNdó˛‰
  9298. )N prR`°dONLNdö˛
  9299. ) ocedur$¿°dONLNd†˛
  9300. &)e defi$¿°dONLNd¶˛&
  9301. <)ned i$¿°dONLNd´˛<
  9302. C)n $¿°dONLNd≠˛C
  9303. ô)Listing 8-3 on page $¿°dONLNd¡˛ô
  9304. ®)V157$¿°dONLNdƒ˛®
  9305. ´).$¿°dONLNd≈˛´
  9306. ≠) $¿°dONLNdΔ˛≠
  9307. œ)    In turn, °dONLNdœ l¢(l    DoKeyDown°dONLNdÿ ¢Œ)6  passes to °dONLNd„ Œ),DoMenuCommand°dONLNd P)N  the value rR`°dONLNd¸ P|)4
  9308. eturned fr$¿°dONLNd |ù),om the $¿°dONLNd ù«)!MenuKey$¿°dONLNd «Ú)*  function. .°dONLNdl$€(!lIf the key combination pr+Ä°dONLNd8‹$y)p$essed by the user is not the keyboarˇ°dONLNd\x$–)úd equivalent of any .°dONLNdp%l1}(.lcurrR`°dONLNdt%}1è)entlR`°dONLNdx%è1ú)y eR`°dONLNd{%ú1)nabled menu item, then R`°dONLNdí%11)kMenuKeyR`°dONLNdô%11|)* sets the high-or$¿°dONLNd™%|1û)Kder wor˜ °dONLNd±%ù1¬)!
  9309. d of its r…Ä°dONLNdª%¬1˜)% eturn value .°dONLNd«2l>~(;lto 0.
  9310. L*Z¯4M*Z¯    °dONLNdÕKlV*Note
  9311. ˇ·ˇ‚7^
  9312. °dONLNd“XldÜ*The Vÿ °dONLNd◊XÖdï)<enn Diagrammer application does not accept any text input fr Ä°dONLNdXñd¶(añom .°dONLNddlpê(mlthe user¬†°dONLNddèpî)#. d@°dONLNd dîpÆ)As a r6†°dONLNd&dÆp€) esult, the 6†°dONLNd1d€p)-    DoKeyDown6†°dONLNd:dp)6 pr    °dONLNd=dp:) ocedur€`°dONLNdCd9pj) e shown in €`°dONLNdNdjpö)1 Listing 8-5€`°dONLNdYdöpú)0 °dONLNdZpl|≤(yldoesn’t need an °dONLNdjp≤| )FELSE°dONLNdnp |#) clause to handle ke°dONLNdÇp#|/)Yyp°dONLNdÑp/|3) rR`°dONLNdÖp3|à)esses in which the .°dONLNdò|là˝(ÖlCommand key is not held down.,Zapf DingbatsꇰdONLNdæá)ñu
  9313. °dONLNd¿çlô≤(ñlSeveral keyboar˛@°dONLNdœç≤ô)Fd equivalents (listed i°dONLNdÊçô)`n X`°dONLNdËçô )Té °dONLNdÈçôA)able 8-1õ†°dONLNdÒçAôD)")ÔÄ°dONLNdÚçDôO) ar4Ä°dONLNdıçPô[) e rC °dONLNd¯ç[ôˆ) eserved for common commands in °dONLNdöl¶’(£lthe File and Edit menusâ`°dONLNd.ö’¶Ó)i. If yo¿`°dONLNd5öÓ¶.)ur application q°dONLNdDö/¶ª)Asupports these commands, you »Ä°dONLNdaöª¶‹)åshould °dONLNdhßl≥(∞l&assign these equivalents to the specifi•Ä°dONLNdèß≥J)•
  9314. ed commandÖ¿°dONLNdôßK≥Q):s.B¿°dONLNdõßR≥”) Otherwise, you should ignor“‡°dONLNd∑ß”≥Û)Åe these °dONLNdø¥l¿è(Ωlkeyboar*°dONLNdΔ¥ê¿Œ)$d equivalents.ˇ7~@ˇ ˇˇˇˇ@
  9315. ˇ·ˇ‚7^
  9316. 4H\, Palatino&e.3+ä"CHAPTER ”)>8,     Helvetica    ˇˇ—ÚˇÆ(@äMenus4⁄ä˙(‡äAdjusting Menus
  9317. (‡161
  9318. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9319. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9320.  
  9321.  
  9322.  
  9323.  
  9324.  
  9325. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  9326. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9327. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9328.  
  9329.  
  9330.  
  9331.  
  9332.  
  9333. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜
  9334. ˛ˇˇˇˇˇ˙ˇ     ˇˇˇ˙ˇ
  9335. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  9336. 4€4—?òÄ
  9337. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9338. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9339.  
  9340.  
  9341.  
  9342.  
  9343.  
  9344. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˛˙ˇ˙ˇˇ¸ˇˇ˛˛ˇˇ¸¸ˇˇ˛˙ˇˇ˛˙ˇ˝˛ˇ˛
  9345. ˛ˇˇˇˇ
  9346. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜    ˛ˇˇ˛
  9347. ˛ˇˇˇˇ
  9348. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  9349. gHn4gHn jäj
  9350. ˇ·ˇ‚7^    °dONLNd\äg±(dä    Table 8-1°dONLNd
  9351. \»gA)>Reserved keyboard equivalent‡°dONLNd&\BgF)zs
  9352. BHP4CHP°dONLNdflCäK©(IäIMPORTÄ°dONLNdÂC©Kπ)ANT
  9353. ˇ·ˇ‚7^
  9354. °dONLNdÈNäZê(WäY@Ä°dONLNdÍNêZ-)"ou should never assign the keyboar°dONLNd N-Zà)ùd equivalents listed i»‡°dONLNd"NàZê)[n @°dONLNd$NëZó)    TP°dONLNd%NñZ∏)able 8-1]Ä°dONLNd-N∏ZΩ)" t‡°dONLNd/NæZ≈)o °dONLNd1ZäfÚ(cäother menu commands.sÄ°dONLNdEZÛf>)i This helps ensurq†°dONLNdVZ>fO)Ke prÇ`°dONLNdZZOf√)edictable behavior among °dONLNdsfärœ(oäall applications.,Zapf DingbatsD†°dONLNdçi’q€)Ks
  9355. xHì4yHì
  9356. £H´4§H´ •H•
  9357. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdèêH£ƒ(ûHAdjusting MenusˇˇˇˇˇˇU˛(û8
  9358. °dONLNdü¥ä¿(ΩäYAt any given time during the execution of your application, it’s likely that some of the °dONLNd¯¡äÕ˘*commands in your menuÊ °dONLNd¡˘Õ)os will n†°dONLNd¡Õ)!oz °dONLNd¡Õ6)t be a¿°dONLNd¡7ÕF)ppr◊°dONLNd¡FÕ`)opriatl°dONLNd%¡aÕh)e.µ†°dONLNd'¡hÕΔ) For example, if the frY¿°dONLNd>¡«Õ)_ont window is a °dONLNdNŒä⁄Õ(◊ädialog windowˇ °dONLNd[ŒÃ⁄)B?, then any menu commands that manipulate only document windows °dONLNdö€äÁ
  9359. (‰äshould be disabled. Similarly °dONLNd∑€
  9360. Á)Ä, i˙Ä°dONLNd∫€Áq)f the desktop shows nÄÄ°dONLNdœ€rÁû)ao windowo°dONLNd◊€üÁ´)-s b≥†°dONLNd⁄€´Á˜) elonging to your °dONLNdÎËäÙµ(Òä
  9361. applicatioeÄ°dONLNdıË∂Ùæ),n,∂‡°dONLNd˜ËæÙ)I then the Close command in the File menu should be disabled. When a menu °dONLNd@ıä(˛ä!item is disabled, it is drawn in D‡°dONLNdaıD)à
  9362. a dimmed t¿°dONLNdkıE)3+ext and is not highlighted when the cursor °dONLNdñä( ä!passes over it. This disabling prfi °dONLNd∑a)ãevents the user frfl°dONLNd…af)LoTÄ°dONLNd gü) m choosing t`°dONLNd÷†Í)9hose commands.°dONLNdÂä (äAn easy way to achieve this efÿ‡°dONLNd õ)Ö"fect is to call an application-defiÄ°dONLNd&ú ≥)çned r@°dONLNd+≥ )outine that adjusts °dONLNd?!ä-—(*äthe menus accor+Ä°dONLNdN!“-)Hding to the curr‘`°dONLNd^!-¶)D"ent application context just beforS†°dONLNdÄ!ß-Ô)ëe you call either ,
  9363. Courier.°dONLNdí.ä:Δ(7ä
  9364. MenuSelect°dONLNdú.Δ:”)< or °dONLNd†.”:˝)MenuKeyd@°dONLNdß.¸:)). d@°dONLNd©.:1) Listing 8-6d@°dONLNd¥.1:ë)0 shows the version of d@°dONLNd .ë:Ÿ)` DoMenuAdjustd@°dONLNd÷.Ÿ:)H used by the .°dONLNd„;äGë(DäVú`°dONLNd‰;êG)enn Diagrammer application.
  9365. jHr4kHr"kH_
  9366. ˇ·ˇ‚7^    °dONLNd`äk∂(hä Listing 8-6°dONLNd `Œk)DAdjusting menus
  9367. .°dONLNdzäÜ(ÉäPROCEDURE DoMenuAdjust;°dONLNd5àúîÆ+VAR°dONLNd;ñÆ¢‰+    myWindow:°dONLNdHñˆ¢2)H
  9368. WindowPtr;°dONLNdU§Æ∞ÿ(≠ÆmyMenu:°dONLNd`§ˆ∞8)H MenuHandle;°dONLNdn≤Ææ“(ªÆcount:°dONLNdx≤ˆæ&)HInteger;    .°dONLNd({äÜü(ÉäKeys”‡°dONLNd-{∂Ü·),Command“@°dONLNd5{ˆÜ)@Menu
  9369. °dONLNd;âïï†(íï-A”‡°dONLNd>â∂ï—)!Select cÄ°dONLNdEâ“ïfl)All“@°dONLNdIâˆï)$Edit°dONLNdOôï•ü(¢ï-C”‡°dONLNdRô∂•Œ)!Copy“@°dONLNdWôˆ•)@Edit°dONLNd]©ïµ†(≤ï-N”‡°dONLNd`©∂µÀ)!New“@°dONLNdd©ˆµ)@File°dONLNdjπï≈†(¬ï-O”‡°dONLNdmπ∂≈ÿ)!Open…“@°dONLNdsπˆ≈)@File°dONLNdy…ï’û(“ï-P”‡°dONLNd|…∂’’)!Print…“@°dONLNdÉ…ˆ’)@File°dONLNdâŸï†(‚ï-Q”‡°dONLNdåŸ∂ )!Quit“@°dONLNd럈Â)@File°dONLNdóÈïıù(Úï-S”‡°dONLNdöÈ∂ı )!Save“@°dONLNdüȈı)@File°dONLNd•˘ïü(ï-V”‡°dONLNd®˘∂Õ)!Paste“@°dONLNdÆ˘ˆ)@Edit°dONLNd¥    ï¢(ï-W”‡°dONLNd∑    ∂Œ)!Close“@°dONLNdΩ    ˆ)@File°dONLNd√ï%û("ï-X”‡°dONLNdΔ∂%Δ)!Cut“@°dONLNd ˆ%)@Edit°dONLNd–)ï5û(2ï-Z”‡°dONLNd”)∂5œ)!Undo“@°dONLNdÿ)ˆ5)@Edit
  9370. àäîïêÄ        HHKÖ‡ˇˇˇˇˇˇ        äåìïcî¿î† @î¿î†c 
  9371. òä§ïêÄ        HHKµ‡ˇˇˇˇˇˇ        öå£ïcî¿î† @î¿î†c 
  9372. ®ä¥ïêÄ        HHKÖ‡ˇˇˇˇˇˇ        ™å≥ïcî¿î† @î¿î†c 
  9373. ∏äƒïêÄ        HHKµ‡ˇˇˇˇˇˇ        ∫å√ïcî¿î† @î¿î†c 
  9374. »ä‘ïêÄ        HHKÖ‡ˇˇˇˇˇˇ         å”ïcî¿î† @î¿î†c 
  9375. ÿä‰ïêÄ        HHKµ‡ˇˇˇˇˇˇ        ⁄å„ïcî¿î† @î¿î†c 
  9376. ËäÙïêÄ        HHKÖ‡ˇˇˇˇˇˇ        ÍåÛïcî¿î† @î¿î†c 
  9377. ¯äïêÄ        HHKµ‡ˇˇˇˇˇˇ        ˙åïcî¿î† @î¿î†c 
  9378. äïêÄ        HHKÖ‡ˇˇˇˇˇˇ        
  9379. åïcî¿î† @î¿î†c 
  9380. ä$ïêÄ        HHKµ‡ˇˇˇˇˇˇ        å#ïcî¿î† @î¿î†c 
  9381. (ä4ïêÄ        HHKÖ‡ˇˇˇˇˇˇ        *å3ïcî¿î† @î¿î†c ˇ@ˇ ˇˇˇˇ@
  9382. ˇ·ˇ‚7^
  9383. 4*\¯, Palatino&e.3+l"CHAPTER ”)>8,     Helvetica    ˇˇ—ÚˇÆ(@lMenus4⁄*˙¯
  9384. (‡*162    )BAdjusting Menus4^*¿¯,
  9385. Courier
  9386. .°dONLNd\lhä(elBEGIN°dONLNdj~v+myWindow := FrontWindow;°dONLNd"Ü~í*IF myWindow = NIL THEN°dONLNd;îê†û+-DisableMenuItem(GetMenuHandle(mFile), iClose)°dONLNdj¢~Æñ(´~ELSE°dONLNdq∞êºû+-EnableMenuItem(GetMenuHandle(mFile), iClose);°dONLNd°Ã~ÿ>(’~ myMenu := GetMenuHandle(mVennD);°dONLNd√⁄~Ê,*IF IsAppWindow(myWindow) THEN°dONLNd„ËêÙD+FOR count := 1 TO kNumTools DO°dONLNdˆ¢P+EnableMenuItem(myMenu, count)°dONLNd$~ñ(~ELSE°dONLNd+êD+FOR count := 1 TO kNumTools DO°dONLNdM ¢,\+DisableMenuItem(myMenu, count);°dONLNdo<~H2(E~IF IsDAccWindow(myWindow) THEN°dONLNdêJêVz+'EnableMenuItem(GetMenuHandle(mEdit), 0)°dONLNdπX~dñ(a~ELSE°dONLNd¿fêrÜ+)DisableMenuItem(GetMenuHandle(mEdit), 0);°dONLNdÎt~Ä¿(}~ DrawMenuBar°dONLNdˆt¿ÄΔ)B;°dONLNd¯Çlér(ãlE°dONLNd˘ÇréÑ)ND;°dONLNd˝öl¶Ä(£lThe °dONLNdöĶ») DoMenuAdjust°dONLNdö»¶‘)H prR`°dONLNdö‘¶Ò) ocedur$¿°dONLNdöÒ¶)e calls $¿°dONLNdö¶R) FrontWindow$¿°dONLNd)öR¶∑)B to get a pointer to the $¿°dONLNdBö∑¶ø)efr˜ °dONLNdDö涄)ontmost .°dONLNdLßl≥Â(∞lwindow belonging to the VÉ °dONLNde߉≥])xenn Diagrammer applicatio`†°dONLNd~ß^≥É)z
  9387. n. If ther¿°dONLNdàßÑ≥ )&e is no window .°dONLNdó¥l¿æ(Ωlbelonging to the Vd@°dONLNd©¥Ω¿E)Qenn Diagrammer application, d@°dONLNd≈¥E¿ç)à DoMenuAdjustd@°dONLNd—¥ç¿‰)H disables the Close .°dONLNd¡lÕ5( l)menu command in the File menu. ConverselyJÄ°dONLNd¡5ÕT)…    , if ther© °dONLNd¡TÕfi)e is a window belonging to the .°dONLNd6Œl⁄ß(◊lapplication, °dONLNdCŒß⁄Ô); DoMenuAdjust°dONLNdOŒÔ⁄o)H enables the Close command.°dONLNdk‡lÏp(ÈlI°dONLNdl‡pÏê)f the frR`°dONLNdt‡êÏ() ont window is a document windowg`°dONLNdì‡'ÏC)ó, then g`°dONLNdö‡CÏã) DoMenuAdjustg`°dONLNd¶‡ãÏ”)H enables all the .°dONLNd∑Ìl˘∏(ˆldocument-specifi¸°dONLNd«Ì∏˘)Lc commands in the V◊†°dONLNd⁄Ì˘Ã)\+enn menu; otherwise, it disables all those .°dONLNd˙l£(l commands. (°dONLNd˙£Î)7 DoMenuAdjust°dONLNd˙ÎÒ)H rR`°dONLNd˙Òé)"etrieves the menu handle by callinR`°dONLNd@˙éï)ùg R`°dONLNdB˙ï„)GetMenuHandleR`°dONLNdO˙„Î)N aR`°dONLNdQ˙ί)nd °dONLNdTl…(lpasses that handle t°dONLNdh…–)]o °dONLNdj–$)EnableMenuItem°dONLNdx$1)T or °dONLNd|1ã)DisableMenuItem°dONLNdããí)Z.)°dONLNdél%s("lYï°dONLNdèr%)!ou can disable or enable an entirg`°dONLNd∞%R)èe menu by passing g`°dONLNd¬R%¨)QDisableMenuItemg`°dONLNd—¨%π)Z or °dONLNd’&l2¿(/lEnableMenuItem°dONLNd„&¿2Ä)T+ the value 0 in place of a menu item number¬†°dONLNd&2ˆ)ø. This is the strategy that °dONLNd*3l?¥(<l DoMenuAdjust°dONLNd63¥?5)H follows for the Edit menu. Vd@°dONLNdS34?fl)Ä&enn Diagrammer does no editing of its °dONLNdy@lLé(Ilown, so °dONLNdÅ@éL÷)" DoMenuAdjust°dONLNdç@÷L’)H8 makes certain to enable the Edit menu only when a desk °dONLNd≈MlY–(Vlaccessory window is frR`°dONLNd€M–Y<)dontmost. When you call R`°dONLNdÚM<Yñ)lDisableMenuItemR`°dONLNdMñY£)Z or °dONLNdZlf¿(clEnableMenuItem°dONLNdZ¿fˆ)T  in this wayd@°dONLNdZıf")5    , however¶‡°dONLNd(Z!fŸ),), you also need to call the Menu Manager °dONLNdQglsv(plprR`°dONLNdSgvsì)
  9388. ocedur$¿°dONLNdYgìsö)e $¿°dONLNd[gös‹) DrawMenuBar$¿°dONLNdfg‹sE)B to update the menu bar‚ °dONLNd}gEsÜ)i’s appearance.ˇv@ˇ ˇˇˇˇ@
  9389. ˇ·ˇ‚7^
  9390. 4⁄∫˙,     Helvetica    .(‡∫Contents, Palatino
  9391. (‡163    3, Ã(#∫CHAPTER ßí)h9
  9392. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9393. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9394.  
  9395.  
  9396.  
  9397.  
  9398.  
  9399. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  9400. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9401. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9402.  
  9403.  
  9404.  
  9405.  
  9406.  
  9407. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜¸˛ˇˇ    ˇ¸ˇ ˇˇ˛ˇ˙ˇ˛¸ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜ˇˇˇˇˇˇ(JH
  9408. Figure 9-0*     Listing 9-0*    T)able 9-0
  9409. zH,
  9410. 4zH, H°dONLNd
  9411. ∫*˘+m Contentsˇˇˇˇˇˇ
  9412. ˇ·ˇ‚7^ˇˇ∫Ρ◊(qH9°dONLNd]∫y”)rPrpÜ°dONLNd]‘y()ocesses
  9413. °dONLNd;∫G‚(D∫About Pr‹Ä°dONLNd;‚G)(ocesses Ä°dONLNd$;G&)5165°dONLNd(H∫Tı(Q∫Specifying Pr^†°dONLNd5HıT@);ocessing Options›Ä°dONLNdGHTTc)_168°dONLNdKU∫af(^∫"Handling Suspend and Resume EventsO`°dONLNdoU{aä)¡170°dONLNdsb∫n(k∫Handling Null EventsÚ‡°dONLNdâb/n>)u173°dONLNdço∫{Ô(x∫ Quitting an å°dONLNdôoÔ{#)5 Application
  9414.  °dONLNd¶o8{G)I175°dONLNd™|∫àÙ(Ö∫ Handling ErrC °dONLNd∂|ıà);orsË@°dONLNdª|à%)!176°dONLNdøâ∫ï>(í∫Checking the Operating Envir=‡°dONLNd€â?ï`)Öonment6 °dONLNd„âuïÑ)6178ˇJ@ˇ ˇˇˇˇ@
  9415. ˇ·ˇ‚7^
  9416. 4^*¿¯ˇ8>@ˇ ˇˇˇˇ@
  9417. ˇ·ˇ‚7^, Palatino&e.3+ä"CHAPTER ”)>9
  9418. 4⁄ä˙,     Helvetica    (‡äAbout Processes
  9419. (‡165
  9420. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9421. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9422.  
  9423.  
  9424.  
  9425.  
  9426.  
  9427. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  9428. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9429. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9430.  
  9431.  
  9432.  
  9433.  
  9434.  
  9435. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜¸˛ˇˇ    ˇ¸ˇ ˇˇ˛ˇ˙ˇ˛¸ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  9436. 454+?òÄ
  9437. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9438. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9439.  
  9440.  
  9441.  
  9442.  
  9443.  
  9444. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˜˛˙ˇ˚ˇˇ˚ˇˇ˙ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  9445. ˛ˇ˛ˇˇ
  9446. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  9447. ˛ˇ˛ˇˇ
  9448. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  9449. ˛ˇˇˇˇ
  9450. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  9451. ˛ˇˇˇˇ
  9452. ˛ˇˇˇˇ    ˝ˇˇˇ    ˛ˇˇ˛
  9453. ˛ˇˇˇˇ
  9454. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  9455. ˛ˇˇˇˇ
  9456. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  9457. ˛ˇˇˇˇ
  9458. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜    ˇˇ—ÚˇÆ°dONLNd8äC≤(@ä    Processesˇˇˇˇˇˇ≠>(@9
  9459. °dONLNd
  9460. \ähê(eäY@Ä°dONLNd \êh    )Xour application is usually only one of several applications that a user has open at one °dONLNdciäu¢(rätime. ¿°dONLNdii£u©)Y€@°dONLNdji®u)our application must ther~@°dONLNdÉiu*)qefor÷@°dONLNdái*uD)e sharÛ@°dONLNdçiDu´)e the available system r˘°dONLNd•i´u√)gesourA@°dONLNd™iƒu)ces such as the °dONLNd∫väÇ¥(ä
  9461. central prÔ¿°dONLNdƒv¥Çˇ)*Focessing unit (CPU) and the available random-access memory (RAM). The °dONLNd
  9462. Éäè‚(åäJMacintosh Operating System uses a very simple and elegant method for your °dONLNdTêäú‹*application to coor°dONLNdgê›ú)S@dinate its actions with those of other open applications. The Pry‡°dONLNdßêú    (ôocess °dONLNd≠ù䩲(¶äManager sends events, thr•¿°dONLNdΔù˛©k)tough the Event ManagerT@°dONLNd‹ùk©    )m&, to your application informing it of °dONLNd™ä∂K(≥ä*impending changes in your application’s pr°@°dONLNd,™K∂ë)¡ocessing status. k¿°dONLNd=™í∂ò)GY,@°dONLNd>™ò∂)our application needs to °dONLNdW∑ä√ç(¿ärE°dONLNdX∑é√%)"espond to those events in the appr‚¿°dONLNdz∑%√Ä)óopriate way to ensurÄ°dONLNdé∑Å√)\e the smooth operation of all °dONLNd¨ƒä–€(Õäopen applications.°dONLNdø÷ä‚p*3This chapter describes what you need to do to ensurÒ¿°dONLNdÚ÷p‚˛)Ê!e that your application operates °dONLNd„äÔ˜(ÏäQsmoothly in the Macintosh Operating System. It describes how your application is °dONLNddä¸X*+launched and how the Operating System contr† °dONLNdèX¸)Œ'ols access to the CPU and other system °dONLNd∂˝ä    ç(ärE°dONLNd∑˝é    ¶)esourç@°dONLNdº˝¶    …)    ces to crÒ@°dONLNd≈˝…    l)#%eate a cooperative multitasking envirØ`°dONLNdÍ˝m    )§!onment in which your application °dONLNd 
  9463. än(ä3and any other open applications execute. This envir_°dONLNd>
  9464. n)‰#onment is managed primarily by the °dONLNdaä#ì( äPrN†°dONLNdcî#’)
  9465. ocess ManagerÆ°dONLNdp‘#)@ , which is r    `°dONLNd|#~)1esponsible for launching prÄ°dONLNdó~#
  9466. )y!ocesses, scheduling their use of °dONLNd∏$ä0È(-äthe available system r< °dONLNdŒ$Í0)`esourÑ`°dONLNd”$0)<ces, and handling their termination. This chapter shows how °dONLNd1ä=í(:äto,Zapf Dingbats°dONLNdGäNè*n
  9467. °dONLNdDñP‚) indicate the desirg@°dONLNd&D‚PØ)L.ed size of your application’s memory partition°dONLNdUYä`è(_än
  9468. °dONLNdWVñbÛ) Ksuspend your application’s execution when another application needs the CPU°dONLNd£kärè(qän
  9469. °dONLNd•hñtô) rE°dONLNd¶hötQ)'esume execution when your application rR‡°dONLNdÕhQtÜ)∑ egains contr‡‡°dONLNdŸhÜt¡)5ol of the CPU°dONLNdÁ}äÑè(Éän
  9470. °dONLNdÈzñÜa) -terminate your application when the user quit9¿°dONLNdzbÜΔ)Ãs or when a serious err>¿°dONLNd-zΔÜÓ)d    or occurs°dONLNd7èäñè(ïän
  9471. °dONLNd9åñò) determine what softwar䇰dONLNdOåò))j    e and harÿ°dONLNdXå)ò@))dwar¿°dONLNd\åAòb)e featurÖ`°dONLNddåbòv)!es ar—°dONLNdiåvò)#e available on a particular machine°dONLNdçùä©è(¶äF °dONLNdéùꩶ)?or a complete description of the cooperative multitasking envira¿°dONLNdÕù¶©(¶¶onment, see the chapter °dONLNd™ä∂ò(≥ä“PrN†°dONLNdË™ô∂Ï)ocess Manager” in C¿°dONLNd˙™Ì∂A)TInside Macintosh: Pr˜Ä°dONLNd™A∂\)Tocessesο°dONLNd™]∂)'. For a complete description of how to °dONLNd<∑ä√Í(¿ähandle suspend and r\†°dONLNdP∑Í√ )`1esume events, see the chapter “Event Manager” in Ì`°dONLNdÅ∑ √)‡Inside Macintosh: °dONLNdìƒä–Ω(Õä Macintosh TÄ°dONLNdûƒº–)2oolbox EssentialsµÄ°dONLNd؃–)E.
  9472. ◊HÚ4ÿHÚ
  9473. H
  9474. 4H
  9475.  H
  9476. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd±ÔHä(˝HAbout Prml°dONLNdπÔäΩ)BocessesˇˇˇˇˇˇU˛(˝9
  9477. °dONLNd¡äP(ä*The Macintosh Operating System, the FinderÛÄ°dONLNdÎOÂ)≈", and several other system softwar≈Ä°dONLNdÊÌ)óe °dONLNd ä,()äcomponents work together to prK°dONLNd- ,;)èovide a 4Ä°dONLNd5 <,¥)#multitasking environmentn†°dONLNdM ¥,)x in which a user can °dONLNdb-ä9(6äThave multiple applications open at once and can switch between open applications as °dONLNd∂:äFü*desirO¿°dONLNdª:†F∂)ed. Tj‡°dONLNd¿:µF¿)o r?°dONLNd√:¡F) un in this enviry°dONLNd”:FQ)Conment, however}‡°dONLNd‚:QF˛)M(, your application must follow certain r{Ä°dONLNd    
  9478. :˛F)≠ules °dONLNd    GäSC(Pä+governing its use of the available system r¸`°dONLNd    :GCS[)πesourD†°dONLNd    ?G\S))ces. Because the smooth operation of all °dONLNd    hTä`s(]ä5applications depends on their cooperation, this envirÅ`°dONLNd    ùTs`’)Èonment is known as a Z`°dONLNd    ≤T÷`)c cooperative °dONLNd    æaäm(jämultitasking environment.
  9479. {Hâ4|Hâ    °dONLNd    ÿzäÖù*Note
  9480. ˇ·ˇ‚7^
  9481. °dONLNd    ›áäì%*"The cooperative multitasking envir§@°dONLNd    ˇá%ì©)õonment is available in system °dONLNd
  9482. ìäü´(úäsoftwar‰¿°dONLNd
  9483. $ì´ü)!e versions 7.0 and laterP‡°dONLNd
  9484. <ìüµ)e%, and when the MultiFinder option is °dONLNd
  9485. aüä´(®ä!enabled in earlier system softwar¡@°dONLNd
  9486. Çü´J)í e versions.ñ†°dONLNd
  9487. ñ¢P™U)4uˇµH@ˇ ˇˇˇˇ@
  9488. ˇ·ˇ‚7^
  9489. 4*\¯, Palatino&e.3+l"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@l    Processes4⁄*˙¯
  9490. (‡*166    )BAbout Processes4^*¿¯
  9491. °dONLNd\lhÎ(elSAlthough a number of documents and applications can be open at the same time, only °dONLNdSilu3*/one application is the active application. The «†°dONLNdÇi3uM)«activen¿°dONLNdàiNuP) Ó¿°dONLNdâiPuÉ) applicationꇰdONLNdîiÑu‘)4 is the application °dONLNd®vlÇ~(lcurrØ°dONLNd¨v~ÇI)0ently interacting with the user; its icon appear∞`°dONLNd‹vIÇ])Às at tr °dONLNd‚v^Ç›)he right side of the menu baroÄ°dONLNdˇv›Çı). The °dONLNdÉlè?(ål1active application displays its menu bar and is ri °dONLNd6É?è‡)”%esponsible for highlighting the contrF`°dONLNd[ɇèÔ)°ols °dONLNd_êlúã(ôl    of its fr °dONLNdhêãú÷)ontmost window™ °dONLNdvê÷úÊ)K. In Z°dONLNd{êÁúˇ)Figur,¿°dONLNdÄêˇú)e 9-1 @°dONLNdÖêú), Vʆ°dONLNdàêúŸ) *enn Diagrammer is the active application. °dONLNd≤ùl©v(¶lWÛ`°dONLNd≥ùu©˛)    indows of other applications arö °dONLNd“ùˇ©¢)ä&e visible on the desktop behind the frOÄ°dONLNd¯ù£©Ó)§ontmost window/†°dONLNdùÓ©)K.
  9492. À*‹¯4Ã*‹¯"Ã*]
  9493. ˇ·ˇ‚7^    °dONLNd¡lÃñ(…l
  9494. Figure 9-1°dONLNd¡ÆÃZ)B*The desktop with several applications open
  9495. °dONLNd>’l·(fil%The Operating System schedules the prÀ¿°dONLNdc’·Ú)≠3ocessing of all applications and desk accessories, °dONLNdñ‚lÓÕ(Îlknown collectively as =‡°dONLNd¨‚ŒÓ˚)b
  9496. processes.`°dONLNd∂‚¸ÓŸ).1 When a user opens an application, the Operating °dONLNdÁÔl˚’(¯lPSystem loads the application code into memory and schedules the application to rŒ`°dONLNd7Ô’˚Ó(¯’un at °dONLNd=¸lÒ(lthe next available opportunity.‡°dONLNd[¸ÒW)Ö, usually when the curr)¿°dONLNdr¸Wq)fent prN@°dONLNdx¸qé)ocess rº†°dONLNd¸éÏ)elinquishes the CPU. °dONLNdî    lÙ(l In most cases, the application rüÄ°dONLNd¥    Ùæ)à/uns immediately (or so it appears to the user).°dONLNd‰l'‰($lWhen your application is fi”¿°dONLNdˇ‰'B)xrst launched, it is the [ °dONLNdC'ù)_foreground process.‡°dONLNd*ù'‘)Z Usually the °dONLNd7(l4x(1lfor`°dONLNd:(y4á)egr, °dONLNd=(á4™)ound pr›°dONLNdD(™4Ï)#ocess has contr”@°dONLNdS(Ï4|)B ol of the CPU and other system r Ä°dONLNds(}4ï)ëesourh¿°dONLNdx(ï4·)ces, but it can agrÒ@°dONLNdã(·4Ì)Lee °dONLNdé5lA{(>lto r|‡°dONLNdí5{AΩ)elinquish contræ °dONLNd°5ΩA)Bol of the CPU if ther    @°dONLNd∂5A&)Ye ar‡°dONLNd∫5&AÎ)-e no events (other than null events) pending °dONLNdÁBlNÜ(Klfor it. à`°dONLNdÔBÜNç)A√°dONLNdBçNô) pr
  9497.  °dONLNdÛBöN6)&ocess that is open but that isn’t currò@°dONLNdB6Nk)úently the forX‡°dONLNd&BlNz)6egrv†°dONLNd)BzNù)ound pr'Ä°dONLNd0BûNı)$ocess is said to be a °dONLNdFOl[…(Xlbackground process.
  9498. ›hæÕ4‹g›hòR@à@à›hΔØØØØØØØØØØ≥ˇ˛≥Ä≤@≤   π¯¸ ºÄ¸ 0ΩǸ  Ê`AÃ… ¬b ‹` Ã… ¬ë! ˛c¿EÃx¯¯ÃÇë ¯f` ""˝ÃÃÒ ¯Δf`DA˝Ãà   ô! ˛g‡ ""øÃÃÃf! ˛fDAÿÃÃø! ¸f  ""»ƒÃÃà ÿc¿AxÃÃÀÄ πO¯ πP˛  π`˚  π@˚ ≤?≤ˇ5≤UP*ı™ø»ˇ¯™∞5ıUP»’˘UP*ı™∞»Í˘™∞5ıUP»’˘UP*ı™∑Ô˛ÓˇÄÙÌˇ˛Í˘™∞5ıUPÌÃ˛å˚¿Î’˘UP"*ı™∑ËÓˇÄÃ˛ ¿¸¿Ìˇ˛Í˘™∞!5ıUPÌ Ãx¯¯ Ãx|Ÿ„˛¿Î’˘UP#*ı™∑ËÓˇÄ˝Ã     ÃåÂ33¿Ìˇ˛Í˘™∞5ıUPÌ˝Ã Ã|áÛ3¿Î’˘UP$*ı™∑ËÓˇÄøÃà ˛Ã√33¿Ìˇ˛Í˘™∞!5ıUPÌÿÃà ˛Ã√33¿Î’˘UP$*ı™∑ËӡĻƒÃà ˛Ã√33¿Ìˇ˛Í˘™∞!5ıUPÌ xÃÃå||¡Û3¿Î’˘UP*ı™∑Ô˛ÓˇÄ˙ ¸Ìˇ˛Í˘™∞5ıUP‰åÊ’˘UP*ı™∞‰xÊ͢™∞5ıUP»’˘UP*ı™ø»ˇÍ˘™∞5ıUPÄ ’’˘UP*ı™∞IJ ’͢™∞5ıUPÄ Åà’’˘UP-*ı™∞Ä0 ad ˝Á͢™∞,5ıUPÄ0 ! d˛ ˝Ê’˘UP/*ı™ ∞Ä0"LT» Ó2 q√∏¿ΔZÃg1K≥8Ë͢™∞45ıU PÅ˛,$r8U%A    IQJA%!)cíII§Ë’UP˛UUP4*ı™ ∞Å˛ X)œÕpM%@…IQJA%·    BÇII§ËÍ™Ø˛ˇ ™™∞45ıU PÄ0@∞"@‡M"Ä)H°JA%)BíII§Ë’UO˛ˇ’UUP5*ı™!∞0¿Ä0ˇ`$0¿D¬Å…0°I¿§¿ΔB a18ì$ÄÈÍ™Ø˛ˇ ™™∞%5ıUP0¿Ä0Å¿(ÕÄ˙@›’UO˛ˇ’UUP&*ı™∞ÄÅÄ =˚Ä›Í™Ø˛ˇ ™™∞êà@ïà@ï›ΔÕÄ@ P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞òR@Äà@Äàh"Δ!5ıUPġ ’’UO˛ˇ’UUP!*ı™∞Ä ’Í™Æ˛ˇ ™™∞5ıU_»ˇ’UO˛ˇ’UUP*ı™∞»Í™Ø˛ˇ ™™∞5ıU_»ˇ’UP˛UUP*ı™∞»Í˘™∞5ıUP»’˘UP*ı™∞»Í˘™∞5ıUP»◊˙ˇUP*ı™∞»Ô˙ˇ™∞5ıUP»◊˙ˇUP$*ı™∞˘˜ ˜`˘    Óˇˇ˜ˇˇ™∞$5ıUP˘˜˜ ˘    ÷Ôˇˇ˜ˇˇUP/*ı™∞˙2N˙;ƒ«Ú1íp˚ÿŒ&8˙    ÓÏflfófÿœ™∞/5ıUP˙    
  9499. ê˙$Ö%(ÚHTÄ˚$))@˙    ÷j⁄pZ◊∑UP/*ı™∞˙    ; ˙$ù%ÊÚIÿ`˚$È/0˙    Ó˚j¬˜ZŸá™∞/5ıUP˙    JÇ˙$•%ÚJT˚%)(˙    ÷˚ufi˜ZfiøUP/*ı™∞˙:\˙$ùƒŒÚ1“‡˚$Ó&p˙    Ó¸ıʘgœ™∞5ıUPÔ¯◊˙ˇUP*ı™∞Ô¯Ô˙ˇ™∞5ıUP»’˘UP&*ı™∞˘ˇ¯˚?ˇÔˇ¿¸ˇ¯¯Í˘™∞+5ıUP˘>¿˝¿¯Ò>¸>¿˘’˘UP/*ı™∞˙¿<˝xÄÚ‡˛¿<˘Í˘™∞05ıUP˙˛˛¿˛‡Úp˛8˛˛˘’˘UP/*ı™∞˙p˝‡˝ÛIJ˛p˝‡˙͢™∞.5ıUP˚Ä˝0˝Û ¸¿Ä˝˙’˘UP,*ı™∞˚¸¿¸¿Ù0¸0¸˙͢™∞05ıUP˚ ¸ĸ`Ù`¸ ¸˙’U_˛ˇ˛UP0*ı™∞˚0˚¿˚ıĸ0˚¿˚Í™∞  ˛™∞/5ıUP˚@˚ ˚ı˚@˚ ˚’UP  ˛UP/*ı™∞¸Ä˚0˚ı ˙¡Ä˚˚    Í™∞  *™™∞.5ıUP¸˙ `˚Ĉ˙c˙ ˚    ’UP  5UUP-*ı™∞¸˙Ä˙@ˆ ˙˙˚    Í™∞  *™™∞,5ıUP¸˙˘ ˆ@˙˙˚    ’UP  5UUP-*ı™∞¸˙Ä˙ˆÄ˙˘Ä¸    Í™∞  *™™∞-5ıUP¸ ˙@˙˜˘"˘@¸    ’UP  5UUP-*ı™∞¸@˙ ˙˜˘A˘ ¸    Í™∞  *™™∞.5ıUP¸Ä˙˙˜˘ÄÄ˙¸    ’UPˇ¿5UUP/*ı™∞˝˘ ˙˜˙@˙¸Í™∞˛*™™∞05ıUP˝˘` ˙į˙`˙ ¸’UP˛5UUP/*ı™∞˝˘@˘Ä¯˙ ˙¸Í™∞˛*™™∞/5ıUP˝˘Ä˘@¯ ˙˙¸’UP˛5UUP0*ı™∞˝˙˘ ¯@˙˙¸Í™∞˛*™™∞05ıUP˝˙˘ ¯@˙˙¸’UP˛5UUP1*ı™∞˝˙Ä˙¯Ä˙˘Ä˝Í™∞˛*™™∞25ıUP˝0˙¿˙˘Ä˙0˘¿˝    ’UPˇˇ¸5UUP1*ı™∞˝ ˙@˙˘˘ ˘@˝    Í™±*™™∞15ıUP˝@˙ ˙˘˘@˘ ˝    ’UQ5UUP1*ı™∞˝@˙ ˙˘˘@˘ ˝    Í™±*™™∞25ıUP˝Ä˙˙˘˘ÄÄ˙˝    ’UQ5UUP2*ı™∞˝Ä˙˙˘˘ÄÄ˙˝    Í™±*™™∞25ıUP˝Ä˙˙˘˘ÄÄ˙˝    ’UQ5UUP3*ı™∞˛˘ ˙˘˙˛@˙˝    Í™±*™™∞35ıUP˛˘ ˙˘˙˛@˙˝    ’UQ5UUP4*ı™∞˛˘` ˙Ä˙˙˛`˙ ˝    Í™±*™™∞35ıUP˛˘@˘Ä˙˙˛ ˙˝    ’UQ5UUP3*ı™∞˛˘@˘Ä˙˙˛ ˙˝    Í™±*™™∞35ıUP˛˘@˘Ä˙˙˛ ˙˝    ’UQ5UUP3*ı™∞˛˘Ä˘@˙ ˙˛˙˝Í™Ø˛ˇÍ™™∞05ıUP˛˘Ä˘@˙ ˙˛˙˝‘˚UP/*ı™∞˛˘Ä˘@˙ ˙˛˙˝Í˙™∞05ıUP˛˘Ä˘@˙ ˙˛˙˝‘˚UP3*ı™∞˛˘Ä˘@˙ ˙˛˙˝    Í|dÄ8@Ä™∞ê@àÄï@àÄïΔ"ÕP∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞òRÄ¿àÄ¿à"hEΔ45ıUP˛˙˛˘ ˙@˙˛˙˝    ‘ Ä$ÅUP4*ı™∞˛˙˛˘ ˙@˙˛˙˝    ÍŒ,"Œê™∞45ıUP˛˙˛˘ ˙@˙˛˙˝    ‘)$ "P°UP8*ı™∞˛˙˛˘ ˙@˙˛`˛˝    ÍÈ$"L¿™∞85ıUP˛˙˛˘ ˙@˙˛ ¿˛˝    ‘    $$B°UP8*ı™∞˛˙˛˘ ˙@˙˛IJ˝    Í…$88\ê™∞45ıUP˛˙˛˘ ˙@˙˛˝˝‘˚UP4*ı™∞˛˙˛˘ ˙@˙˛IJ˝Í˙™∞35ıUP˛˙˛˘ ˙@˙˛ ¿˛˝’˘UP3*ı™∞˛˙˛˘ ˙@˙˛`˛˝Í˘™∞/7ıˇ˛˙˛˘ ˙@˙˛˙˝’˘UP/,ı˛˙˛˘ ˙@˙˛˙˝Í˘™∞/4ı˛˙˛˘ ˙@˙˛˙˝’˘UP/,ı˛˙˛˘ ˙@˙˛˙˝Í˘™∞.4ı˛˘Ä˘@˙ ˙˛˙˝’˘UP.,ı˛˘Ä˘@˙ ˙˛˙˝Í˘™∞/4ˆê˛˘ġ¸˘@˙ ˙˛˙˝’˘UP/,ˆê˛˘üUW‚˘@˙ ˙˛˙˝Í˘™∞04ˆ–˛˙Í™™æ˘@˙ ˙˛˙˝’˘UP0,ı˛˙˛UWÄ˙Ä˙˙˛ ˙˝Í˘™∞04ıp˛˙:Í™™¨p˙Ä˙˙˛ ˙˝’˘UP0,ı0˛˙’˛UT ˙Ä˙˙˛ ˙˝Í˘™∞34ˆ0˛˚™Í™™¨˚Ä˙˙˛`˙ ˝’˘UP2,ı˛˚UuUUXĸ˘˙˛@˙˝Í˘™∞14ı˛˚˝™®`¸˘˙˛@˙˝’˘UP0,ı˝Ä¸5˝UP¸˘˘ÄÄ˙˝Í˘™∞14ı˝Ä¸Í™∫™™∞ ¸˘˘ÄÄ˙˝’˘UP1,ı˝Ä˝’˝UP¸˘˘ÄÄ˙˝Í˘™∞/7ıˇ˝@˝¸™†¸˘˘@˘ ˝’˘UP6,˙0˝˝@˝    UU]UU`Ä˝˘˘@˘ ˝Í˘™∞64˙0˝˝ ˝    
  9500. ™™Æ™™¿@˝˘˘ ˘@˝’˘UP7,˙0˝˝0˝    UUWUU¿ ˝˘Ä˙0˘¿˝Í˘™∞44˙0˝˝˝*¸™Ä˝¯Ä˙˘Ä˝’˘UP1,˙0˝˝˝˚U˛˝ ¯@˙˙¸Í˘™∞54˙0˝˝˝˛™´™´˛˝ ¯@˙˙¸’˘UP7,˙0˝˝˛’˛U’V˛˝@¯ ˙˙¸Í˘™∞;4˛0@˝˛˝™ͨ˛˝Ä¯˙ ˙¸’˘UP<,"˛0A˝˛˝Uu\˛į˙`˙ ¸Í˘™∞:4 „&X0âñ·˝˛¸™®0Ę˙@˙¸’˘UP8,îÖI`0äX@¸Ä¸UP‡Ä˜˘ÄÄ˙¸Í˘™∞74óùè@0À–@¸@
  9501. ¸™†¿@˜˘A˘ ¸’˘UP7,"î%H@0JA¸ ¸U@‡`˜˘"˘@¸Í˘™∞74„&@0Iê ¸¸™Ä0 ˆÄ˙˘Ä¸’˘UP5,Ä˝0˝¸5¸U ˆ@˙˙˚͢™∞44Ä˝0˝¸*¸™Ä˝@ˆ ˙˙˚’˘UP1,˙0˝¸¸U\`˝Ĉ˙c˙ ˚͢™∞24˙0˝¸Äj˝™∏0˝ı ˙¡Ä˚˚’˘UP1,˙0˝˚@¸U`˝ı˚@˚ ˚͢™∞64ÅIJ0˝˚0¸™¿˝ıĸ0˚¿˚’˘UP8,ÄIJ0˝˚ ’˛UWIJ`Ù`¸ ¸˙͢™∞8
  9502. 4ò•ÿ¿0˛ˇ˚˝™Æ¿˛¿Ù0¸0¸˙’˘UP8
  9503. ,$•% 0˛˚Å˝UX0˛Û ¸¿Ä˝˙͢™∞9
  9504. 4$•%‡0˛˙q˝™‡˛ÛIJ˛p˝‡˙’˘UP9
  9505. ,$•%0˛˙˛UW˛¿‡Úp˛8˛˛˘Í˘™∞84ù$¿0‡˙Í™™º˝xÄÚ‡˛¿<˘’˘UP1,˙0ê˙?UW¿˝¿˘Ò>¸>¿˘Í˘™∞-4˙0äÂp˙ˇ¯˚?ˇˇ¿¸ˇ¯¯’˘UP,˙0ãíê˙ˆ‹Í˘™∞4˙0äí˙ˆ‹’˘UP,˙0ííê˙ıě͢™∞4˙0‚ ‚p˙ıÄ›’˘UP,˙0Ä˙ıě͢™∞4˙0Ä˙ıÄ›’˘UP,˙0˛˙ıě͢™∞êÄà¿ïÄà¿ï"ΔEÕP∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞òR¿à¿àEhgΔ 4˛0˛˙ıÄ›’˘UP ,˛ 0˛˙ıě͢™∞ 4˛    ‚0@˙ıÄ›’˘UP ,˛    Y0@˙ıě͢™∞ 4˛    ≠0\vs˙ıÄ›’˘UP ,˛    U0Ríîê˙ıě͢™∞ 4˛    ≠0Ríîê˙ıÄ›’˘UP ,U0Ríîê˙ıě͢™∞ 4≠0Rrs˙ıÄ›’˘UP ,U0˙ˆ‹Í˘™∞ 4ñ≠0`˙ˆ‹’˘UP 
  9506. ,U0˛˙ˆ‹Í˘™∞ 
  9507. 4≠0˛˙ˆ‹’˘UP 
  9508. ,U0˛˙ˆ‹Í˘™∞ 4˛    ≠0p˙ˆ‹’˘UP ,˛    U0à˙ˆ‹Í˘™∞ 4˛    ≠0äLdê˙ˆ‹’˘UP!,˛    U0äBï˙ʋ͢™∞ 4˛    ≠0äNÜ˘Ä˜‹’˘UP ,U0™Rï˘Ä˜‹Í˘™∞ 4≠0qŒdê˘@˜‹’˘UP ,U0˘@˜‹Í˘™∞ 
  9509. 4ñ≠0˛˘@˜‹’˘UP 
  9510. ,U0˛˘ ˜‹Í˘™∞ 
  9511. 4≠0˛˘ ˜‹’˘UP 
  9512. ,U0˛˘˜ ‹Í˘™∞ 4˛    ≠0q˘˜`‹’˘UP ,˛    U0à˘˜@‹Í˘™∞ 4˛    ≠0Évq0˘˜Ä‹’˘UP ,˛    U0qIIP˘˜Ä‹Í˘™∞ 4˛    ≠0    IIp˘¯€’˘UP ,U0âIIP˘¯€Í˘™∞!4≠0qIq0˘Ģ€’˘UP ,U0@¯Ä˘€Í˘™∞ 4ñ≠0@¯@˘€’˘UP 
  9513. ,U0˛¯ ˘€Í˘™∞ 
  9514. 4≠0˛¯˘ €’˘UP 
  9515. ,U0˛¯˘@€Í˘™∞ 4˛    ≠0p¯˘Ä€’˘UP ,˛    U0à¯˙⁄͢™∞!4˛    ≠0Åéóp¯Ä˚⁄’˘UP ,˛    U0rPî꘿˚ ⁄͢™∞ 4˛    ≠0
  9516. Lî꘠˚⁄’˘UP ,U0äBîê˜˚`⁄͢™∞!4≠0qút꘸Ä⁄’˘UP 
  9517. ,
  9518. U0˛˜¸ŸÍ˘™∞ 
  9519. 4ñ≠0˛ˆ¿˝ Ÿ’˘UP 
  9520. ,U0˛ˆ8˝pŸÍ˘™∞!
  9521. 4≠0˛ˆ˛ÄŸ’˘UP 
  9522. ,U0˛ˆ‡ÿ͢™∞4˛    ≠0ÇXC–ı‡ÿ’˘UP,˛    U0ÇBÙˇ¸◊͢™∞4˛    ≠0T…¬»’˘UP,˛    U0TJCê»Í˘™∞4˛    ≠0(JB»’˘UP,U0(JB»Í˘™∞4≠0(I√–ı’’˘UP
  9523. ,U0˛ı’͢™∞
  9524. 4ñ≠0˛ıf1¿ÿ’˘UP
  9525. ,U0˛ı    âJ◊͢™∞
  9526. 4≠0˛ı    yÄÿ’˘UP
  9527. ,U0˛ı    @@ÿ͢™∞4˛≠0˛ı3Äÿ’˘UP,˛U0˛»Í˘™∞ê¿àï¿àïEΔgÕP∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞òR@à@àghäΔ4˛≠0˛»’˘UP,˛ˇˇ‡0˛»Í˘™∞
  9528. 40˛»’˘UP
  9529. ,ˇˇ0˛»Í˘™∞
  9530. 40˛»’˘UP
  9531. ,0˛»Í˘™∞
  9532. 40˛»’˘UP
  9533. ,0˛ˇ»Í˘™∞    40˝»’˘UP    ,ˇˇ0˝»Í˘™∞#    40˝|¿˙ 0ÿ’˘UP",˛ˇˇ‡0˝`˘000ÿ͢™∞&4˛≠0˝`«ÃÕû˝8q··ÿ’˘UP&,˛U0˝`ÃÃŒ3˝<Û330ÿ͢™∞&4˛≠0˝x˛Ã3˝/≥330ÿ’˘UP&    ,U0˝`˛Ã?˝'˛30ÿ͢™∞&    4 ≠0˝`˛Ã0˝"˛30ÿ’˘UP&    ,U0˝`˛Ã1˝ ˛30ÿ͢™∞&    4ñ≠0˝`««Ã˝ 1··ÿ’˘UP    ,U0˝˝¿Õ͢™∞    4≠0˝˛¿Õ’˘UP
  9534. ,U0˛ˇ˛ÄÕ͢™∞4˛≠0 ˛»’˘UP",˛U0˛˙ˇ‡˙ˇÄ⁄͢™∞*4˛≠0˛ˇ¸ ˇ‡@Ä⁄’˘UP*,˛U0Ä–ˇ¸ ˇ‡@Ä⁄͢™∞*4˛≠0 ¿–˘¸~ <‡`A‡Ä⁄’˘UP2$,U0 «–Ò¸# 8 f?‡`C0Ä @Ģ Á͢™∞2$4≠0 Ö˘¸X f?‡`C0Ä @Ģ Á’˘UP8.,U0Ö˘¸<ò f?‡`C0Ä
  9535. G≈Œ88"8Ë͢™∞8.4ñ≠0 Ö˘¸ ~‡`C0Ä
  9536. HÄÜ"DòDë$DË’˘UP8.,U0 Ö˘¸ ¸ f?‡`C0Ä    HÄÑ"@êDè(@Ë͢™∞8.4≠0 Ö˘¸ f?‡`C0Ä    HÄÑ>8ê|ë08Ë’˘UP:.,U0 «–˘¸0F f?‡`C0Ä»ÄÑ ê@ë(˲ˇ˛¸™∞;4˛≠0˛ ˘¸?< f‡`A‡Ä»ÄÑ"DêDë$DË¿¸UP<,˛U0˛!ˇ¸ ˇ‡@ÄGd8ê8"8ÄÈ¿¸™∞-4˛©0˛ˇ¸ ˇ‡@Ä⁄¿¸UP-,˛‚0 ˛ˇ¸ ˇ‡@Ä⁄¿¸™∞%4˛ 0˛ˇ˙ˇ‡˙ˇÄ⁄¿¸UP,˛0˝»¿¸™∞4˙0˝»¿¸UP,˙0˝»¿¸™∞4˙0˝»¿¸UP,˙0˝¯˙ˇÄ⁄¿¸™∞"4˙0˝¯?ˇ¿Ä⁄¿¸UP",˙0˝¯?ˇ¿Ä⁄¿¸™∞"4˙0˝¯<¯?ü¡‡Ä⁄¿¸UP,,˙0˝¯
  9537. f¿?ü√0ÄÄ˚0¸ È¿¸™∞,4˙0˝¯
  9538. f¿?ü√0Ä@˚¸ È¿¸UP4,˙0˝¯f¿?ü√0Äa¿Yá·¿8π¿qsáÏ¿¸™∞44˙0˝¯~?ü√0Äôí fHë D¬ !ÑHëÏ¿¸UP//ıˇ¯f¿?ü√0Äàë DGë<Ç !HêÏ˛ˇ˛¸™∞07ıˇ¯f¿?ü√0ÄHë‡DHëÒ¿Dɇ!œéÏ¿¸UP0,ı¯f¿?ü√0ÄHëDHë DÇ!Ï¿¸™∞04ı¯f¯?ü¡‡ÄHë DHë DÇ !HëÏ¿¸UP1,ı¯?ˇ¿Äá¿DGû·¿<Å¿á Ì¿¸™∞"4ı¯?ˇ¿Ä˙‚¿¸UP",ı¯?ˇ¿Ä˙‚¿¸™∞4ı¯˙ˇÄ⁄¿¸UP,ı»¿¸™∞4ı»¿¸UP,ıÔ?›ˇ˛¿¸™∞4ı»¿¸UP,ı¯˙ˇÄ⁄¿¸™∞êà@ïà@ïgΔäÕP∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞òR@zà@zàäh©Δ4ı¯ ˇÄ⁄¿¸UP,ı¯ ˇÄ⁄¿¸™∞4ı¯<¯ `~Ä⁄¿¸UP*,ı¯
  9539. f¿ `|œÄÄ˚0˙ÄÌ¿¸™∞/4˙¯
  9540. f¿ `|œÄ@˚˙ÄÌ¿¸UP8,0˙¯f¿ `|œÄa¿Yá·¿8π¿Xq¿8q¿Ô¿¸™∞;    4VeôŒ3åp˝¯~ `|œÄôí fHë D¬ dàÄDâ" Ô¿¸UP:    ,íñ%)JRÄ˝¯f¿ `|œÄàë DGë<Ç DàÄDyBÓ¿¸™∞;    4Ñ%)J^`˝¯f¿ `|œÄHë‡DHëÒ¿DɇDàÄDâÅ¿Ô¿¸UP;    ,î%)JP˝¯f¿ `|œÄHëDHë DÇDàÄDâ@ Ô¿¸™∞;    4d…2L‡˝¯f¯ `~ÄHë DHë DÇ DàÄDâ" Ô¿¸UP7,˛˘¯ ˇÄá¿DGû·¿<Å¿Dp`8yƒÔ¿¸™∞&4˛˘¯ ˇÄ˙‚¿¸UP",ı¯ ˇÄ˙‚¿¸™∞4ı¯˙ˇÄ⁄¿¸UP,ı»¿¸™∞4ˆˇ»¿¸UP,ˆ»¿¸™∞4ˆ»¿¸UP,ˆ»¿¸™∞4ˆ»¿¸UP,ˆ»¿¸™∞4ˆ»ˇ¿¸UP,ˆ»ˇ¿¸™∞,4È    UUP"˚˛@@˛B˝ Ú¸UP1,È™™∞!0Dπ¿8∞bÃxCÄ≈Ä‚√Äàé<8Û¸™∞64í^Ì UUP!"D¬ D…"#2DD@F@C$@àë"DÄÙ¸UP6,˛ÄÓ™™∞!"DÇ <â˛" DD@D@B$@U"DÛ¸™∞54˝¿ÓUUP!"DɇDâ˛" DG¿D@B'¿U"|Û¸UP1,È™™∞!"DÇDâ˛" DDD@B$""@Û¸™∞64˛‡ÓUUP""DÇ Dâ˛" DD@D@B$@""DÛ¸UP2,È ™™∞<<Å¿<à""xCÄD@2#Ä"<8ÄÙ¸™∞'4˛‡ÓUUP˛¸Â˝˝UP',˛Ó™™∞˛"D¸"½™∞(4˛ÓUUP˛8¸Âˇ˝˛UP,˛Ó™™∞⁄˛™∞4˛ÓUUP⁄ˇ˝˛UP,˛Ó™™∞⁄
  9541. ˛™∞4˛ÓUUP⁄˛UP+,˛"Ó ™™∞¿˘!@Îà䲙∞*4˛A‡ÄÔ    UUP@˜!@ÎDM˛UP8,˛Ä@Ô™™∞
  9542. @YåYá"8π¿qa¿xqsáé"8pÚDJ˛™∞84 ÔUUP
  9543. @fDfHë"D¬ !í DâÑHë"DàÚDM˛UP8, Ô    ™™∞@˛DHTDÇ ! DâHë"DÄÚDJ˛™∞84Ô    UUP@˛DGT|ɇ!‡DâHë|pÚDM˛UP8,Ô    ™™∞?à@˛D@ëà@Ç!DâHë@ÚDJ˛™∞84Ô    UUP à@˛DHëàDÇ ! DâHëDàÚDM˛UP9,¿Ô    ™™∞ à@˛DGà8Å¿¿xqáé8pÄÛDJ˛™∞,4¿ÔUUP˙ıIJÄÛDM˛UP,,¿Ô™™∞˙ˆÄÚDJ˛™∞(4ÄÔUUP˙ˆÓDM˛UP ,Ä Ô™™∞⁄DJ˛™∞ 4Ä ÔUUP⁄DM˛UP ,˛ÄÄ@Ô™™∞⁄DJ˛™∞ 4˛@ÄÄÔUUP⁄DM˛UP0,˛ Ó ™™∞˘IJ@ DJ˛™∞04˛Ó UUP˘IJ@ DM˛UP6,˛¯Ó™™∞
  9544. òqfŒ8∞‡D·ÂŒ<8ÒDJ˛™∞ê@àzï@àzïäΔ©ÕP∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞òR@à@à›hΔØØØØØØØØØØ≥ˇ˛≥Ä≤@≤   π¯¸ ºÄ¸ 0ΩǸ  Ê`AÃ… ¬b ‹` Ã… ¬ë! ˛c¿EÃx¯¯ÃÇë ¯f` ""˝ÃÃÒ ¯Δf`DA˝Ãà   ô! ˛g‡ ""øÃÃÃf! ˛fDAÿÃÃø! ¸f  ""»ƒÃÃà ÿc¿AxÃÃÀÄ πO¯ πP˛  π`˚  π@˚ ≤?≤ˇ5≤UP*ı™ø»ˇ¯™∞5ıUP»’˘UP*ı™∞»Í˘™∞5ıUP»’˘UP*ı™∑Ô˛ÓˇÄÙÌˇ˛Í˘™∞5ıUPÌÃ˛å˚¿Î’˘UP"*ı™∑ËÓˇÄÃ˛ ¿¸¿Ìˇ˛Í˘™∞!5ıUPÌ Ãx¯¯ Ãx|Ÿ„˛¿Î’˘UP#*ı™∑ËÓˇÄ˝Ã     ÃåÂ33¿Ìˇ˛Í˘™∞5ıUPÌ˝Ã Ã|áÛ3¿Î’˘UP$*ı™∑ËÓˇÄøÃà ˛Ã√33¿Ìˇ˛Í˘™∞!5ıUPÌÿÃà ˛Ã√33¿Î’˘UP$*ı™∑ËӡĻƒÃà ˛Ã√33¿Ìˇ˛Í˘™∞!5ıUPÌ xÃÃå||¡Û3¿Î’˘UP*ı™∑Ô˛ÓˇÄ˙ ¸Ìˇ˛Í˘™∞5ıUP‰åÊ’˘UP*ı™∞‰xÊ͢™∞5ıUP»’˘UP*ı™ø»ˇÍ˘™∞5ıUPÄ ’’˘UP*ı™∞IJ ’͢™∞5ıUPÄ Åà’’˘UP-*ı™∞Ä0 ad ˝Á͢™∞,5ıUPÄ0 ! d˛ ˝Ê’˘UP/*ı™ ∞Ä0"LT» Ó2 q√∏¿ΔZÃg1K≥8Ë͢™∞45ıU PÅ˛,$r8U%A    IQJA%!)cíII§Ë’UP˛UUP4*ı™ ∞Å˛ X)œÕpM%@…IQJA%·    BÇII§ËÍ™Ø˛ˇ ™™∞45ıU PÄ0@∞"@‡M"Ä)H°JA%)BíII§Ë’UO˛ˇ’UUP5*ı™!∞0¿Ä0ˇ`$0¿D¬Å…0°I¿§¿ΔB a18ì$ÄÈÍ™Ø˛ˇ ™™∞%5ıUP0¿Ä0Å¿(ÕÄ˙@›’UO˛ˇ’UUP&*ı™∞ÄÅÄ =˚Ä›Í™Ø˛ˇ ™™∞êà@ïà@ï›ΔÕÄ@ P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞òR@Äà@Äàh"Δ!5ıUPġ ’’UO˛ˇ’UUP!*ı™∞Ä ’Í™Æ˛ˇ ™™∞5ıU_»ˇ’UO˛ˇ’UUP*ı™∞»Í™Ø˛ˇ ™™∞5ıU_»ˇ’UP˛UUP*ı™∞»Í˘™∞5ıUP»’˘UP*ı™∞»Í˘™∞5ıUP»◊˙ˇUP*ı™∞»Ô˙ˇ™∞5ıUP»◊˙ˇUP$*ı™∞˘˜ ˜`˘    Óˇˇ˜ˇˇ™∞$5ıUP˘˜˜ ˘    ÷Ôˇˇ˜ˇˇUP/*ı™∞˙2N˙;ƒ«Ú1íp˚ÿŒ&8˙    ÓÏflfófÿœ™∞/5ıUP˙    
  9545. ê˙$Ö%(ÚHTÄ˚$))@˙    ÷j⁄pZ◊∑UP/*ı™∞˙    ; ˙$ù%ÊÚIÿ`˚$È/0˙    Ó˚j¬˜ZŸá™∞/5ıUP˙    JÇ˙$•%ÚJT˚%)(˙    ÷˚ufi˜ZfiøUP/*ı™∞˙:\˙$ùƒŒÚ1“‡˚$Ó&p˙    Ó¸ıʘgœ™∞5ıUPÔ¯◊˙ˇUP*ı™∞Ô¯Ô˙ˇ™∞5ıUP»’˘UP&*ı™∞˘ˇ¯˚?ˇÔˇ¿¸ˇ¯¯Í˘™∞+5ıUP˘>¿˝¿¯Ò>¸>¿˘’˘UP/*ı™∞˙¿<˝xÄÚ‡˛¿<˘Í˘™∞05ıUP˙˛˛¿˛‡Úp˛8˛˛˘’˘UP/*ı™∞˙p˝‡˝ÛIJ˛p˝‡˙͢™∞.5ıUP˚Ä˝0˝Û ¸¿Ä˝˙’˘UP,*ı™∞˚¸¿¸¿Ù0¸0¸˙͢™∞05ıUP˚ ¸ĸ`Ù`¸ ¸˙’U_˛ˇ˛UP0*ı™∞˚0˚¿˚ıĸ0˚¿˚Í™∞  ˛™∞/5ıUP˚@˚ ˚ı˚@˚ ˚’UP  ˛UP/*ı™∞¸Ä˚0˚ı ˙¡Ä˚˚    Í™∞  *™™∞.5ıUP¸˙ `˚Ĉ˙c˙ ˚    ’UP  5UUP-*ı™∞¸˙Ä˙@ˆ ˙˙˚    Í™∞  *™™∞,5ıUP¸˙˘ ˆ@˙˙˚    ’UP  5UUP-*ı™∞¸˙Ä˙ˆÄ˙˘Ä¸    Í™∞  *™™∞-5ıUP¸ ˙@˙˜˘"˘@¸    ’UP  5UUP-*ı™∞¸@˙ ˙˜˘A˘ ¸    Í™∞  *™™∞.5ıUP¸Ä˙˙˜˘ÄÄ˙¸    ’UPˇ¿5UUP/*ı™∞˝˘ ˙˜˙@˙¸Í™∞˛*™™∞05ıUP˝˘` ˙į˙`˙ ¸’UP˛5UUP/*ı™∞˝˘@˘Ä¯˙ ˙¸Í™∞˛*™™∞/5ıUP˝˘Ä˘@¯ ˙˙¸’UP˛5UUP0*ı™∞˝˙˘ ¯@˙˙¸Í™∞˛*™™∞05ıUP˝˙˘ ¯@˙˙¸’UP˛5UUP1*ı™∞˝˙Ä˙¯Ä˙˘Ä˝Í™∞˛*™™∞25ıUP˝0˙¿˙˘Ä˙0˘¿˝    ’UPˇˇ¸5UUP1*ı™∞˝ ˙@˙˘˘ ˘@˝    Í™±*™™∞15ıUP˝@˙ ˙˘˘@˘ ˝    ’UQ5UUP1*ı™∞˝@˙ ˙˘˘@˘ ˝    Í™±*™™∞25ıUP˝Ä˙˙˘˘ÄÄ˙˝    ’UQ5UUP2*ı™∞˝Ä˙˙˘˘ÄÄ˙˝    Í™±*™™∞25ıUP˝Ä˙˙˘˘ÄÄ˙˝    ’UQ5UUP3*ı™∞˛˘ ˙˘˙˛@˙˝    Í™±*™™∞35ıUP˛˘ ˙˘˙˛@˙˝    ’UQ5UUP4*ı™∞˛˘` ˙Ä˙˙˛`˙ ˝    Í™±*™™∞35ıUP˛˘@˘Ä˙˙˛ ˙˝    ’UQ5UUP3*ı™∞˛˘@˘Ä˙˙˛ ˙˝    Í™±*™™∞35ıUP˛˘@˘Ä˙˙˛ ˙˝    ’UQ5UUP3*ı™∞˛˘Ä˘@˙ ˙˛˙˝Í™Ø˛ˇÍ™™∞05ıUP˛˘Ä˘@˙ ˙˛˙˝‘˚UP/*ı™∞˛˘Ä˘@˙ ˙˛˙˝Í˙™∞05ıUP˛˘Ä˘@˙ ˙˛˙˝‘˚UP3*ı™∞˛˘Ä˘@˙ ˙˛˙˝    Í|dÄ8@Ä™∞ê@àÄï@àÄïΔ"ÕP∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞òRÄ¿àÄ¿à"hEΔ45ıUP˛˙˛˘ ˙@˙˛˙˝    ‘ Ä$ÅUP4*ı™∞˛˙˛˘ ˙@˙˛˙˝    ÍŒ,"Œê™∞45ıUP˛˙˛˘ ˙@˙˛˙˝    ‘)$ "P°UP8*ı™∞˛˙˛˘ ˙@˙˛`˛˝    ÍÈ$"L¿™∞85ıUP˛˙˛˘ ˙@˙˛ ¿˛˝    ‘    $$B°UP8*ı™∞˛˙˛˘ ˙@˙˛IJ˝    Í…$88\ê™∞45ıUP˛˙˛˘ ˙@˙˛˝˝‘˚UP4*ı™∞˛˙˛˘ ˙@˙˛IJ˝Í˙™∞35ıUP˛˙˛˘ ˙@˙˛ ¿˛˝’˘UP3*ı™∞˛˙˛˘ ˙@˙˛`˛˝Í˘™∞/7ıˇ˛˙˛˘ ˙@˙˛˙˝’˘UP/,ı˛˙˛˘ ˙@˙˛˙˝Í˘™∞/4ı˛˙˛˘ ˙@˙˛˙˝’˘UP/,ı˛˙˛˘ ˙@˙˛˙˝Í˘™∞.4ı˛˘Ä˘@˙ ˙˛˙˝’˘UP.,ı˛˘Ä˘@˙ ˙˛˙˝Í˘™∞/4ˆê˛˘ġ¸˘@˙ ˙˛˙˝’˘UP/,ˆê˛˘üUW‚˘@˙ ˙˛˙˝Í˘™∞04ˆ–˛˙Í™™æ˘@˙ ˙˛˙˝’˘UP0,ı˛˙˛UWÄ˙Ä˙˙˛ ˙˝Í˘™∞04ıp˛˙:Í™™¨p˙Ä˙˙˛ ˙˝’˘UP0,ı0˛˙’˛UT ˙Ä˙˙˛ ˙˝Í˘™∞34ˆ0˛˚™Í™™¨˚Ä˙˙˛`˙ ˝’˘UP2,ı˛˚UuUUXĸ˘˙˛@˙˝Í˘™∞14ı˛˚˝™®`¸˘˙˛@˙˝’˘UP0,ı˝Ä¸5˝UP¸˘˘ÄÄ˙˝Í˘™∞14ı˝Ä¸Í™∫™™∞ ¸˘˘ÄÄ˙˝’˘UP1,ı˝Ä˝’˝UP¸˘˘ÄÄ˙˝Í˘™∞/7ıˇ˝@˝¸™†¸˘˘@˘ ˝’˘UP6,˙0˝˝@˝    UU]UU`Ä˝˘˘@˘ ˝Í˘™∞64˙0˝˝ ˝    
  9546. ™™Æ™™¿@˝˘˘ ˘@˝’˘UP7,˙0˝˝0˝    UUWUU¿ ˝˘Ä˙0˘¿˝Í˘™∞44˙0˝˝˝*¸™Ä˝¯Ä˙˘Ä˝’˘UP1,˙0˝˝˝˚U˛˝ ¯@˙˙¸Í˘™∞54˙0˝˝˝˛™´™´˛˝ ¯@˙˙¸’˘UP7,˙0˝˝˛’˛U’V˛˝@¯ ˙˙¸Í˘™∞;4˛0@˝˛˝™ͨ˛˝Ä¯˙ ˙¸’˘UP<,"˛0A˝˛˝Uu\˛į˙`˙ ¸Í˘™∞:4 „&X0âñ·˝˛¸™®0Ę˙@˙¸’˘UP8,îÖI`0äX@¸Ä¸UP‡Ä˜˘ÄÄ˙¸Í˘™∞74óùè@0À–@¸@
  9547. ¸™†¿@˜˘A˘ ¸’˘UP7,"î%H@0JA¸ ¸U@‡`˜˘"˘@¸Í˘™∞74„&@0Iê ¸¸™Ä0 ˆÄ˙˘Ä¸’˘UP5,Ä˝0˝¸5¸U ˆ@˙˙˚͢™∞44Ä˝0˝¸*¸™Ä˝@ˆ ˙˙˚’˘UP1,˙0˝¸¸U\`˝Ĉ˙c˙ ˚͢™∞24˙0˝¸Äj˝™∏0˝ı ˙¡Ä˚˚’˘UP1,˙0˝˚@¸U`˝ı˚@˚ ˚͢™∞64ÅIJ0˝˚0¸™¿˝ıĸ0˚¿˚’˘UP8,ÄIJ0˝˚ ’˛UWIJ`Ù`¸ ¸˙͢™∞8
  9548. 4ò•ÿ¿0˛ˇ˚˝™Æ¿˛¿Ù0¸0¸˙’˘UP8
  9549. ,$•% 0˛˚Å˝UX0˛Û ¸¿Ä˝˙͢™∞9
  9550. 4$•%‡0˛˙q˝™‡˛ÛIJ˛p˝‡˙’˘UP9
  9551. ,$•%0˛˙˛UW˛¿‡Úp˛8˛˛˘Í˘™∞84ù$¿0‡˙Í™™º˝xÄÚ‡˛¿<˘’˘UP1,˙0ê˙?UW¿˝¿˘Ò>¸>¿˘Í˘™∞-4˙0äÂp˙ˇ¯˚?ˇˇ¿¸ˇ¯¯’˘UP,˙0ãíê˙ˆ‹Í˘™∞4˙0äí˙ˆ‹’˘UP,˙0ííê˙ıě͢™∞4˙0‚ ‚p˙ıÄ›’˘UP,˙0Ä˙ıě͢™∞4˙0Ä˙ıÄ›’˘UP,˙0˛˙ıě͢™∞êÄà¿ïÄà¿ï"ΔEÕP∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞òR¿à¿àEhgΔ 4˛0˛˙ıÄ›’˘UP ,˛ 0˛˙ıě͢™∞ 4˛    ‚0@˙ıÄ›’˘UP ,˛    Y0@˙ıě͢™∞ 4˛    ≠0\vs˙ıÄ›’˘UP ,˛    U0Ríîê˙ıě͢™∞ 4˛    ≠0Ríîê˙ıÄ›’˘UP ,U0Ríîê˙ıě͢™∞ 4≠0Rrs˙ıÄ›’˘UP ,U0˙ˆ‹Í˘™∞ 4ñ≠0`˙ˆ‹’˘UP 
  9552. ,U0˛˙ˆ‹Í˘™∞ 
  9553. 4≠0˛˙ˆ‹’˘UP 
  9554. ,U0˛˙ˆ‹Í˘™∞ 4˛    ≠0p˙ˆ‹’˘UP ,˛    U0à˙ˆ‹Í˘™∞ 4˛    ≠0äLdê˙ˆ‹’˘UP!,˛    U0äBï˙ʋ͢™∞ 4˛    ≠0äNÜ˘Ä˜‹’˘UP ,U0™Rï˘Ä˜‹Í˘™∞ 4≠0qŒdê˘@˜‹’˘UP ,U0˘@˜‹Í˘™∞ 
  9555. 4ñ≠0˛˘@˜‹’˘UP 
  9556. ,U0˛˘ ˜‹Í˘™∞ 
  9557. 4≠0˛˘ ˜‹’˘UP 
  9558. ,U0˛˘˜ ‹Í˘™∞ 4˛    ≠0q˘˜`‹’˘UP ,˛    U0à˘˜@‹Í˘™∞ 4˛    ≠0Évq0˘˜Ä‹’˘UP ,˛    U0qIIP˘˜Ä‹Í˘™∞ 4˛    ≠0    IIp˘¯€’˘UP ,U0âIIP˘¯€Í˘™∞!4≠0qIq0˘Ģ€’˘UP ,U0@¯Ä˘€Í˘™∞ 4ñ≠0@¯@˘€’˘UP 
  9559. ,U0˛¯ ˘€Í˘™∞ 
  9560. 4≠0˛¯˘ €’˘UP 
  9561. ,U0˛¯˘@€Í˘™∞ 4˛    ≠0p¯˘Ä€’˘UP ,˛    U0à¯˙⁄͢™∞!4˛    ≠0Åéóp¯Ä˚⁄’˘UP ,˛    U0rPî꘿˚ ⁄͢™∞ 4˛    ≠0
  9562. Lî꘠˚⁄’˘UP ,U0äBîê˜˚`⁄͢™∞!4≠0qút꘸Ä⁄’˘UP 
  9563. ,
  9564. U0˛˜¸ŸÍ˘™∞ 
  9565. 4ñ≠0˛ˆ¿˝ Ÿ’˘UP 
  9566. ,U0˛ˆ8˝pŸÍ˘™∞!
  9567. 4≠0˛ˆ˛ÄŸ’˘UP 
  9568. ,U0˛ˆ‡ÿ͢™∞4˛    ≠0ÇXC–ı‡ÿ’˘UP,˛    U0ÇBÙˇ¸◊͢™∞4˛    ≠0T…¬»’˘UP,˛    U0TJCê»Í˘™∞4˛    ≠0(JB»’˘UP,U0(JB»Í˘™∞4≠0(I√–ı’’˘UP
  9569. ,U0˛ı’͢™∞
  9570. 4ñ≠0˛ıf1¿ÿ’˘UP
  9571. ,U0˛ı    âJ◊͢™∞
  9572. 4≠0˛ı    yÄÿ’˘UP
  9573. ,U0˛ı    @@ÿ͢™∞4˛≠0˛ı3Äÿ’˘UP,˛U0˛»Í˘™∞ê¿àï¿àïEΔgÕP∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞òR@à@àghäΔ4˛≠0˛»’˘UP,˛ˇˇ‡0˛»Í˘™∞
  9574. 40˛»’˘UP
  9575. ,ˇˇ0˛»Í˘™∞
  9576. 40˛»’˘UP
  9577. ,0˛»Í˘™∞
  9578. 40˛»’˘UP
  9579. ,0˛ˇ»Í˘™∞    40˝»’˘UP    ,ˇˇ0˝»Í˘™∞#    40˝|¿˙ 0ÿ’˘UP",˛ˇˇ‡0˝`˘000ÿ͢™∞&4˛≠0˝`«ÃÕû˝8q··ÿ’˘UP&,˛U0˝`ÃÃŒ3˝<Û330ÿ͢™∞&4˛≠0˝x˛Ã3˝/≥330ÿ’˘UP&    ,U0˝`˛Ã?˝'˛30ÿ͢™∞&    4 ≠0˝`˛Ã0˝"˛30ÿ’˘UP&    ,U0˝`˛Ã1˝ ˛30ÿ͢™∞&    4ñ≠0˝`««Ã˝ 1··ÿ’˘UP    ,U0˝˝¿Õ͢™∞    4≠0˝˛¿Õ’˘UP
  9580. ,U0˛ˇ˛ÄÕ͢™∞4˛≠0 ˛»’˘UP",˛U0˛˙ˇ‡˙ˇÄ⁄͢™∞*4˛≠0˛ˇ¸ ˇ‡@Ä⁄’˘UP*,˛U0Ä–ˇ¸ ˇ‡@Ä⁄͢™∞*4˛≠0 ¿–˘¸~ <‡`A‡Ä⁄’˘UP2$,U0 «–Ò¸# 8 f?‡`C0Ä @Ģ Á͢™∞2$4≠0 Ö˘¸X f?‡`C0Ä @Ģ Á’˘UP8.,U0Ö˘¸<ò f?‡`C0Ä
  9581. G≈Œ88"8Ë͢™∞8.4ñ≠0 Ö˘¸ ~‡`C0Ä
  9582. HÄÜ"DòDë$DË’˘UP8.,U0 Ö˘¸ ¸ f?‡`C0Ä    HÄÑ"@êDè(@Ë͢™∞8.4≠0 Ö˘¸ f?‡`C0Ä    HÄÑ>8ê|ë08Ë’˘UP:.,U0 «–˘¸0F f?‡`C0Ä»ÄÑ ê@ë(˲ˇ˛¸™∞;4˛≠0˛ ˘¸?< f‡`A‡Ä»ÄÑ"DêDë$DË¿¸UP<,˛U0˛!ˇ¸ ˇ‡@ÄGd8ê8"8ÄÈ¿¸™∞-4˛©0˛ˇ¸ ˇ‡@Ä⁄¿¸UP-,˛‚0 ˛ˇ¸ ˇ‡@Ä⁄¿¸™∞%4˛ 0˛ˇ˙ˇ‡˙ˇÄ⁄¿¸UP,˛0˝»¿¸™∞4˙0˝»¿¸UP,˙0˝»¿¸™∞4˙0˝»¿¸UP,˙0˝¯˙ˇÄ⁄¿¸™∞"4˙0˝¯?ˇ¿Ä⁄¿¸UP",˙0˝¯?ˇ¿Ä⁄¿¸™∞"4˙0˝¯<¯?ü¡‡Ä⁄¿¸UP,,˙0˝¯
  9583. f¿?ü√0ÄÄ˚0¸ È¿¸™∞,4˙0˝¯
  9584. f¿?ü√0Ä@˚¸ È¿¸UP4,˙0˝¯f¿?ü√0Äa¿Yá·¿8π¿qsáÏ¿¸™∞44˙0˝¯~?ü√0Äôí fHë D¬ !ÑHëÏ¿¸UP//ıˇ¯f¿?ü√0Äàë DGë<Ç !HêÏ˛ˇ˛¸™∞07ıˇ¯f¿?ü√0ÄHë‡DHëÒ¿Dɇ!œéÏ¿¸UP0,ı¯f¿?ü√0ÄHëDHë DÇ!Ï¿¸™∞04ı¯f¯?ü¡‡ÄHë DHë DÇ !HëÏ¿¸UP1,ı¯?ˇ¿Äá¿DGû·¿<Å¿á Ì¿¸™∞"4ı¯?ˇ¿Ä˙‚¿¸UP",ı¯?ˇ¿Ä˙‚¿¸™∞4ı¯˙ˇÄ⁄¿¸UP,ı»¿¸™∞4ı»¿¸UP,ıÔ?›ˇ˛¿¸™∞4ı»¿¸UP,ı¯˙ˇÄ⁄¿¸™∞êà@ïà@ïgΔäÕP∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞òR@zà@zàäh©Δ4ı¯ ˇÄ⁄¿¸UP,ı¯ ˇÄ⁄¿¸™∞4ı¯<¯ `~Ä⁄¿¸UP*,ı¯
  9585. f¿ `|œÄÄ˚0˙ÄÌ¿¸™∞/4˙¯
  9586. f¿ `|œÄ@˚˙ÄÌ¿¸UP8,0˙¯f¿ `|œÄa¿Yá·¿8π¿Xq¿8q¿Ô¿¸™∞;    4VeôŒ3åp˝¯~ `|œÄôí fHë D¬ dàÄDâ" Ô¿¸UP:    ,íñ%)JRÄ˝¯f¿ `|œÄàë DGë<Ç DàÄDyBÓ¿¸™∞;    4Ñ%)J^`˝¯f¿ `|œÄHë‡DHëÒ¿DɇDàÄDâÅ¿Ô¿¸UP;    ,î%)JP˝¯f¿ `|œÄHëDHë DÇDàÄDâ@ Ô¿¸™∞;    4d…2L‡˝¯f¯ `~ÄHë DHë DÇ DàÄDâ" Ô¿¸UP7,˛˘¯ ˇÄá¿DGû·¿<Å¿Dp`8yƒÔ¿¸™∞&4˛˘¯ ˇÄ˙‚¿¸UP",ı¯ ˇÄ˙‚¿¸™∞4ı¯˙ˇÄ⁄¿¸UP,ı»¿¸™∞4ˆˇ»¿¸UP,ˆ»¿¸™∞4ˆ»¿¸UP,ˆ»¿¸™∞4ˆ»¿¸UP,ˆ»¿¸™∞4ˆ»ˇ¿¸UP,ˆ»ˇ¿¸™∞,4È    UUP"˚˛@@˛B˝ Ú¸UP1,È™™∞!0Dπ¿8∞bÃxCÄ≈Ä‚√Äàé<8Û¸™∞64í^Ì UUP!"D¬ D…"#2DD@F@C$@àë"DÄÙ¸UP6,˛ÄÓ™™∞!"DÇ <â˛" DD@D@B$@U"DÛ¸™∞54˝¿ÓUUP!"DɇDâ˛" DG¿D@B'¿U"|Û¸UP1,È™™∞!"DÇDâ˛" DDD@B$""@Û¸™∞64˛‡ÓUUP""DÇ Dâ˛" DD@D@B$@""DÛ¸UP2,È ™™∞<<Å¿<à""xCÄD@2#Ä"<8ÄÙ¸™∞'4˛‡ÓUUP˛¸Â˝˝UP',˛Ó™™∞˛"D¸"½™∞(4˛ÓUUP˛8¸Âˇ˝˛UP,˛Ó™™∞⁄˛™∞4˛ÓUUP⁄ˇ˝˛UP,˛Ó™™∞⁄
  9587. ˛™∞4˛ÓUUP⁄˛UP+,˛"Ó ™™∞¿˘!@Îà䲙∞*4˛A‡ÄÔ    UUP@˜!@ÎDM˛UP8,˛Ä@Ô™™∞
  9588. @YåYá"8π¿qa¿xqsáé"8pÚDJ˛™∞84 ÔUUP
  9589. @fDfHë"D¬ !í DâÑHë"DàÚDM˛UP8, Ô    ™™∞@˛DHTDÇ ! DâHë"DÄÚDJ˛™∞84Ô    UUP@˛DGT|ɇ!‡DâHë|pÚDM˛UP8,Ô    ™™∞?à@˛D@ëà@Ç!DâHë@ÚDJ˛™∞84Ô    UUP à@˛DHëàDÇ ! DâHëDàÚDM˛UP9,¿Ô    ™™∞ à@˛DGà8Å¿¿xqáé8pÄÛDJ˛™∞,4¿ÔUUP˙ıIJÄÛDM˛UP,,¿Ô™™∞˙ˆÄÚDJ˛™∞(4ÄÔUUP˙ˆÓDM˛UP ,Ä Ô™™∞⁄DJ˛™∞ 4Ä ÔUUP⁄DM˛UP ,˛ÄÄ@Ô™™∞⁄DJ˛™∞ 4˛@ÄÄÔUUP⁄DM˛UP0,˛ Ó ™™∞˘IJ@ DJ˛™∞04˛Ó UUP˘IJ@ DM˛UP6,˛¯Ó™™∞
  9590. òqfŒ8∞‡D·ÂŒ<8ÒDJ˛™∞ê@àzï@àzïäΔ©ÕP∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞òR@à@à©hÃΔ14ÈUUP
  9591. ""dâô"…"DB&"DÒDM˛UP1,È™™∞""Dâ"â"DB$"DÒDJ˛™∞14ÈUUP">Dâ>à‡"DB$"|Òàç˛UP7,¿,Ä@Ô™™∞?ë" Dâ à"DB$"@Ò
  9592. ˛™∞64 ÄÓUUP ë""Dâ"â"LB$"DÒ˛UP8,)e¿‹Ô™™∞ ëëDq à‡41‰<8ÄÚˇ˙˛™∞$4…$ûRÔUUPÓ ÓUUP%,)$ÄRÔ™™∞Ô Ó*™™∞%4)$ÄRÔUUPÔ¿ÓUUP ,«$@RÔ™™∞⁄*™™∞4ÈUUP⁄UUP,È™™∞⁄1‹*™™∞4ÈUUP⁄
  9593. UUP,È™™∞⁄9í*™™∞4ÈUUP⁄HRUUP,È™™øÿˇ˛;í*™™∞4ÈUUP⁄UUP,È™™∞⁄*™™∞4ÈUUP⁄¸UP,È™™∞⁄¸™∞4ÈUUP⁄¸UP,È™™∞⁄¸™∞4Áˇ¸UUP⁄¸UP,™™∞⁄¸™∞4ÂUUP⁄¸UP,™™∞⁄¸™∞4ÂUUP⁄¸UP,™™∞⁄¸™∞4ÂUUP⁄¸UP,™™∞⁄¸™∞4ÂUU_◊ˇ¸UP?≤ˇØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØêà@ïà@ï©ΔÃÕP∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞PòR@Äà@ÄàÃhÓΔØØØØØØØØØØØ*¸>IJ˘˘?˲@¸˙IJ‰-¸A @˚pIJ@˝˙IJ‰-¸Äà  Ä˚àIJ@˝˙IJ‰?˝9H @PKÄ ¡¿GàŒ.ìóÄx8¬,Äx\. «Ä. ¿Ì?˝9D@@–LÄ " »àHÑ"1ë@ÑDD"1ÄÑb1!    å(@"1å Ì?˝9D@@PH ÅÄ$PH    A Åë@ÄÇDA ÄA í!    H(A êH Ì?˝9D@‡@ÒPH ÄåÄ$PD
  9594. A Ä•@@ÇDA ÄA í     H$A êH Ì?˝9BÄ'Ç@PHÄtÄ#O√A Ä•@0~(? ¯Ä|A í     H#A è» Ì?˝9BÄ@PH Ä$PâA Ä•@Ä(@ àÄDA í     H ÄA ê Ì>¸8ÄÇÄ@PH ÅÄ$PHHÑA Ä•@ÑÇ(A!ÄÑA í!!    H(@A êH Ì>¸8A Ä–»àÄ" »àHÑ"1B@ÑD("!Äåb13#    à(@"1à Ì>¸8>¿OHpÄ!¿Gàb.Bê@x8 ‰Är\. Ö'Ä. ÌÒ@Ò Ù@ ¯ ÍÚÄÒ Ù@ ¯ ÍÚ Ù@ ¯ Í‡ Ù@ ¯ ÍØظ¸ ˛¸˛@Δ¸Ç ˛˚ Ä@!…¸Å ˛˚ Ä@@Ä…¸Å#¿‡‡t˘√¿Ëp Ä@@x Äp∏<Õ¸Å$!åÜ$!à@  ÄàƒBոǠ"    Ñ "    @< ÅÇ@Õ¸¸ "    Ñ "    @Ä ÅÇ Õ¸Ä#‚˘Ñ#‚¸
  9595. @û Ä¸ÇÕ¸Ä""Ñ""    
  9596. ˛@ ÅÇÕ¸
  9597. Ä$"    Ñ$"    ˛
  9598. ˛@ ÅÇBÕ¸Ä$c1åÑ$aà@ ÄàƒBÕ¸Ä#꿇tÑ#êËpp∏<Õ
  9599. ÚıÄà ÛıÄà Û‡ıÄÃÂÄÃØظ¯˛˛‡˛˛ ¸Ü˚˙  ¸Ç˚˛˙Ç  ¸ÅxF(ºpº$#Ç ¸ÅÑF(¬#àƒD"#B ¸ÅF(ÇAÑDA#"$ ¸Å)HÇAÑDA†"$ ¸Å|)HÇA †¸ÇÑ?†$ ¸ÅD)HÇA °ÇÑ@†
  9600. D ¸ÇÑ)HÇA °ÇÑA†
  9601. D ¸ÇåàÇ#@†àÇÑ"@D ¸¸ràÇ@‡@pÅBÑ 
  9602. ˆ¯≈
  9603. ˆB¯≈ˆ<ªØØê@àÄï@àÄïÃΔÓÕòRÄ¿àÄ¿àÓhΔØˆÄ˝@ ˘Ä˛Œ¸8˝˝ p˝Œ¸D˝˝ à"˝Œ"¸Ç‡póé<bC°¿ A‡pãŒ<–‡p∏—"¸(Ä
  9604. àòDBbDb @àå$B1àƒ—"¸H∏    êD@bH$$\    à$@    Ç—"¸àƒ"    êD îH$Db    à$     Ç—"¸àÇ"    êDîH#0DA    à$¯¸Ç—#˝˛ÇÇ    êDîH$@ˇA    à$Ç—"¸Ç    êDBîH$ÄA    à$B    Ç—"¸DàêDBDb "àà$B1àƒ—"¸8‡pêB<C°¡¸‡pà"<–‡p∏—˘¯˝¯Ä—˘¯˝¯Ä—˘Û¯Ä—˘Û¯Ä—Øظ˛@˙√¸Å@˛«˛@√¸Å@˛àê˛@√¸ÅH!¡¿HêÄ@,˘¡¿»¸Åà»"" †@@1Ü" »¸ÅPH$$ @@ Ñ$»¸˛PH$òÄ@@~ Ñ$»¸Å–H$@@O@@ ¯Ñ#»¸ÅH$@@êÅ@@ àÑ$«¸ÅPH$$P@êÅ@@!Ñ$»¸Åà»fb àÅÅ@@!Ñ" »¸ÅáG°Å¿@@ ‰Ñ!¿»ØØØØØØØØØØØØØØØØØØØØØØØظ0‡˘ƒ¸0¸@ƒ¸H¸@ƒ¸H.p8|‚·„ÖĺΔ¸H1êàDCDF¬"Δ¸à êQÇB    H$ÇBΔ¸Ñ êQÇB    H$Ç@Δ¸¸ êP¸ÇB    G‰Ç@Δ˝ êQÇB    HÇ@ΔêÄà¿ïÄà¿ïÓΔÕòR¿à¿àh3Δ˝ êQÇB    H$ÇBΔ˝1êà0DB DDÇfΔ˝.p¿8B‡Ù#ÑÇΔ˚ ˚˝√˚ ˚˝√ ˚ ˚æ ˚ ˚æØظ¸˝HÄæ¸Ç ˝HÄÄ√¸Å@˝HÄÄ√¸ÅÑÒ¯HêGéY·« ƒ¸Å    HêHDbàåƒ¸Ç HêH@êHƒ¸¸ Ñ HêD@êHƒ¸ÄÑ@HêCAêHƒ¸ÄD@Hê@ÑAêHƒ¸Ä$ÄHêHDBêHƒ¸Ä$2    Hê»DB0ààƒ¸Ä“ ¯ÄHèGÇA»GƒıĺıĺØØØظ뵸
  9605. ë‡ø¸ ëÄ¿¸ ëO≥√á@¿¸ ëPàƒ!ò@¿¸ ëPÄ!P@¿¸ ëHÄ!P‡Ä¿¸
  9606. ëFÉ·Pø¸
  9607. ëAÇ!Pø¸
  9608. ëPàÑ!Pø¸
  9609. ë–àÑaê ø¸ ëOÉêá¡¿¿ØØØØØØØØØØØØØØØØØØØØØØØØØê¿àï¿àïΔ3ÕòR@à@à3hVΔØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØêà@ïà@ï3ΔVÕòR@zà@zàVhuΔØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØê@àzï@àzïVΔuÕòR@à@à©hÃΔ14ÈUUP
  9610. ""dâô"…"DB&"DÒDM˛UP1,È™™∞""Dâ"â"DB$"DÒDJ˛™∞14ÈUUP">Dâ>à‡"DB$"|Òàç˛UP7,¿,Ä@Ô™™∞?ë" Dâ à"DB$"@Ò
  9611. ˛™∞64 ÄÓUUP ë""Dâ"â"LB$"DÒ˛UP8,)e¿‹Ô™™∞ ëëDq à‡41‰<8ÄÚˇ˙˛™∞$4…$ûRÔUUPÓ ÓUUP%,)$ÄRÔ™™∞Ô Ó*™™∞%4)$ÄRÔUUPÔ¿ÓUUP ,«$@RÔ™™∞⁄*™™∞4ÈUUP⁄UUP,È™™∞⁄1‹*™™∞4ÈUUP⁄
  9612. UUP,È™™∞⁄9í*™™∞4ÈUUP⁄HRUUP,È™™øÿˇ˛;í*™™∞4ÈUUP⁄UUP,È™™∞⁄*™™∞4ÈUUP⁄¸UP,È™™∞⁄¸™∞4ÈUUP⁄¸UP,È™™∞⁄¸™∞4Áˇ¸UUP⁄¸UP,™™∞⁄¸™∞4ÂUUP⁄¸UP,™™∞⁄¸™∞4ÂUUP⁄¸UP,™™∞⁄¸™∞4ÂUUP⁄¸UP,™™∞⁄¸™∞4ÂUU_◊ˇ¸UP?≤ˇØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØêà@ïà@ï©ΔÃÕP∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞P∞PòR@Äà@ÄàÃhÓΔØØØØØØØØØØØ*¸>IJ˘˘?˲@¸˙IJ‰-¸A @˚pIJ@˝˙IJ‰-¸Äà  Ä˚àIJ@˝˙IJ‰?˝9H @PKÄ ¡¿GàŒ.ìóÄx8¬,Äx\. «Ä. ¿Ì?˝9D@@–LÄ " »àHÑ"1ë@ÑDD"1ÄÑb1!    å(@"1å Ì?˝9D@@PH ÅÄ$PH    A Åë@ÄÇDA ÄA í!    H(A êH Ì?˝9D@‡@ÒPH ÄåÄ$PD
  9613. A Ä•@@ÇDA ÄA í     H$A êH Ì?˝9BÄ'Ç@PHÄtÄ#O√A Ä•@0~(? ¯Ä|A í     H#A è» Ì?˝9BÄ@PH Ä$PâA Ä•@Ä(@ àÄDA í     H ÄA ê Ì>¸8ÄÇÄ@PH ÅÄ$PHHÑA Ä•@ÑÇ(A!ÄÑA í!!    H(@A êH Ì>¸8A Ä–»àÄ" »àHÑ"1B@ÑD("!Äåb13#    à(@"1à Ì>¸8>¿OHpÄ!¿Gàb.Bê@x8 ‰Är\. Ö'Ä. ÌÒ@Ò Ù@ ¯ ÍÚÄÒ Ù@ ¯ ÍÚ Ù@ ¯ Í‡ Ù@ ¯ ÍØظ¸ ˛¸˛@Δ¸Ç ˛˚ Ä@!…¸Å ˛˚ Ä@@Ä…¸Å#¿‡‡t˘√¿Ëp Ä@@x Äp∏<Õ¸Å$!åÜ$!à@  ÄàƒBոǠ"    Ñ "    @< ÅÇ@Õ¸¸ "    Ñ "    @Ä ÅÇ Õ¸Ä#‚˘Ñ#‚¸
  9614. @û Ä¸ÇÕ¸Ä""Ñ""    
  9615. ˛@ ÅÇÕ¸
  9616. Ä$"    Ñ$"    ˛
  9617. ˛@ ÅÇBÕ¸Ä$c1åÑ$aà@ ÄàƒBÕ¸Ä#꿇tÑ#êËpp∏<Õ
  9618. ÚıÄà ÛıÄà Û‡ıÄÃÂÄÃØظ¯˛˛‡˛˛ ¸Ü˚˙  ¸Ç˚˛˙Ç  ¸ÅxF(ºpº$#Ç ¸ÅÑF(¬#àƒD"#B ¸ÅF(ÇAÑDA#"$ ¸Å)HÇAÑDA†"$ ¸Å|)HÇA †¸ÇÑ?†$ ¸ÅD)HÇA °ÇÑ@†
  9619. D ¸ÇÑ)HÇA °ÇÑA†
  9620. D ¸ÇåàÇ#@†àÇÑ"@D ¸¸ràÇ@‡@pÅBÑ 
  9621. ˆ¯≈
  9622. ˆB¯≈ˆ<ªØØê@àÄï@àÄïÃΔÓÕòRÄ¿àÄ¿àÓhΔØˆÄ˝@ ˘Ä˛Œ¸8˝˝ p˝Œ¸D˝˝ à"˝Œ"¸Ç‡póé<bC°¿ A‡pãŒ<–‡p∏—"¸(Ä
  9623. àòDBbDb @àå$B1àƒ—"¸H∏    êD@bH$$\    à$@    Ç—"¸àƒ"    êD îH$Db    à$     Ç—"¸àÇ"    êDîH#0DA    à$¯¸Ç—#˝˛ÇÇ    êDîH$@ˇA    à$Ç—"¸Ç    êDBîH$ÄA    à$B    Ç—"¸DàêDBDb "àà$B1àƒ—"¸8‡pêB<C°¡¸‡pà"<–‡p∏—˘¯˝¯Ä—˘¯˝¯Ä—˘Û¯Ä—˘Û¯Ä—Øظ˛@˙√¸Å@˛«˛@√¸Å@˛àê˛@√¸ÅH!¡¿HêÄ@,˘¡¿»¸Åà»"" †@@1Ü" »¸ÅPH$$ @@ Ñ$»¸˛PH$òÄ@@~ Ñ$»¸Å–H$@@O@@ ¯Ñ#»¸ÅH$@@êÅ@@ àÑ$«¸ÅPH$$P@êÅ@@!Ñ$»¸Åà»fb àÅÅ@@!Ñ" »¸ÅáG°Å¿@@ ‰Ñ!¿»ØØØØØØØØØØØØØØØØØØØØØØØظ0‡˘ƒ¸0¸@ƒ¸H¸@ƒ¸H.p8|‚·„ÖĺΔ¸H1êàDCDF¬"Δ¸à êQÇB    H$ÇBΔ¸Ñ êQÇB    H$Ç@Δ¸¸ êP¸ÇB    G‰Ç@Δ˝ êQÇB    HÇ@ΔêÄà¿ïÄà¿ïÓΔÕòR¿à¿àh3Δ˝ êQÇB    H$ÇBΔ˝1êà0DB DDÇfΔ˝.p¿8B‡Ù#ÑÇΔ˚ ˚˝√˚ ˚˝√ ˚ ˚æ ˚ ˚æØظ¸˝HÄæ¸Ç ˝HÄÄ√¸Å@˝HÄÄ√¸ÅÑÒ¯HêGéY·« ƒ¸Å    HêHDbàåƒ¸Ç HêH@êHƒ¸¸ Ñ HêD@êHƒ¸ÄÑ@HêCAêHƒ¸ÄD@Hê@ÑAêHƒ¸Ä$ÄHêHDBêHƒ¸Ä$2    Hê»DB0ààƒ¸Ä“ ¯ÄHèGÇA»GƒıĺıĺØØØظ뵸
  9624. ë‡ø¸ ëÄ¿¸ ëO≥√á@¿¸ ëPàƒ!ò@¿¸ ëPÄ!P@¿¸ ëHÄ!P‡Ä¿¸
  9625. ëFÉ·Pø¸
  9626. ëAÇ!Pø¸
  9627. ëPàÑ!Pø¸
  9628. ë–àÑaê ø¸ ëOÉêá¡¿¿ØØØØØØØØØØØØØØØØØØØØØØØØØê¿àï¿àïΔ3ÕòR@à@à3hVΔØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØêà@ïà@ï3ΔVÕòR@zà@zàVhuΔØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØê@àzï@àzïVΔuÕˇC@@ˇ ˇˇˇˇ@
  9629. ˇ·ˇ‚7^
  9630. 4H\, Palatino&e.3+ä"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@ä    Processes4⁄ä˙(‡äAbout Processes
  9631. (‡167
  9632. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9633. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9634.  
  9635.  
  9636.  
  9637.  
  9638.  
  9639. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  9640. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9641. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9642.  
  9643.  
  9644.  
  9645.  
  9646.  
  9647. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜¸˛ˇˇ    ˇ¸ˇ ˇˇ˛ˇ˙ˇ˛¸ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  9648. 454+?òÄ
  9649. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9650. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9651.  
  9652.  
  9653.  
  9654.  
  9655.  
  9656. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˜˛˙ˇ˚ˇˇ˚ˇˇ˙ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  9657. ˛ˇ˛ˇˇ
  9658. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  9659. ˛ˇ˛ˇˇ
  9660. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  9661. ˛ˇˇˇˇ
  9662. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  9663. ˛ˇˇˇˇ
  9664. ˛ˇˇˇˇ    ˝ˇˇˇ    ˛ˇˇ˛
  9665. ˛ˇˇˇˇ
  9666. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  9667. ˛ˇˇˇˇ
  9668. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  9669. ˛ˇˇˇˇ
  9670. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\ähë(eäA∫†°dONLNd\ëh±) backgr¿°dONLNd\≤h’)!ound prΔ†°dONLNd\’h)# ocess can rˆ†°dONLNd\h+)/    eceive prôÄ°dONLNd#\,h¢)(ocessing time when the for@°dONLNd=\£h±)wegr!°dONLNd@\±h‘)ound pr—‡°dONLNdG\‘h )# ocess makes .°dONLNdSiäu(räan event call (that is, calls ,
  9671. Courier°dONLNdqiuT)|WaitNextEvent°dONLNd~iTua)N or °dONLNdÇiauù)
  9672. EventAvail°dONLNdåiùu )<
  9673. ) and therR`°dONLNdñi u€)-e ar$¿°dONLNdöi€u) e no events .°dONLNd¶väÇ·(äpending for that for¢@°dONLNd∫v·ÇÔ)Wegr¿°dONLNdΩvÔÇ)ound prp‡°dONLNdƒvÇL)$ocess. The Pr§†°dONLNd—vLÇ˝)9(ocess Manager sends a null event to the °dONLNd˘Éäè®(åäbackgr[ °dONLNdˇÉ®èÀ)ound pr °dONLNdÉÃè˘)$ ocess, ther◊¿°dONLNdɢè¢)-(eby informing it that it is now the currΔ°dONLNd9É¢èº)©ent prÍÄ°dONLNd?ɺè˙)ocess and can °dONLNdMêäú˙(ôäperform whatever backgr@`°dONLNddê˚ú)qound prÒ@°dONLNdkêúd)#ocessing it desir^°dONLNd|êeú§)Ges. The backgr{Ä°dONLNdäê§ú«)?ound pr,`°dONLNdëê»ú)$ocess should °dONLNdûùä©*(¶ä%make an event call periodically in orÒ °dONLNd√ù*©J)†der to rF°dONLNdÀùK© )!elinquish the CPU and ensurü@°dONLNdÊù ©˚) e a timely rÌ¿°dONLNdÚù˚©)1eturn °dONLNd¯™ä∂°(≥äto forF@°dONLNd˛™¢∂∞)egrd°dONLNd™∞∂”)ound pr‡°dONLNd™‘∂B)$ocessing when necessaryˇ`°dONLNd™@∂B)l.°dONLNd!ºä»,(≈ä%The CPU is available only to the curr¸@°dONLNdFº,»∞)¢ ent application, whether it is rÅ@°dONLNdfº±»Ô)Öunning in the °dONLNdt…ä’ñ(“äfor`°dONLNdw…ó’•)egr, °dONLNdz…•’˘)ound or the backgr6Ä°dONLNdå…˘’î)T#ound. The application can be interr<¿°dONLNdØ…î’„)õupted only by harY@°dONLNd¿…„’˙)Odwarë°dONLNdƒ…˙’)e °dONLNdΔ÷ä‚¢(fläinterr°dONLNdÃ÷£‚‚)upts, which ar7°dONLNd⁄÷‚‚)?
  9674. e transparã °dONLNd‰÷‚ô),ent to the application. However¡@°dONLNd÷ô‚»)ã , to give pr'†°dONLNd÷…‚)0ocessing time to °dONLNd „äÔ®(Ïäbackgr[ °dONLNd&„®Ôˇ)Nound applications and to allow the user to interact with your application and .°dONLNdtä¸{(˘ä4others, you must periodically call the Event Manager=`°dONLNd®|¸Ö)Ú’s =`°dONLNd´Ö¸”)    WaitNextEvent=`°dONLNd∏”¸‡)N or °dONLNdº˝ä    Δ(ä
  9675. EventAvail°dONLNdΔ˝Δ    s)<( function to allow your application to rR`°dONLNdÓ˝s    ∂)≠elinquish contr$¿°dONLNd˝˝∂    )Col of the CPU for .°dONLNd
  9676. ä+(ä%short periods. By using these event r\°dONLNd4
  9677. +)°3outines in your application, you allow the user to °dONLNdgä#/( ä&interact not only with your applicatioȆ°dONLNdç/#<)•n b¬†°dONLNdê=#≈) ut also with other applications.°dONLNd±)ä51(2ä$The method by which the available pr<†°dONLNd’)25ˆ)®,ocessing time is distributed among multiple °dONLNd6äBì(?äprG °dONLNd6îBÌ)
  9678. ocesses is known as ◊‡°dONLNd6ÌB=)Ycontext switching`°dONLNd(6>Bb)Q
  9679.  (or just *†°dONLNd26bBé)$    switching!@°dONLNd;6èBó)-). ¿°dONLNd>6óB)All switching occurs at a ˇˇ•n.°dONLNdXCäOµ(Läwell-defi°dONLNdaCµO)+ned time, namelyØ°dONLNdqCO|)L, when an application calls ˇ˛JÍB°dONLNdçC|O ){WaitNextEventˇˇ•nÍB°dONLNdöC O)N. When a context .°dONLNd´Pä\Â(Yäswitch occurs, the Prπ °dONLNd¿PÂ\[)[ocess Manager allocates prª °dONLNd⁄P[\µ)vocessing time to a prt¿°dONLNdÔP∂\)[ocess other than the °dONLNd]äifl(fäone that had been rÖ°dONLNd]fli)U eceiving prß °dONLNd"]iV)1ocessing time. TúÄ°dONLNd2]Vi)F)wo types of context switching may occur: °dONLNd[jäv‘(sämajor and minor8Ä°dONLNdjj‘vŸ)J. °dONLNdm|äàë(ÖäA∫†°dONLNdn|ëàì) :†°dONLNdo|îàœ) major switch\¿°dONLNd{|œàœ);: is a complete context switch: an application’s windows ar≤°dONLNdµ|œà˛(Öœ
  9680. e moved fri†°dONLNdø|ˇà)0om °dONLNd¬âäï‘(íäthe back to the fríÄ°dONLNd‘â‘ï )J:ont, or vice versa. In a major switch, two applications arˆ¿°dONLNdâ ï)ˆe involved, the °dONLNdñä¢
  9681. (üäone being switched to the for¥°dONLNd;ñ
  9682. ¢)Äegr—¿°dONLNd>ñ¢Á)-ound and the one being switched to the backgr¿°dONLNdkñË¢)–ound. °dONLNdq£äØß(¨äThe Prä`°dONLNdw£ßØ#)ocess Manager switches the À¿°dONLNdí£#ØÒ)|0A5 worlds of both applications, as well as the ro °dONLNd¬£ÚØ)œelevant °dONLNd ∞些(πälow-memory envir`@°dONLNd⁄∞›º’)S7onments. If those applications can handle suspend and rȇ°dONLNd∞’ºÙ)¯esume °dONLNdΩä… (Δäevents, they arª¿°dONLNd&Ω …Ù)@
  9683. e so notifi∂@°dONLNd1Ωı…¨)++ed at the time that a major switch occurs. °dONLNd]œä€ë(ÿäA∫†°dONLNd^œë€ì) :†°dONLNd_œî€–) minor switchxÄ°dONLNdkœ–€')< occurs when the Prt†°dONLNd~œ'€À)W$ocess Manager gives time to a backgrØ¿°dONLNd¢œÀ€Ó)§ound pr`†°dONLNd©œÔ€)$ocess °dONLNdØ‹äË(Âäwithout bringing the backgr÷†°dONLNd ‹Ë))|ound práÄ°dONLNd—‹*Ëf)$ocess to the frfl°dONLNd‡‹fË™)<ont. The two pr˙°dONLNdÔ‹™Ë    )Docesses involved in a °dONLNd    Èäı(Úäminor switch can be two backgrs °dONLNd    #Èı:)çound pr$°dONLNd    *È;ı})$ocesses or a for Ä°dONLNd    :È}ıã)BegrË@°dONLNd    =ÈãıÆ)ound prô °dONLNd    DÈØı„)$ ocess and a °dONLNd    Pˆä®(ˇäbackgr[ °dONLNd    Vˆ®À)ound pr °dONLNd    ]ˆÃË)$ocess. ◊°dONLNd    dˆÁ`)As in a major switch, the PrT@°dONLNd    Äˆa›)zocess Manager switches the dONLNd    õˆ›)|
  9684. A5 worlds °dONLNd    •ä( äand the low-memory envir*¿°dONLNd    Ωb)wonments of the two pr‹¿°dONLNd    “b∞)aocesses. Howeverô`°dONLNd    ‚∞Œ)N, the or1@°dONLNd    ÍœÎ)der of °dONLNd    Òä<(ä'windows is not switched, and neither pr“°dONLNd
  9685. <Y)≤ocess r@`°dONLNd
  9686. Zœ)eceives either suspend or r¬@°dONLNd
  9687. :œ)uesume events. °dONLNd
  9688. I"ä.æ(+ä When the fr‚†°dONLNd
  9689. T"æ. )4Iontmost window is an alert box or modal dialog box, major switching does °dONLNd
  9690. ù/ä;≥(8ä    not occur†°dONLNd
  9691. ¶/≥;G))!, although minor switching can. T+`°dONLNd
  9692. «/G;)î(o determine whether major switching can °dONLNd
  9693. Ô<äH¢(Eäoccur`°dONLNd
  9694. Ù<¢HÉ)1, the Operating System checks (among other things%¿°dONLNd %<ÉH≥)· ) whether t~°dONLNd 0<≥H¯)0he window defi °dONLNd ><˘H)Fnition .°dONLNd EIäUî(RäprR`°dONLNd GIîU±)
  9695. ocedur$¿°dONLNd MI±U›) e of the fr˜ °dONLNd XI‹U1)+ontmost window is ˜ °dONLNd jI1Ua)UdBoxProc˜ °dONLNd rIaU≥)0, because the type ˜ °dONLNd ÖI≥U„)RdBoxProc˜ °dONLNd çI„UÔ)0 is .°dONLNd ëVäb¶(_äspecifiÓ °dONLNd òV¶b¡)cally r@°dONLNd üV¬bª):eserved for alert boxes and modal dialog boxes. (If the frı‡°dONLNd ŸV∫b)¯ontmost window is °dONLNd Îcäoì(lä;a movable modal dialog box, major switching can still occurˆÄ°dONLNd &cíoó(lí.)
  9696. }Hã4~Hã    °dONLNd )|äáù(ÑäNote
  9697. ˇ·ˇ‚7^
  9698. °dONLNd .âäïê*Y@Ä°dONLNd /âêïÙ)our application can alsM†°dONLNd FâÙï)do be sQ`°dONLNd Lâï∂)(witched out if it calls a system softwarl°dONLNd tâ∂ïΩ)©e °dONLNd vïä°ç(ûärE°dONLNd wïé°∑)Coutine that internally makes an event call. For example, when your .°dONLNd ∫°ä≠⁄(™äapplication calls °dONLNd ð⁄≠)P ModalDialog°dONLNd ◊°≠ç)B, a minor switch can occur¬†°dONLNd Ò°å≠è)p.,Zapf Dingbats.¬†°dONLNd ˚§î¨ô)uˇ$º@ˇ ˇˇˇˇ@
  9699. ˇ·ˇ‚7^
  9700. 4*\¯, Palatino&e.3+l"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@l    Processes4⁄*˙¯
  9701. (‡*168    )BSpecifying Processing Options4^*¿¯
  9702. ^*x¯4^*x¯
  9703. à*ê¯4â*ꯠä*ä˛
  9704. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdu*àâ(É*Specifying Pr4˙°dONLNduäà)`ocessing OptionsˇˇˇˇˇˇU˛(É9
  9705. °dONLNdôl•r(¢lTµ¿°dONLNdôq•|)o t̆°dONLNd"ô|•s) 8ake full advantage of the cooperative multitasking envir؇°dONLNdZôt•¢)¯    onment prÔ@°dONLNdcô¢•·).ovided by the °dONLNdq¶l≤fl(ØlMacintosh system softwar3`°dONLNdⶇ≤œ)t5e, you need to inform the Operating System about the °dONLNdæ≥løu(ºlprG °dONLNd¿≥vøÈ)
  9706. ocessing capabilities and r–°dONLNd€≥Èø)sequirÁ@°dONLNd‡≥ø{)ements of your application. p@°dONLNd¸≥|øÇ)|Y0¿°dONLNd˝≥ÇøÍ)ou need to indicate, for °dONLNd¿lÃë(…lexample˙`°dONLNd¿ëÔ)%, the partition s•‡°dONLNd.¿‘À)Cizé@°dONLNd0¿‹ÃË)e yg°dONLNd3¿ÈÃ`)our application needs in or>¿°dONLNdN¿`ÿ)wder to execute most efΔ†°dONLNdd¿¿ÃÂ)`    fectivelyJ¿°dONLNdm¿ÂÃÍ)%. °dONLNdoÕlŸr(÷lY@Ä°dONLNdpÕrŸå)?ou also need to indicate whether your application can do any prº °dONLNdØÕåŸÏ(÷åocessing while it is in °dONLNd«⁄lÊö(„l
  9707. the backgr∏Ä°dONLNd—⁄öÊ'). ound. If it cannot do any backgr °dONLNdÒ⁄(ÊK)éound pr»°dONLNd¯⁄KÊá)#ocessing, ther‹†°dONLNd⁄áÊÒ)<e’s no use in having the °dONLNdÁlÛu(lPrN†°dONLNd!ÁvÛ)
  9708. ocess Manager give your applic5°dONLNd?ÁÛ)åatio’@°dONLNdCÁÛœ),n access to the CPU while it’s in the backgr+‡°dONLNdoÁ–ÛÈ)æound.°dONLNdu˘lr(lY@Ä°dONLNdv˘rÚ)ou specify these and other pr_@°dONLNdì˘ÚÒ)Ä9ocessing options to the Operating System by including in .°dONLNdÃl≈(lyour application’s rR`°dONLNd‡≈‹)Yesour$¿°dONLNd‹) ce fork a r˜ °dONLNd)+esour…Ä°dONLNdıK) ce of type ,
  9709. Courier…Ä°dONLNdKo)-'SIZE'…Ä°dONLNdo≠)$, known as its …Ä°dONLNd≠Ë)>size resource.…Ä°dONLNd#ËÍ); .°dONLNd$lñ(l
  9710. The size rÔ¿°dONLNd.ñÆ)*esour8°dONLNd3ØJ)$ce contains several long integers anÄ°dONLNdWKr)úd many fÜ °dONLNd_rÒ)'lag bits, which together give °dONLNd} l,Ü()lthe Pr¨°dONLNdÉ Ü,ÿ)Kocess Manager the information it needs to launch your application and contrÉÄ°dONLNdŒ ÿ,Ô()ÿol its °dONLNd’-l9u(6lprG °dONLNd◊-v9ù)
  9711.     ocessing.
  9712. G*U¯4H*U¯°dONLNd·HlPã(NlIMPORTÄ°dONLNdÁHãPõ)ANT
  9713. ˇ·ˇ‚7^
  9714. °dONLNdÎSl_8(\l-Every application executing in system softwarä`°dONLNdS8_ò)Ãe version 7.0 and laterπÄ°dONLNd/Sò_®)`, as °dONLNd4_lkX(hl5well as every application executing in system softwarf†°dONLNdi_Xk®)Ïe version 6.0 with °dONLNd|klw°(tl MultiFinders°dONLNdák°w    )5, should contain a size ri`°dONLNd†k    w!)hesour±†°dONLNd•k!w,)ce.,Zapf DingbatskÄ°dONLNd±n2v8)s
  9715. .°dONLNd≥|làt(ÖlAÛ`°dONLNd¥|sàx) 'Û`°dONLNd∂|xàê)SIZEÛ`°dONLNd∫|êàô)' r≈¿°dONLNdΩ|ôà∞)    esourò °dONLNd¬|∞à)ce consists of a 16-bit flò °dONLNd‹|à.)fags fiò °dONLNd‚|.à≈)"eld, followed by two 32-bit size fiò °dONLNd|≈àÒ)ó
  9716. elds. The .°dONLNdâlïr(ílflå¿°dONLNdârïâ)ags fi†°dONLNdââïµ)
  9717. eld specifi°Ä°dONLNd"â∂ïΔ)-@es operating characteristics of your application, and the size fiL†°dONLNdcâ«ï€(í«elds °dONLNdhñl¢Ó(ülindicate the minimum and prq°dONLNdÉñÓ¢)Çeferr¿°dONLNdàñ¢¡)-ed partition sizes for your application. The fl@°dONLNdµñ¡¢Ò)æminimum °dONLNdΩ£lØ®(¨lpartition sizeΩ‡°dONLNdÀ£®Ø®)<< is the actual limit below which your application will not r8°dONLNd£©ØÕ(¨©un. The °dONLNd∞lº’(πlpreferred partition size‡°dONLNd'∞÷º∑)j3 is the memory size at which your application can r»¿°dONLNdZ∞∑º›)·un most °dONLNdbΩl…t(Δlefo‡°dONLNddΩt…î)fectivelĆ°dONLNdlΩî…ô) yÙ°dONLNdmΩò…®). ThÊ °dONLNdqΩ©…N)$e Operating System attempts to securfl‡°dONLNdïΩN…U)•e )Ä°dONLNdóΩV…r)this pr©¿°dONLNdûΩr…Ü)eferrHÄ°dONLNd£Ωá…Ï)ed amount of memory °dONLNd∑ l÷å(”lwhen yRÄ°dONLNdΩ ç÷–)!our application¯†°dONLNdà–÷)C  is launched‡°dONLNdÿ ÷Ÿ)60. If that amount of memory is unavailable, your °dONLNd◊l„˘(‡l"application is placed into the lar¿°dONLNd*◊˙„ì)é#gest contiguous block available, prˇ@°dONLNdM◊í„Â)òovided that it is larX °dONLNdb◊Ê„ˆ)Tger °dONLNdf‰lØ(Ìlthan the specifi∞†°dONLNdv‰Ø˛)Ced minimum size.
  9718. ˛* ¯4ˇ* ¯    °dONLNdá˝l(lNote
  9719. ˇ·ˇ‚7^
  9720. °dONLNdå
  9721. lú*AIf the amount of available memory is between the minimum and the °dONLNdÕl"u* prG °dONLNdœv"ä)
  9722. eferr‡°dONLNd‘ä"¨)Ded sizes, the Finder displays a dialog box asking if the user wants °dONLNd"l.{(+lto rñÄ°dONLNd"{.û)Aun the application using the amount of memory available. If your .°dONLNd].l:Ô(7lapplication does not have a '°dONLNdz.Ô:)ÉSIZE°dONLNd~.:)' rR`°dONLNdÅ.:')    esour$¿°dONLNdÜ.':û)ce, it is assigned a default .°dONLNd£:lF“(Clpartition size of 512 KB'`°dONLNdª:”F’)g,ß`°dONLNdº:’F)  and the Pr¿Ä°dONLNd«:FÆ)0&ocess Manager uses a default value of .°dONLNdÌFlRä(OlFALSE°dONLNdÚFäRΔ) for all specifPÄ°dONLNd    FΔR')<ications normally def!°dONLNd    F'Rñ)ained by constants in the fÒÄ°dONLNd    0FïR™)nlags .°dONLNd    5Rl^r([lfiå¿°dONLNd    7Rr^Ç)eld.⁄Ä°dONLNd    DUá]å)u
  9723. .°dONLNd    FcloÆ(ll When you defi°dONLNd    ScÆo≈)Bne a '°dONLNd    Yc≈o›)SIZE°dONLNd    ]c›oÊ)' rR`°dONLNd    `cÊo˝)    esour$¿°dONLNd    ec˝oj)ce, you should give it a r˜ °dONLNd    cioÄ)lesour…Ä°dONLNd    ÑcÄo≥)ce ID of –1. k °dONLNd    ëc≥oª)3AfiÄ°dONLNd    íc∫o·)
  9724.  user can .°dONLNd    úpl|©(ylmodify the prU °dONLNd    ©p©|Ω)=eferrÛ‡°dONLNd    ÆpΩ|)ed size in the Finder=†°dONLNd    √p|˜)[3’s information window for your application. If the .°dONLNd    ˆ}lâr(Ül;user does alter the partition size, the Operating System crR`°dONLNd
  9725. 1}râ´(Üreates a new 'R`°dONLNd
  9726. >}´â√)9SIZER`°dONLNd
  9727. B}√âÃ)' r$¿°dONLNd
  9728. E}Ãâ„)    esour˜ °dONLNd
  9729. J}‚âÌ)ce .°dONLNd
  9730. Mälñò(ìl
  9731. having a rÄ°dONLNd
  9732. Wäôñ±)-esourM¿°dONLNd
  9733. \ä±ñ?)"ce ID of 0 in your application’s r%°dONLNd
  9734. ~ä?ñW)éesourm@°dONLNd
  9735. ÉäWñz)    ce fork. ‡°dONLNd
  9736. åäzñı)#At application launch time, .°dONLNd
  9737. ®ól£à(†lthe PrR`°dONLNd
  9738. Æóà£˛)ocess Manager looks for a 'R`°dONLNd
  9739. …ó˛£)vSIZER`°dONLNd
  9740. Õó£)' r$¿°dONLNd
  9741. –ó£6)    esour˜ °dONLNd
  9742. ’ó5£î)ce with ID 0; if this r…Ä°dONLNd
  9743. Ïó)_esourõ‡°dONLNd
  9744. Òó´£Ó)ce is not found, °dONLNd §l∞à(≠lthe PrR`°dONLNd §à∞)"ocess Manager uses your original 'R`°dONLNd *§∞6)ñSIZER`°dONLNd .§6∞?)' r$¿°dONLNd 1§?∞V)    esour˜ °dONLNd 6§U∞Ã)ce (with ID –1). This new '˜ °dONLNd Q§Ã∞‰)wSIZE˜ °dONLNd U§‰∞È)' .°dONLNd W±lΩo(∫lrE°dONLNd X±pΩà)esourç@°dONLNd ]±àΩπ)ce is also cr<†°dONLNd j±∫Ω2)2eated when the user modifi)Ä°dONLNd ѱ3Ω )y%es any of the other settings in the rÍ@°dONLNd ©± Ω‚)óesour2Ä°dONLNd Ʊ„ΩÓ)ce.ˇ5Ë@ˇ ˇˇˇˇ@
  9745. ˇ·ˇ‚7^
  9746. 4H\, Palatino&e.3+ä"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@ä    Processes4⁄ä˙(‡äSpecifying Processing Options
  9747. (‡169
  9748. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9749. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9750.  
  9751.  
  9752.  
  9753.  
  9754.  
  9755. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  9756. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9757. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9758.  
  9759.  
  9760.  
  9761.  
  9762.  
  9763. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜¸˛ˇˇ    ˇ¸ˇ ˇˇ˛ˇ˙ˇ˛¸ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  9764. 454+?òÄ
  9765. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9766. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9767.  
  9768.  
  9769.  
  9770.  
  9771.  
  9772. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˜˛˙ˇ˚ˇˇ˚ˇˇ˙ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  9773. ˛ˇ˛ˇˇ
  9774. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  9775. ˛ˇ˛ˇˇ
  9776. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  9777. ˛ˇˇˇˇ
  9778. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  9779. ˛ˇˇˇˇ
  9780. ˛ˇˇˇˇ    ˝ˇˇˇ    ˛ˇˇ˛
  9781. ˛ˇˇˇˇ
  9782. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  9783. ˛ˇˇˇˇ
  9784. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  9785. ˛ˇˇˇˇ
  9786. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿.°dONLNd\äh∫(eä Listing 9-1°dONLNd \∫hV)0# shows the Rez input for a sample ',
  9787. Courier°dONLNd.\Vhn)úSIZE°dONLNd2\nhw)' rR`°dONLNd5\whé)    esour$¿°dONLNd:\éhö)ce.
  9788. ãHì4åHì"åH_
  9789. ˇ·ˇ‚7^    .°dONLNd>Åäå∂(âä Listing 9-1.°dONLNdJÅŒå:)DThe Rez input for a sample 
  9790. °dONLNdeÄ:å^)l'SIZE'    °dONLNdkÅ^åÜ)$
  9791.  resource 
  9792. °dONLNdvõHßÃ(§Hresource 'SIZE' (-1) {°dONLNdé©Zµê+    reserved,°dONLNd°©µV)¥ /*reserved*/°dONLNdØ∑Z√ˆ(¿ZacceptSuspendResumeEvents,°dONLNd”∑√Ï)¥%/*accepts suspend and resume events*/°dONLNd˙≈Z—ê(ŒZ    reserved,°dONLNd≈—V)¥ /*reserved*/°dONLNd”Zfl∫(‹ZcannotBackground°dONLNd+”∫fl¿)`,°dONLNd6”flÊ)T$/*can't use background null events*/°dONLNd\·Z̉(ÍZdoesActivateOnFGSwitch,°dONLNd}·Ìº)¥/*activates own windows in */°dONLNd¶Ô˚™*/* response to OS events*/°dONLNd¬˝Z    Í(ZbackgroundAndForeground,°dONLNd‰˝    Ê)¥$/*application has a user interface*/°dONLNd
  9793.  ZÃ(ZdontGetFrontClicks,°dONLNd' ¬)¥/*don't return mouse events */°dONLNdQ%¬*/* in front window on resume*/°dONLNdq'Z3“(0ZignoreAppDiedEvents,°dONLNdè'3Œ)¥ /*doesn’t want app-died events*/°dONLNd±5ZAΔ(>Zis32BitCompatible,°dONLNdÕ5A‘)¥!/*works with 24- or 32-bit addr*/°dONLNdCZOfi(LZnotHighLevelEventAware°dONLNdCfiO‰)Ñ,°dONLNdCO»)0/*can't use high-level events*/°dONLNd2QZ]¿(ZZonlyLocalHLEvents°dONLNdCQ¿]Δ)f,°dONLNdNQ]Ú)N&/*can't use remote high-level events*/°dONLNdv_ZkΔ(hZnotStationeryAware°dONLNdà_ΔkÃ)l,°dONLNdì_k⁄)H"/*can't use stationery documents*/°dONLNd∑mZyÍ(vZdontUseTextEditServices,°dONLNdŸmy‡)¥#/*can't use inline input services*/°dONLNd˛{Záê(ÑZ    reserved,°dONLNd{áV)¥ /*reserved*/°dONLNdâZïê(íZ    reserved,°dONLNd2âïV)¥ /*reserved*/°dONLNd@óZ£ê(†Z    reserved,°dONLNdSó£V)¥ /*reserved*/°dONLNda•Z±¿(ÆZkPrefSize * 1024,°dONLNd|•±§)¥/*preferred memory size*/°dONLNdó≥Zø¥(ºZkMinSize * 1024°dONLNd∞≥øò)¥/*minimum memory size*/°dONLNd»¡HÕT( H};°dONLNdÀŸä°+BThe '°dONLNd–Ÿ°Âπ)SIZE°dONLNd‘Ÿπ¬)' rR`°dONLNd◊Ÿ¬Ÿ)    esour$¿°dONLNd‹ŸŸÂ)    ce specifi$¿°dONLNdÊŸÂ+))
  9794. cation in $¿°dONLNdŸ+Â[)) Listing 9-1$¿°dONLNd˚Ÿ[Â)0) indicates, among other things, that the .°dONLNd$ÊäÚ(Ôä!application accepts suspend and rN†°dONLNdEÊ Úè)ñesume events, does no pr™ °dONLNd]ÊèÚ)oocessing in the backgr†°dONLNdsÊÒÚ)bound, °dONLNdyÛäˇy(¸ä6activates or deactivates any windows as necessary in r‡°dONLNdØÛzˇ˙)esponse to operating-system °dONLNdÀä c(    ä3events, has a user interface, and doesn’t want to r&¿°dONLNd˛d )⁄'eceive any mouse event associated with °dONLNd%äï(äa r≈°dONLNd(ïŒ) Hesume event that was caused by the user clicking in the application’s fr*`°dONLNdpœ(œ
  9795. ont windowA†°dONLNdz)5. In .°dONLNdä&È(#äthis example, the Re°dONLNdìÈ&Ù)_z i°dONLNdñÙ&) nput fi°dONLNdù&E) le must defi°dONLNd©E&Ω)4ne values for the constants °dONLNd≈Ω&Û)x    kPrefSize°dONLNdŒÛ&)6 and °dONLNd”'ä3∫(0äkMinSize°dONLNd€'∫3)0; for example, if °dONLNdÌ'3:)J    kPrefSize°dONLNdˆ':3ã)6 is set to 50, the prR`°dONLNd 'ã3°)Qeferr$¿°dONLNd'°3)ed partition size is 50 KB$¿°dONLNd*'3)r.
  9796. AHO4BHO    .°dONLNd,@äKù(HäNote
  9797. ˇ·ˇ‚7^
  9798. °dONLNd1MäY**#See the chapter “Event Manager” in ]‡°dONLNdTM+Y©)°Inside Macintosh: Macintosh T∞`°dONLNdqM®Yƒ)}oolbox .°dONLNdxYäe∏(bä
  9799. Essentials°dONLNdÇY∏e‚).
  9800.  for a morR`°dONLNdåY‚eN)*e complete description oR`°dONLNd§YNef)lf the R`°dONLNd™Yfel)'R`°dONLNd´Yleä)SIZE'R`°dONLNd∞Yäeê) r$¿°dONLNd≤Yêeß)esour˜ °dONLNd∑Y¶e≤)ce.,Zapf Dingbats.˜ °dONLNd√\∑dº)u
  9801. °dONLNd≈jävê(säT†¿°dONLNdΔjêvd)/he numbers you specify as your application’s prˆ‡°dONLNdıjdvx)‘eferrdONLNd˙jyv    )ed and minimum partition sizes °dONLNdwäÉ&(Ää!depend on the particular memory rb@°dONLNd:w&É=)úequiryÄ°dONLNd?w=É∏)ements of your application. Ä°dONLNd[wπÉø)|Y√°dONLNd\wæÉ )our application’s °dONLNdnÑäêµ(çämemory r-‡°dONLNdvÑ∂êÕ),equirE °dONLNd{ÑÕêº)6ements depend in turn on the size of your application’;¿°dONLNd±ÑΩê√)s ö`°dONLNd≥Ñ√ê˜) A5 world, hv@°dONLNdæѯê)5eapB°dONLNd¡Ñê), °dONLNd√ëäùè(öäa°dONLNdƒëèùˆ)Snd stack. (See the chapter “Memory” earlier in this book for details about these ar€†°dONLNd    ëˆù(öˆeas of °dONLNd    ûä™    (ßäyour application’s partition.)ˇ*@ˇ ˇˇˇˇ@
  9802. ˇ·ˇ‚7^
  9803. 4*\¯, Palatino&e.3+l"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@l    Processes4⁄*˙¯
  9804. (‡*170    )B"Handling Suspend and Resume Events4^*¿¯
  9805. °dONLNd\lhr(elY@Ä°dONLNd\rhı)ou can usually make a fairly rB°dONLNd\ıh»)É3eliable estimate of the size of your application’s ·†°dONLNdR\»hÙ)”    A5 world °dONLNd[iluÒ(rlYby determining the size of your application’s global variables and its jump table (whose .°dONLNd¥vlǬ*Msize you can determine by looking at the size of your compiled application’s ,
  9806. Courier°dONLNdv¬ÇÊ(¬'CODE'°dONLNdvÊÇË)$ .°dONLNdÉlèo(ålrE°dONLNd    Épèà)esourç@°dONLNdÉàè≈)ce with ID 0). ‹@°dONLNdÉ≈èÀ)=Yú¿°dONLNdÉÀèN)ou can also make a good guesU`°dONLNd:ÉOèt)Ñ    s about t`°dONLNdCÉuèÛ)&he size of your application’s °dONLNdaêlú(ôl#static heap objects—objects that arl‡°dONLNdÑêú5)ó e always pr     °dONLNdèê6ú–)3#esent during the execution of your °dONLNd≤ùl©)(¶l*application (for example, code segments, TΔ °dONLNd‹ù(©i)ºoolbox data str{`°dONLNdÎùj©Å)Buctur@°dONLNdùÇ©»)es for window r‡°dONLNdˇù»©⁄)Fecorv@°dONLNdù⁄©È)ds, °dONLNd™l∂ú(≥l and so on).°dONLNdºl»∫*It’s a little bit morÌÄ°dONLNd(º∫»¥)N8e work to determine the amount of space you’ll need to rù¿°dONLNd`ºµ»‚)˚ eserve for °dONLNdk…l’9(“l.dynamic heap objects. These include objects crV¿°dONLNdô…9’w)Õeated on a perü¿°dONLNdß…w’„)>-document basis (which °dONLNdæ÷l‚¡(fllmay vary in size pr{°dONLNd—÷¡‚ô)U1oportionally with the document itself) and objectïÄ°dONLNd÷ô‚£)ÿs rÄ°dONLNd÷§‚ª) equir.¿°dONLNd
  9807. ÷ª‚◊)ed for °dONLNd„lÔà(ÏlspecifiÓ °dONLNd„àÔ )c commands or functions. Per·‡°dONLNd4„ Ôæ)É)haps the best advice to follow in determi}@°dONLNd]„øÔ€)¥ning y¶†°dONLNdc„€ÔÏ)our °dONLNdgl¸Û(˘lapplication’s minimum and prdONLNdÉÛ¸)áeferr3`°dONLNdà¸∫)*ed partition sizes is to experiment with rdONLNd≤∫¸Ë)≤
  9808. easonable °dONLNdº˝l    «(lvalues and make surø`°dONLNdœ˝«    Û)[ e that therÅÄ°dONLNd⁄˝Ù    ô)-#e is always enough memory to meet rÄ°dONLNd˝˝ö    À)¶ easonable rœ†°dONLNd˝À    Ó)1equests °dONLNd
  9809. ls(lfrò‡°dONLNd
  9810. sß) om the user¿°dONLNd
  9811. ߨ)4. ’ °dONLNd
  9812. ´±)YdONLNd 
  9813. ±Á)Cou can also use tools such as MacsBug’s heap-exploring commands to °dONLNdcl#é( l>help empirically determine your application’s dynamic memory rÑ`°dONLNd°é#•( éequirõ†°dONLNd¶•#«)ements.
  9814. **E¯4+*E¯
  9815. U*]¯4V*]¯ W*W˛
  9816. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdÆB*UC(P*"Handling Suspend and Resume EventsˇˇˇˇˇˇU˛(P9
  9817. °dONLNd—flrr(olY@Ä°dONLNd“frrº)our application r+†°dONLNd„fºr)Jeceives suspend and r0Ä°dONLNd¯frr)aesume events as a rh °dONLNd frr”)Uesult of changes in its °dONLNd#slu(|lprG °dONLNd%svW)
  9818. 4ocessing status. When your application is in the for´¿°dONLNdYsWe)·egr…Ä°dONLNd\se¨)ound and the PrL`°dONLNdks≠)Hocess Manager °dONLNdyÄlå˛(âl"wants to switch it into the backgr4‡°dONLNdõġå5)ì ound, the Pr †°dONLNdßÄ5å§)6ocess Manager sends it a aÄ°dONLNd¿Ä•åÈ)psuspend event.Ø¿°dONLNdŒÄÈåÎ)D °dONLNdœçlô(ñl*This is a signal to your application to pr@°dONLNd˘çô/)∞epar®°dONLNd˝ç/ôå)e to be switched out. Ò‡°dONLNdçåôí)]Y≤`°dONLNdçíôÌ)our application isn’t °dONLNd*öl¶(£l!actually switched out immediatelyÑ@°dONLNdKö¶H)ò. Instead, the PrD‡°dONLNd\öI¶Ú)E%ocess Manager gives your application °dONLNdÅßl≥(∞l&a chance to handle the suspend event. ,@°dONLNdßß≥)™YÏ¿°dONLNd®ß≥¡)'our application is switched out at the |¿°dONLNdœß¬≥”)ßnextC`°dONLNd”ß‘≥Ò) event °dONLNd⁄¥l¿–(Ωlcall it makes. Similarlyp¿°dONLNdÚ¥œ¿≈)c;, the application that is about to be switched into the forì`°dONLNd-¥≈¿”)ˆegr± °dONLNd0¥”¿ˆ)ound is °dONLNd8¡lÕà( lsent a ö`°dONLNd?¡àÕƒ) resume eventl`°dONLNdK¡≈ÕW)=# once it’s actually switched. The r@°dONLNdn¡XÕfl)ì esume event is a signal to that °dONLNdéŒl⁄“(◊lapplication that it can ræ`°dONLNdߌ“⁄ )fesume normal forÓ°dONLNd∑Œ ⁄.)Negr ¿°dONLNd∫Œ/⁄R)ound prº†°dONLNd¡ŒR⁄y)#    ocessing.°dONLNdÀ‡lÏã(ÈlUpon r’@°dONLNd—‡ãÏ≤)Ceceiving a suspend event, your application should deactivate the fr§¿°dONLNd‡≥ÏÈ(È≥
  9819. ont windowº°dONLNd‡ËÏÌ)5, °dONLNd Ìl˘o(ˆlrE°dONLNd!Ìp˘‡)emove the highlighting fr°dONLNd:Ì·˘w)q!om any selections, and hide any fl°dONLNd\Ìw˘√)ñoating windows. ô °dONLNdlÌ√˘…)LYY†°dONLNdmÌ…˘⁄)our °dONLNdq˙l⁄(lUapplication should also convert any private scrap into the global scrap, if necessary‡°dONLNdΔ˙⁄Ë(⁄. If °dONLNdÀlw(l:your application shows a window that displays the Clipboar`°dONLNd    xı(xd contents, you should hide °dONLNd    !l ∑(lthis window alsoM°dONLNd    1∏ Â)L , because tfi†°dONLNd    < ¿)-1he user might change the contents of the Clipboarâ°dONLNd    m¡ ‡)‹d befor`°dONLNd    t· Ë) e °dONLNd    v!l-o(*lrE°dONLNd    w!p-Ú)eturning to your application. $Ä°dONLNd    ï!Ú-¯)ÇY°dONLNd    ñ!˜-˜);our application can also do anything else necessary to get .°dONLNd    —.l:p(7lrR`°dONLNd    “.p:{);eady for a major switch. Then your application should call R`°dONLNd
  9820. .{:…(7{WaitNextEventR`°dONLNd
  9821. .…:÷)N to .°dONLNd
  9822. ;lGo(DlrE°dONLNd
  9823. ;pGµ)elinquish the prÏ@°dONLNd
  9824. /;µG¡)E;ocessor and allow the Operating System to schedule other prXÄ°dONLNd
  9825. j;¬GÛ(D¬ ocesses for °dONLNd
  9826. vHlTõ(Ql execution. ˇ/⁄@ˇ ˇˇˇˇ@
  9827. ˇ·ˇ‚7^
  9828. 4H\, Palatino&e.3+ä"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@ä    Processes4⁄ä˙(‡ä"Handling Suspend and Resume Events
  9829. (‡171
  9830. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9831. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9832.  
  9833.  
  9834.  
  9835.  
  9836.  
  9837. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  9838. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9839. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9840.  
  9841.  
  9842.  
  9843.  
  9844.  
  9845. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜¸˛ˇˇ    ˇ¸ˇ ˇˇ˛ˇ˙ˇ˛¸ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  9846. 454+?òÄ
  9847. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9848. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9849.  
  9850.  
  9851.  
  9852.  
  9853.  
  9854. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˜˛˙ˇ˚ˇˇ˚ˇˇ˙ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  9855. ˛ˇ˛ˇˇ
  9856. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  9857. ˛ˇ˛ˇˇ
  9858. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  9859. ˛ˇˇˇˇ
  9860. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  9861. ˛ˇˇˇˇ
  9862. ˛ˇˇˇˇ    ˝ˇˇˇ    ˛ˇˇ˛
  9863. ˛ˇˇˇˇ
  9864. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  9865. ˛ˇˇˇˇ
  9866. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  9867. ˛ˇˇˇˇ
  9868. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿°dONLNd\äh©(eäUpon r’@°dONLNd\©h€) eceiving a ru@°dONLNd\‹h¡)34esume event, your application should activate the frı¿°dONLNdF\¡h )Âont window and °dONLNdUiäuç(rärE°dONLNdViéu£)estor»Ä°dONLNd[i£uÕ)Fe any windows to the state the user left them in at the time of the pr0`°dONLNd°iŒu(rŒevious suspend °dONLNd∞väÇv(ä4event. For example, your application should show scrP`°dONLNd‰vwdž)Ì oll bars, r퇰dONLNdÔv†Çµ))estor`°dONLNdÙv∂Ç)e any selections that °dONLNd
  9869. Éäèõ(åäwere†°dONLNdÉõè¨)e prv`°dONLNdɨèÁ)eviously in ef©`°dONLNdÉÁèB);fect, and show any fl.¿°dONLNd4ÉCèè)\oating windows. ∑‡°dONLNdDÉèèï)LYx`°dONLNdEÉïè)our application should copy °dONLNdaêäú(ôäthe contents of the Clipboarƒ°dONLNd}êú )z>d and convert the data back to its private scrap, if necessary-Ä°dONLNdªê ú(ô . °dONLNdΩùä©û(¶ä=If your application shows a window that displays the ClipboarO¿°dONLNd˙ùü©ˆ(¶üd contents, you can °dONLNd™ä∂A(≥ä)update the contents of the window after rŸÄ°dONLNd7™A∂ô)∑eading in the scrap. ì@°dONLNdL™ö∂†)YYS¿°dONLNdM™†∂)our application can then °dONLNdf∑ä√ç(¿ärE°dONLNdg∑é√)esume interacting with the user¿°dONLNdÜ∑√)ã.°dONLNdà…ä’ (“äResponding to a suspend or rÅ@°dONLNd§… ’)Ç8esume event usually involves activating or deactivating .°dONLNd‹÷ä‚Ù(fläwindows. If you set the ,
  9870. Courier°dONLNdÙ÷Ù‚ä)jacceptSuspendResumeEvents°dONLNd÷ä‚ì)ñ fl°dONLNd÷ì‚≈)     ag and the °dONLNd„äÔ(ÏädoesActivateOnFGSwitch°dONLNd1„Ô)Ñ fPÄ°dONLNd3„Ôà)lag in your application’s 'PÄ°dONLNdN„àÔ†)tSIZEPÄ°dONLNdR„†Ô©)' r"‡°dONLNdU„©Ô¿)    esourı@°dONLNdZ„øÔ„)    ce, your .°dONLNdcä¸À(˘äapplication is r!@°dONLNdsøw)B(esponsible for activating or deactivatin„@°dONLNdõw¸î)´g its w1 °dONLNd¢︱)indow” °dONLNdß±¸)s when it handles °dONLNdπ˝ä    é(äsΩ°dONLNd∫˝é    ») uspend and rl °dONLNdΔ˝…    );esume events.°dONLNd‘ä∏(ä Listing 9-2 @°dONLNdflπÃ)/ defií`°dONLNd‰ÃÒ)    nes the r ¿°dONLNdÌÚR)&outine called by the VÜ°dONLNdQˇ)_%enn Diagrammer application to handle °dONLNd(ä(¯(%äoperating-system events.
  9871. KHS4LHS"LH_
  9872. ˇ·ˇ‚7^    °dONLNdAAäL∂*$ Listing 9-2°dONLNdMAŒLV)D Handling operating-system events
  9873. .°dONLNdn[Hg¿(dHPROCEDURE DoOSEvent °dONLNdÇ[¿gˆ)x    (myEvent:°dONLNdã[ˆgJ)6 EventRecord);°dONLNdõiZul(rZVAR°dONLNd°wlÉ¢+    myWindow:°dONLNdÆw¥É)H
  9874. WindowPtr;°dONLNdπÖHëf(éHBEGIN°dONLNd¿ìZüä+CASE BSR°dONLNd»ìäü¿)0    (myEvent.°dONLNd—ì¿ü)6message, 24) OF°dONLNd„°l≠fi(™lmouseMovedMessage: °dONLNd˙Ø~ªú+BEGIN°dONLNdΩê…¥+DoIdle°dONLNd
  9875. Ω¥…Í)$    (myEvent)°dONLNdΩÍ…)6;°dONLNd"Ωå…)¢{right now, do nothing}°dONLNd=À~◊ñ(‘~END;°dONLNdDŸlÂ(‚lsuspendResumeMessage: °dONLNd^Á~Ûú+BEGIN°dONLNdhıê +myWindow := FrontWindow;°dONLNdÖê¿*IF (BAnd°dONLNd翈)0    (myEvent.°dONLNdñˆ∞)6message, resumeFlag) <> 0) THEN°dONLNdª¢b(¢ DoActivate(myWindow, activeFlag)°dONLNdËåÚ)Í{activate window}°dONLNd˛ê+®((êELSE°dONLNd-¢9Ä+%DoActivate(myWindow, 1 - activeFlag);°dONLNd:-å9˛)Í{deactivate window}°dONLNdQ;~Gñ(D~END;°dONLNdXIlU¢(Rl    OTHERWISE°dONLNdeW~cÑ+;°dONLNdheZqr(nZEND;°dONLNdmsH`(|HEND;ˇR@ˇ ˇˇˇˇ@
  9876. ˇ·ˇ‚7^
  9877. 4*\¯, Palatino&e.3+l"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@l    Processes4⁄*˙¯
  9878. (‡*172    )B"Handling Suspend and Resume Events4^*¿¯
  9879. .°dONLNd\lhä(elThe prR`°dONLNd\ähß)ocedur$¿°dONLNd \ßhÆ)e ,
  9880. Courier$¿°dONLNd\Æh‰)    DoOSEvent$¿°dONLNd\‰hx)6" is called by the main event loop $¿°dONLNd9\xh|)î($¿°dONLNd:\|h“)Listing 4-4 on page $¿°dONLNdN\“h‹)V77$¿°dONLNdP\‹h‡)
  9881. )$¿°dONLNdQ\‡h‚) °dONLNdRilu≠(rlwhenever the °dONLNd_i≠u≈)Awhat°dONLNdci≈uŒ) fi°dONLNdfiŒu)    eld of an event rR`°dONLNdwiu()Hecor$¿°dONLNd{i(uê)d contains the constant $¿°dONLNdìiêuÆ)hosEvt$¿°dONLNdòiÆu≥). ˜ °dONLNdöi≤uπ)Y  °dONLNdõiπuÁ) ou need to °dONLNd¶vldž(l inspect the °dONLNd≤v†Ç )4message°dONLNdπv Ç”)* fi°dONLNdºv”Ç%)    eld of that event rR`°dONLNdœv%Ç7)Recor$¿°dONLNd”v7Ç∑)d to determine what kind of .°dONLNdÔÉlè˙(åloperating-system event you’ve rQ@°dONLNdÉ˚è)èeceived»¿°dONLNdÉè!)!. »¿°dONLNdÉ!è')T˛Ä°dONLNdÉ&èH)able 9-1 °dONLNd ÉIèÎ)#$ shows the information contained in .°dONLNdDêlúw(ôlth°dONLNdFêwúã) e bit°dONLNdKêãú†)s of t°dONLNdQê†úÆ)he °dONLNdTêÆúÿ)message°dONLNd[êÿú·)* fi°dONLNd^ê·úÍ)    el°dONLNd`êÍúÛ)    d..°dONLNdÆblnØ(klIAs you can see, you need to inspect bits 24–31 to determine what kind of °dONLNd˜ol{˙*operating-system event you’ve rQ@°dONLNdo˚{Í)è7eceived. Those eight bits contain one of two constants:.°dONLNdNÜlíä(èlCONST°dONLNdWî~†ˆ+suspendResumeMessage°dONLNdsî†2)ê= $01;°dONLNd}îV†Ï)H{suspend or resume event}°dONLNdò¢~Ɖ(´~mouseMovedMessage°dONLNdØ¢ÍÆ)l °dONLNd≤¢Æ2)$= $FA;°dONLNdº¢VƬ)H{mouse-moved event°dONLNdŒ¢¬Æ»)l}.°dONLNd–∫lΔÈ(√lIf the event is a suspend or riÄ°dONLNdÓ∫ÈΔÍ)}9esume event, you then need to examine bit 0 to determine °dONLNd'«l”
  9882. (–l$whether that event is a suspend or rÒ‡°dONLNdK«
  9883. ”à)ûesume event. (Bits 0 and 1 arÙ°dONLNdh«à”ˆ)~e meaningful only if bits °dONLNdÇ‘l‡4(›l/24–31 indicate that the event is a suspend or rG`°dONLNd±‘5‡t)…esume event.) Ê@°dONLNdø‘t‡z)?Y¶¿°dONLNd¿‘z‡ª)ou can use the .°dONLNdœ·lÌ®(Íl
  9884. resumeFlag°dONLNdŸ·®Ì©)<: constant to determine whether the event is a suspend or rR`°dONLNd·©ÌÓ(Í©esume event. If °dONLNd#Ól˙Ø(˜lthe event is a rR`°dONLNd3ÓØ˙Â)C esume eventR`°dONLNd>ÓÂ˙Ë)6,R`°dONLNd?ÓË˙/) you can use the R`°dONLNdPÓ/˙ß)GconvertClipboardFlagR`°dONLNddÓß˙€)x constant to .°dONLNdq˚lÈ(ldetermine whether Clipboar)`°dONLNdã˚Í,)~d conversion fr„‡°dONLNdö˚,t)Bom the Clipboar∂¿°dONLNd©˚tÙ)Hd to your application’s scrap °dONLNd«ly(lis rÍ`°dONLNdÀyê)equir†°dONLNd–ëï)eÀ@°dONLNd—ïù)d..°dONLNd‘l+ä((lCONST°dONLNd€-~9∫+
  9885. resumeFlag°dONLNdÌ-9&)ê= 1;°dONLNdÛ-29Ü)${resume event}°dONLNd;~Gˆ(D~convertClipboardFlag°dONLNd;G&)ê= 2;°dONLNd%;2GÊ)${Clipboard conversion required°dONLNdC;ÊGÏ)¥}°dONLNdESl_ä(\lThe prR`°dONLNdKSä_ß)ocedur$¿°dONLNdQSß_Æ)e $¿°dONLNdSSÆ_‰)    DoOSEvent$¿°dONLNd\S‰_¯)6 defi$¿°dONLNdaS¯_)ned in $¿°dONLNdhS_E) Listing 9-2$¿°dONLNdsSE_N)0 fi$¿°dONLNdvSN_v)        rst check$¿°dONLNdSv_Ñ)(s w$¿°dONLNdÇSÑ_Ò)hat kind of event it has ˇˇ˜|°dONLNdõ`llp(ilrR`°dONLNdú`pl=).eceived. If the event is a mouse-moved event, ˇˇÊt@°dONLNd `>lt)Œ    DoOSEventˇˇ˜|@°dONLNd”`tlå)6 ignorÿ°dONLNdŸ`ål∏)
  9886. es the eve«°dONLNd„`πl )-nt, tæê°dONLNdË`Àlœ)rê°dONLNdÈ`œl˜)
  9887. eating it ˇˇ‰ê°dONLNdÛmly6(vl1like a null event. If the event is a suspend or r$ê°dONLNd$m7yq)Àesume event, ˇˇ≠∞Ì∞°dONLNd1mqyß):    DoOSEventˇˇ‰êÌ∞°dONLNd:mßy˜)6 then activates or .°dONLNdMzlÜ∑(Éldeactivates the fr‡°dONLNd_z∑ÜÌ)K
  9888. ont window˝ °dONLNdizÏÜò)5', depending on whether the event is a rÇ °dONLNdêzôÜÛ)≠esume or a suspend °dONLNd£álìÜ(êlevent.
  9889. ø*«¯4¿*«¯ √l√¯
  9890. ˇ·ˇ‚7^    °dONLNdcµl¿ì(Ωl    Table 9-1.°dONLNdmµ™¿‰)>The bits in the 
  9891. °dONLNd}¥‰¿):message    °dONLNdѵ¿)* fi°dONLNdᵿµ)'eld of an operating-system event record.°dONLNdØÕlÿw(’lBit°dONLNd≥Õôÿø)-Contents
  9892. °dONLNdΩ€lÁq(‰l0°dONLNdø€ôÁ)-0 if a suspend event°dONLNd‘ÊôÚ¥* 1 if a r@°dONLNd‹ÊµÚÏ) esume event°dONLNdȯlq(l1°dONLNdίô–)-0 if Clipboarh@°dONLNd¯¯–*)7d conversion is not r}Ä°dONLNd¯*A)Zequirî¿°dONLNd¯AK)ed°dONLNdô–( ô1 if Clipboarh@°dONLNd"–)7d conversion is rt@°dONLNd30)IequirãÄ°dONLNd80:)ed°dONLNd<l!Ä(l2–23°dONLNdAô!¡)-Reserved°dONLNdK'l3Ö(0l24–31.°dONLNdQ'ô3)-suspendResumeMessage°dONLNde'3Y)x if a suspend or rR`°dONLNdw'Y3v)Hesume .°dONLNd}2ô>±(;ôevent.°dONLNdÉ=ôIˇ* mouseMovedMessage°dONLNdî=ˇIk)f if a mouse-moved eventˇ9¶@ˇ ˇˇˇˇ@
  9893. ˇ·ˇ‚7^
  9894. 4H\, Palatino&e.3+ä"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@ä    Processes4⁄ä˙(‡äHandling Null Events
  9895. (‡173
  9896. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9897. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9898.  
  9899.  
  9900.  
  9901.  
  9902.  
  9903. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  9904. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9905. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9906.  
  9907.  
  9908.  
  9909.  
  9910.  
  9911. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜¸˛ˇˇ    ˇ¸ˇ ˇˇ˛ˇ˙ˇ˛¸ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  9912. 454+?òÄ
  9913. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9914. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9915.  
  9916.  
  9917.  
  9918.  
  9919.  
  9920. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˜˛˙ˇ˚ˇˇ˚ˇˇ˙ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  9921. ˛ˇ˛ˇˇ
  9922. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  9923. ˛ˇ˛ˇˇ
  9924. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  9925. ˛ˇˇˇˇ
  9926. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  9927. ˛ˇˇˇˇ
  9928. ˛ˇˇˇˇ    ˝ˇˇˇ    ˛ˇˇ˛
  9929. ˛ˇˇˇˇ
  9930. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  9931. ˛ˇˇˇˇ
  9932. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  9933. ˛ˇˇˇˇ
  9934. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  9935. ^Hk4^Hk    °dONLNd]ähù(eäNote
  9936. ˇ·ˇ‚7^
  9937. °dONLNdiäu«*Because the V› °dONLNdiΔuæ)<6enn Diagrammer application doesn’t support cutting or °dONLNdHuäÅ°(~ä?pasting, it doesn’t need to worry about converting the Clipboar÷°dONLNdáu°Å©(~°d.,Zapf Dingbatsq¿°dONLNdíxØÄ¥)u
  9938. áH¢4àH¢
  9939. ≤H∫4≥H∫ ¥H¥
  9940. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdîüH≤Ê(≠HHandling Null EventsˇˇˇˇˇˇU˛(≠9
  9941. °dONLNd©√䜋(ÃäKRecall that the Event Manager sends your application a null event when therfl¿°dONLNdÙ√‹œÏ(Ëe arÓ`°dONLNd¯√Ïœ)e no .°dONLNd˝–ä‹”(Ÿäother events to rR`°dONLNd–”‹)I eport. The ,
  9942. CourierR`°dONLNd–‹R)1WaitNextEventR`°dONLNd&–R‹~)N  function r$¿°dONLNd1–~‹‰),eports a null event by r˜ °dONLNdI–„‹)e eturning a °dONLNdT›äÈ¥(Êä
  9943. function rR`°dONLNd^›¥È◊)*    esult of R`°dONLNdg›◊Èı)#FALSER`°dONLNdl›ıÈJ) and by setting the R`°dONLNdÄ›JÈb)UwhatR`°dONLNdÑ›bÈk) fiR`°dONLNdá›kÈ∏)    eld of the event r$¿°dONLNdô›∏È )Mecor˜ °dONLNdù›…È‹)d to ˜ °dONLNd¢›‹È)nullEvt˜ °dONLNd©›È    )*..°dONLNd´Ôä˚ˆ(¯äWhen your application rʆ°dONLNd¬Ôˆ˚Ø)l,eceives a null event, it can perform idle pr-‡°dONLNdÓÔ∞˚⁄)∫
  9944. ocessing. rÄ°dONLNd¯Ô⁄˚‡)*Y3°dONLNd˘Ô‡˚Ò)our °dONLNd˝¸ä5(ä%application should do only minimal prè@°dONLNd"¸5l)´ocessing in rÄ@°dONLNd/¸l)7'esponse to a null event, so that other °dONLNdV    äì(äprG °dONLNdX    îR)
  9945. +ocesses can use the CPU and so that the form@°dONLNdÉ    R`)æegrã°dONLNdÜ    `É)ound pr;‡°dONLNdç    Ñ˚)$ocess (or your application, °dONLNd©ä"fl(äwhen it is in the for9°dONLNdæ‡"Ó)VegrV¿°dONLNd¡Ó" ) ound) can r°dONLNdÃ!"M)3    espond prÕÄ°dONLNd’M"û),omptly to the user+@°dONLNdÁû"ˇ)Q. For example, if your °dONLNd˛#ä/(,äapplication is in the forÅ¿°dONLNd#/˛)fegrüÄ°dONLNd#˛/?)ound when it r<`°dONLNd(#@/ñ)Beceives a null eventK†°dONLNd<#ñ/≤)V, you cG†°dONLNdC#≥/∏)aG†°dONLNdD#∏/fi)n make tà °dONLNdL#fi/„)&hYÄ°dONLNdM#‰/) e insertion °dONLNdY0ä<¿(9äpoint blink iï°dONLNdf0¿<Œ)6>n the active window (if your application supports text entry).°dONLNd•BäN‚(KäIf your application r,†°dONLNd∫B„Nu)Y"eceives a null event in the backgr. °dONLNd‹BuN)í!ound, it can perform tasks or do °dONLNd˝Oä[≠(Xäother pr †°dONLNdOÆ[*)$ocessing while in the backgr≥‡°dONLNd!O*[o)|ound. However™@°dONLNd.Oo[Ò)E, your application should not °dONLNdL\ähW(eä,perform any tasks that would slow down the rˆ °dONLNdx\Wh¿)Õesponsiveness of the for• °dONLNdê\¡hœ)jegr¬‡°dONLNdì\œhÚ)ound prs¿°dONLNdö\Ûh)$ocess. °dONLNd°iäuê(räY@Ä°dONLNd¢iêu—)Mour application also should not interact with the user if it is in the backgr¥`°dONLNdÔi—uÍ(r—ound.
  9946. ÉHë4ÑHë    °dONLNdıÇäçù(ääNote
  9947. ˇ·ˇ‚7^
  9948. °dONLNd˙èäõ * Remember that your application r}Ä°dONLNdè õæ)ñ'eceives null events while it is in the .°dONLNdAõäß®(§äbackgrR`°dONLNdGõ®ß )ound only if you’ve set the R`°dONLNdcõ ßn)xcanBackgroundR`°dONLNdpõnßw)N flR`°dONLNdsõwß•)     ag in your °dONLNd~ßä≥…(∞äapplication’s °dONLNdåß…≥Ì)?'SIZE'°dONLNdíßÌ≥Û)$ rR`°dONLNdîßÛ≥
  9949. )esour$¿°dONLNdôß
  9950. ≥ø)*ce. If you don’t want your application to .°dONLNd√≥äøç(ºärE°dONLNdƒ≥éøF)+eceive null events when it is in the backgrZ°dONLNdÔ≥Fø∂)∏ound, you should set the .°dONLNdøäÀÍ(»äcannotBackground°dONLNdøÍÀ)` fPÄ°dONLNdøÀ)lag..PÄ°dONLNd'¬  )u
  9951. °dONLNd)–䋧(ŸäThe Vÿ °dONLNd.–£‹≈)?enn Diagrammer application uses null events in a somewhat interц°dONLNdm–Δ‹ı(ŸΔ
  9952. esting way`‡°dONLNdw–ı‹˙)/. °dONLNdy›äÈ(ÊäWhenever the application rÒ¿°dONLNdì›È“)x2eceives a null event, it calls the application-defi°dONLNdΔ›”È)—ned pr‡°dONLNdÛÈ)ocedurô °dONLNd“›È)e ˇˇå.°dONLNd‘ÍäˆÆ(ÛäDoIdleˇˇ¨Ñ°dONLNd⁄Íƈ)$M, which checks to see whether the user wants it to automatically adjust the V”x°dONLNd'͈(Ûenn .°dONLNd+˜ä’(äIdiagram and whether the diagram might need adjusting. If both of these aró`°dONLNdt˜’„(’e tr°dONLNdx˜‰    )    ue, then ˇˇê.°dONLNdÅäÆ(äDoIdleˇˇ⁄¨°dONLNdáÆ")$ calls the application-def‡Ñ°dONLNd°"A)tined prçê°dONLNd®B_) ocedur_°dONLNdÆ_e)e ˇˇê:ú°dONLNd∞f¢)
  9953. DoVennIdleˇˇ⁄¨:ú°dONLNd∫¢)< to perform the automatic °dONLNd‘ä¿(ä adjustment. °dONLNd‡¿‘)6The °dONLNd‰‘¯)DoIdle°dONLNdͯ˙)$ °dONLNdÎ˙)prR`°dONLNdÌ!)
  9954. ocedur$¿°dONLNdÛ!()e $¿°dONLNdı(D)is defi$¿°dONLNd¸Da)ned in $¿°dONLNdaë) Listing 9-3$¿°dONLNdëî)0.
  9955. @HH4AHH"AH_
  9956. ˇ·ˇ‚7^    .°dONLNd6äA∂(>ä Listing 9-3°dONLNd6ŒA)DHandling null events
  9957. .°dONLNd1PH\8(YH(PROCEDURE DoIdle (myEvent: EventRecord);°dONLNd[^Zjl+VAR°dONLNdallx¢+    myWindow:°dONLNdnl¥x)H
  9958. WindowPtr;°dONLNd{zlÜ¢(Él    myHandle:°dONLNdàz¥ܸ)H MyDocRecHnd;°dONLNdïàHîf(ëHBEGIN°dONLNdúñZ¢Í+myWindow := FrontWindow;°dONLNd∂§Z∞*IF IsAppWindow(myWindow) THEN°dONLNd÷≤læfi+IF gAutoAdjust THENˇ,ò@ˇ ˇˇˇˇ@
  9959. ˇ·ˇ‚7^
  9960. 4*\¯, Palatino&e.3+l"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@l    Processes4⁄*˙¯
  9961. (‡*174    )BHandling Null Events4^*¿¯,
  9962. Courier
  9963. .°dONLNd\`h~(e`BEGIN°dONLNd
  9964. jrvÜ+.myHandle := MyDocRecHnd(GetWRefCon(myWindow));°dONLNd=xrÑ8*!IF myHandle^^.needsAdjusting THEN°dONLNddÜÑí+DoVennIdle(myWindow);°dONLNd}î`†x(ù`END;°dONLNdÇ¢*ÆB(´*END;°dONLNdá∫lΔ∞+BThe document rR`°dONLNdï∫∞Δ¬)Decor$¿°dONLNdô∫¬Δ
  9965. )d contains the fi$¿°dONLNd™∫
  9966. Δ)Held $¿°dONLNdÆ∫Δo)needsAdjusting$¿°dONLNdº∫oΔ∏)T, which is set to $¿°dONLNdŒ∫∏Δ–)ITRUE$¿°dONLNd“∫–ΔÍ) each .°dONLNdÿ«l”Í(–ltime the user clicks anywherª°dONLNdÙ«Í”()~e within the V @°dONLNd«(”n)>enn diagram cirÔ °dONLNd«m”Æ)Ecles. If the userõ‡°dONLNd"«∞”√)C’s prÁ@°dONLNd'«√””)eferì`°dONLNd+«‘”Û)ence is ˇˇâ .°dONLNd3‘l‡(›l'for automatic diagram adjustment, then ˇ˛õ`-†°dONLNdZ‘‡C)≥DoIdleˇˇâ -†°dONLNd`‘C‡\)$ calls ?‡°dONLNdg‘\‡π)the application-defi…°dONLNd{‘π‡‘)]ned pr$Ä°dONLNdÅ‘’‡Ú)ocedurˆ‡°dONLNdá‘Ò‡˜)e °dONLNdâ·lÌr(ÍlD°dONLNdä·rÌ®)    oVennIdle°dONLNdì·®Ì)6 to adjust the diagram. °dONLNd´·Ì()hFigurR`°dONLNd∞·(Ì=)e 9-2R`°dONLNdµ·=ÌÈ)& shows the state of a diagram needing °dONLNd€Ól˙µ(˜ladjustment, and °dONLNdÎÓµ˙Õ)IFigurR`°dONLNdÓÕ˙‚)e 9-3R`°dONLNdıÓ‚˙o) shows the same diagram after R`°dONLNdÓo˙´)ç
  9967. DoVennIdleR`°dONLNdÓ´˙Ë)< has adjusted .°dONLNd,˚l§(l the diagram.
  9968. *#¯4*#¯    °dONLNd9l*Note
  9969. ˇ·ˇ‚7^
  9970. .°dONLNd>!l-Ä*The °dONLNdB!Ä-º)
  9971. DoVennIdle°dONLNdL!º-æ)< °dONLNdM!æ-»)prR`°dONLNdO!»-Â)
  9972. ocedur$¿°dONLNdU!Â-Ï)e $¿°dONLNdW!Ï-)
  9973. is not defi$¿°dONLNdb!-§),!ned in this book. In addition to °dONLNdÉ-l9^(6l3determining whether and how to adjust the diagram, °dONLNd∂-^9ö)Ú
  9974. DoVennIdle°dONLNd¿-ö9ú)< °dONLNd¡9lEp(BlrR`°dONLNd¬9pEö)
  9975. esets the R`°dONLNdÃ9öEÓ)*needsAdjustingR`°dONLNd⁄9ÓE˜)T fiR`°dONLNd›9˜EU)    eld of the document r$¿°dONLNdÚ9UEg)^ecor˜ °dONLNdˆ9fEy)d to ˜ °dONLNd˚9yEó)FALSE˜ °dONLNd9óEö).,Zapf Dingbats.˜ °dONLNd
  9976. <üD§)u
  9977. f*w¯4g*w¯"g*]
  9978. ˇ·ˇ‚7^    °dONLNd \lgñ(dl
  9979. Figure 9-2°dONLNd\Æg¥)BA0°dONLNd\¥gº) VÄ°dONLNd\ºgZ)&enn diagram before automatic adjusting
  9980. vgE¯òÄ:7œHHKÿ–ˇˇˇˇˇˇ7œymCö»ˇ¸Ä…Ä…Ä…ø˜Ôˇ¸ÛÏˇ˜Ä@Ì`˛|`¸Îø@'Ôˇ¸`˛f˚Ïˇ˜Ä@ Ó c««¿fc√ÊœÎø@'Ôˇ¸˛f    `fdfgôòÏˇ˜Ä@ Ó˛f`fcÊfôòÎø@'Ôˇ¸gÊf`˝fôòÏˇ˜Ä@ Óff`˝fôòÎø@'Ôˇ¸F&f`˝fôòÏˇ˜Ä_‡Ó ÉΔf`|c„ÊôòÎø@Ôˇ¸˘`¸Ïˇ˜ ÄÂ`Á Ä¿ÁÄ…«ˇÄ @÷Ä Ò@÷Ä <@÷ÄÄ 9√8@÷Ä0Ä  Y    àp@÷Ä0Ä @±`h‡@÷Ä Åa#êhA¿@÷Ä!¡N~h„Ä@÷ÄÄ"Åhw@÷ÅÜÄ'˚!Äh>@÷ÅÜÄ$@~h@÷Ä$ Ë@÷Ä'¯(@÷Ä @÷«ˇÄ…«ˇÄ…Ä…Ä…Ä…Ä…įÄ˙1ÔD˙àà˙į˘Ô@˘ÄÄ˙+ĸ8≥b›å`˝ì;¿ˆ≈ò„Ïc¸‰òôÿΔ˚-ĸ$ƒíìíê˝$îë% ˆ&$îòDîIJ$§àâ)˚,ĸ$ÑíÚû`˝$ìë<¿ˆ$$óêDÛ˝$úàâÊ˚-ĸ$ÑíÇê˝$îë  ˆ$$îDÄIJ$§àâ˚-ĸ$Ñíííê˝$îë% ˆ$$îêDîIJ$§àâ)˚+ĸ8Ébå`˝së    ¿ˆƒ„$c¸„úàHΔ˚ĸ ˘ÒĢ ˜ĸ ˘ÒĢ ˜Ä…Ģˇ¿¸ˇ¯Ô˛˚ˇ¿˘"Ä˙>¸>¿ÒÄ˝>˘%Ä˙‡˛¿<Ò˝‡˙'Ä˙p˛8˛˛ÚÄ¿˛p˛8˙'Ä˚IJ˛p˝‡Û˝8IJ˙$Ä˚ ¸¿Ä˝Û`˝ ¸¿˚$Ä˚0¸0¸ÙÄ˝Ä0¸0˚"Ä˚`¸ ¸Ù˚¿`¸˚#ĸĸ0˚¿ı ˚0ĸ˚!ĸ˚@˚ ı˚˚˚ Ä¸ ˙¡Ä˚ı`˚ ˙¿¸ĸ˙c˙ ı¿˚˙`¸ĸ ˙˙ˆ˘†˙¸ĸ@˙˙ˆ˘@˙¸ĸÄ˙˘Ä˜˘†˙¸Ä˝˘"˘@˜˙˙¸Ä˝˘A˘ ˜˙˙¸ Ä˝˘ÄÄ˙˜ ˙˘Ä˝!Ä˝˙@˙˜@˙˘@˝!Ä˝˙`˙ ˜¿˙˘`˝!Ä˝˙ ˙˜Ä˙˘ ˝"Ä˝ ˙˙¯˘ Ä˙˝"Ä˝@˙˙¯˘@@˙˝"Ä˝@˙˙¯˘@@˙˝"Ä˝Ä˙˘Ä˘˘Ä ˙˝$IJÄ˙0˘¿˘ ˙Ä0˙˝#IJ˘ ˘@˘˙˙˝#IJ˘@˘ ˘˙˙˝#IJ˘@˘ ˘˙˙˝$IJ˘ÄÄ˙˘ ˙˘Ä˛$IJ˘ÄÄ˙˘ ˙˘Ä˛$IJ˘ÄÄ˙˘ ˙˘Ä˛%IJ˙˛@˙˘@˙˘@˛%IJ˙˛@˙˘@˙˘@˛%IJ˙˛`˙ ˘¿˙˘`˛%IJ˙˛ ˙˘Ä˙˘ ˛%IJ˙˛ ˙˘Ä˙˘ ˛%IJ˙˛ ˙˘Ä˙˘ ˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙ˇ‡˙˙˘ ˛Ä˙˛&IJ ˙˙™ø˙˙˘ ˛Ä˙˛&IJ ˙˛U˙˙˘ ˛Ä˙˛%IJ˙:˛™º˙˘Ä˙˘ ˛'IJ˚◊˛UcÄ˚˘Ä˙˘ ˛&IJ˚˝™†`˚˘Ä˙˘ ˛'IJ˚W˛U`˚ ˘¿˙˘`˛'IJ˚:´˛™¿ ˚˘@˙˘@˛&IJ˚’˝U@˚˘@˙˘@˛'IJ¸¸™Äĸ˘ ˙˘Ä˛)IJ¸UU’UUÄ`¸˘ ˙˘Ä˛'IJ¸¸™Ä0¸˘ ˙˘Ä˛(IJ¸˝Uu¿¸ ˘˙˙˝)IJ¸*™™Í™ªÄ¸ ˘˙˙˝(IJ¸˛UuU_¸@˘˙˙˝)IJÄ˝˛™∫™Æ¸¿˘ ˙Ä0˙˝(ĽIJ¸U_˛Ä˝Ä˘˘Ä ˙˝(Ä˝@˛¸™πÄ@˛¯˘@@˙˝*Ä˝@˛˛U]Ux¿ ˛¯˘@@˙˝*Ä˝ ˛˛™Æ™∞˛0˛¯˘ Ä˙˝)Ä˝˛˛UWU`˛˛˜Ä˙˘ ˝)Ä˝˛˛™´™‡˛˛ ˜¿˙˘`˝'Ä˝˛5¸U@˛˛˜@˙˘@˝'Ä˝˛*¸™Ä˛˛˜ ˙˘Ä˝#Ä˝˛˚U˝˛ ˜˙˙¸%Ä˝˛Í¸™˝˛@˜˙˙¸%ĸÄ’˝UT˝˛Ä˜˘†˙¸"ĸ@¸™®¸Äˆ˘@˙¸"ĸ ¸UT¸Äˆ˘†˙¸#ĸ¸™„¸@ ı¿˚˙`¸$ĸ ¸U¡Ä˝@ı`˚ ˙¿¸%ĸ˝™´@˝@ ı˚˚˚&ĸÄ˝UV0˝ ¿ı ˚0ĸ˚$Ä˚`˝™∏ ˝ Ù˚¿`¸˚&Ä˚0˝Up˝0ÙÄ˝Ä0¸0˚&Ä˚
  9981. ˝™¿IJÛ`˝ ¸¿˚(Ä˚ç˛UW˛p˛‡Û˝8IJ˙'Ä˙z˛™∏˛˛ÚÄ¿˛p˛8˙%Ä˙˛U‡˛¿<Ò˝‡˙"Ä˙˙™æ¸>»ÒÄ˝>˘Ä˙ˇ¿¸ˇ¯˛˚ˇ¿˘Ä˙ˆ›Ä˙ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ ˆ0›Ä˙ˆ ›Ä˙ˆ ›Ä˙ˆ@›Ä˙ˆ@›Ä˙ˆ@›Ä˙ˆÄ›Ä˙ˆÄ›Ä˘Ä¯‹Ģ¿¯‹Ģ@¯‹Ģ ¯‹Ģ ¯‹Ģ¯‹Ģ¯‹Ģ ¯0‹Ģ¯ ‹Ģ¯@‹Ģ¯Ä‹įÄ˙€į@˙€į ˙€į˙€į ˙0€į˙`€į˙Ä€Ę¿¸⁄Ę0¸ ⁄ʸ⁄ʸ`⁄Ę¿˛Ä⁄Ĉ8˛ŸĈ˛Ÿ Äı¯ÿ Äıˇ‡ÿÄ…Ä…Ä…į˛Äà⁄į˛ÄÄ⁄į«≥Ã[ÿΔ€Ģ    $§ƒ§ía$â)€Ģ    úɆûAâ€Ģ    §Ñ†êAâ€Ģ    $§Ñ§íA$â)€įƒúÉòLAHΔ€Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…ÄÊ˙ÄÄŸÄ˘ÅÄÄŸÄ>fl˛√èÄŸÄffqò˛Á˛ôÄŸÄΔffaò˛}˛ôÄŸÄffa¯˛9˛ôÄŸÄffaIJ˛ôÄŸÄffaà˛˛ôÄŸÄ>>`˛èÄŸ
  9982. IJÕ
  9983. IJFÕ
  9984. IJ<ÕÄ…Ä˙ˇ˚ˇ¸⁄ġ‡@Ä@ˇˇ⁄ġ‡@Ä@ˇˇ⁄Äœ‡CÄ¡A‡¯?⁄*Äè·@`Å¡C0˘ˇÑb˛@˜ ÄÙ(Äœ‡@¿Ç¡C0˘ˇÑb˛˛ˆ Û2,Äœ‡A‡Ñ¡C0˘ˇÑR8\·«.√é0·¿8π¿xπ«áqáı2,Äœ‡0@0à¡C¯ÑRDô"a"0DD D¬ D¬$Hò àëı2,Äœ‡`@0è·C0˘ˇÑJD@Ú D<Ç DÇ$Hê àêı2,Äœ‡¿@0Ä¡C0˘ˇÑJD"A CÑ¿DɇDÇ$Oê èéı2,Äœ·ÄB0Ä¡C0˘ˇÑFD"A @D DÇDÇ$H àı2,Äœ·¯A‡Ä¡C0¯?FDë"A" DD DÇ DÇ$Hê àëı3-ġ‡@Ä@ˇˇB8@Ò¡é CÉ·¿<Å¿xÅ«áá ˆÄˇ‡@Ä@ˇˇÓ@ġ‡@Ä@ˇˇÓ@Ä˙ˇ˚ˇ¸⁄Ä…Ä…Ä…Ä…į˚ˇ¸⁄į@ġ˛⁄į@ġ˛⁄įA‡á¡¸˛⁄&į    C0ܸ˛Ñ<˚B˚@˛@ı$į    C0ܸ˛ÑB˚˙@˛˛Ù-į#C0ܸ˛Ñ@8≥‰G«p‡\‡Xqsá8ª8√áˆ.į$CáŸ˛Ñ@DÃë$HàBâ"a"dâÑHàD¡DHĘ-į#C0ܸ˛Ñ<Dàë$GàBâA Dy»DÅDˆ-į#C0ܸ˛ÑDàü$HàB¯‡"A DâH|ÅDˆ.į$C0ܸ˛ÑDàê$HàBÄ"A DâH@ÅDĘ.į$C0ᡸ˛BDàë$»àBâ"A"DâHàDÅDHĘ.į$@ġ˛<8àé„GàAàp‡@‡Dy«8Å Cá˜į@ġ˛˚ ·į@ġ˛˚ ·į˚ˇ¸⁄Ä…Ä… Ä‹ˇÄ…į˚ˇ¸⁄į@ġ¸⁄į@ġ¸⁄įA‡á¡¸⁄"į    C0ÜÊ|<˚B˙@¸@٠į    C0ÜÊ|B˚˘@¸Û,į"C0ÜÊ|@8≥‰G«p‡\‡,8‡<\„√ã∏√áı-į#CáÅÊ|@DÃë$HàBâ"a2D@"a$LDHĈ,į"C0ÜÊ|<Dàë$GàBâA"D@"A$HDHı,į"C0ÜÊ|Dàü$HàB¯‡"A"D@"A'»G«ı-į#C0ÜÊ|Dàê$HàBÄ"A"D@"A$DĈ-į#C0á¡¸BDàë$»àBâ"A"D@"A$HDHĈ-į#@ġ¸<8àé„GàAàp‡@‡"80<@„√à Cáˆį@ġ¸˚ ı į@ġ¸˚ ı į˚ˇ¸⁄Ä…Ä…Ä…Ä…Ä…Ä…Ä…«ˇ»ˇˇHd@ˇ ˇˇˇˇ@
  9985. ˇ·ˇ‚7^
  9986. 4H\, Palatino&e.3+ä"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@ä    Processes4⁄ä˙(‡ä Quitting an ¿). Application
  9987. (‡175
  9988. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9989. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9990.  
  9991.  
  9992.  
  9993.  
  9994.  
  9995. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  9996. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  9997. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  9998.  
  9999.  
  10000.  
  10001.  
  10002.  
  10003. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜¸˛ˇˇ    ˇ¸ˇ ˇˇ˛ˇ˙ˇ˛¸ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  10004. 454+?òÄ
  10005. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10006. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10007.  
  10008.  
  10009.  
  10010.  
  10011.  
  10012. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˜˛˙ˇ˚ˇˇ˚ˇˇ˙ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  10013. ˛ˇ˛ˇˇ
  10014. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  10015. ˛ˇ˛ˇˇ
  10016. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  10017. ˛ˇˇˇˇ
  10018. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  10019. ˛ˇˇˇˇ
  10020. ˛ˇˇˇˇ    ˝ˇˇˇ    ˛ˇˇ˛
  10021. ˛ˇˇˇˇ
  10022. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  10023. ˛ˇˇˇˇ
  10024. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  10025. ˛ˇˇˇˇ
  10026. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿
  10027. gHw4gHw"hH]
  10028. ˇ·ˇ‚7^    °dONLNd\äg¥(dä
  10029. Figure 9-3°dONLNd \Ãg“)BA0°dONLNd \“g⁄) VÄ°dONLNd\⁄gp)%enn diagram after automatic adjusting
  10030. _Hz4`Hz
  10031. äHí4ãHí åHå
  10032. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd4wHäû(ÖH Quitting an §»°dONLNd@wûäÛ)V ApplicationˇˇˇˇˇˇU˛(Ö9
  10033. °dONLNdLõäßÅ(§ä9Eventually the user will quit your application, usually bß@°dONLNdÖõÅߪ)˜ y choosing Qƒ¿°dONLNdëõªß√):ui¥@°dONLNdìõƒß—)    t frèÄ°dONLNdóõ—ßÂ)om tõ`°dONLNdõõÂß)he File °dONLNd£®ä¥∫(±ä
  10034. menu (or b9¿°dONLNd≠®ª¥Õ)1y pr°dONLNd±®Õ¥Ó)essing t^‡°dONLNdπ®Ó¥Û)!h0@°dONLNd∫®Ù¥)    e usual kº†°dONLNd√®¥9)'eyboar◊Ä°dONLNd…®9¥∑)d equivalent, Command-Q). x`°dONLNd„®∏¥)At that time, you °dONLNdıµä¡À(æäshould close alÃ@°dONLNdµÀ¡ÿ)Al wㆰdONLNdµŸ¡)    indows, r/†°dONLNdµ¡ä)*elease any memory you still arÄ°dONLNd.µä¡)áe holding, and exit your main .°dONLNdL¬äŒæ(Àä event loop. °dONLNdX¬æŒÓ)4 Listing 9-4°dONLNdc¬ÓŒ )0  shows the ,
  10035. Courier°dONLNdn¬ ŒD)2DoQuit°dONLNdt¬DŒJ)$ rR`°dONLNdv¬JŒÆ)outine called by the V6†°dONLNdå¬≠Œ˙)cenn Diagrammer .°dONLNdõœä€¯(ÿäapplication when the usee`°dONLNd≥œ˘€,)o r chooses Q§ °dONLNdæœ,€4)3ui솰dONLNd¿œ5€>)    t f©‡°dONLNd√œ>€A)    rn‡°dONLNdƒœB€ë)om the File menu.
  10036. ˛H4ˇH"ˇH_
  10037. ˇ·ˇ‚7^    °dONLNd÷Ùäˇ∂(¸ä Listing 9-4°dONLNd‚ÙŒˇ.)DQuitting your application
  10038. .°dONLNd¸HÆ(HPROCEDURE DoQuit;°dONLNdZ(l+VAR°dONLNd*l6¢+    myWindow:°dONLNd"*¥6)H
  10039. WindowPtr;°dONLNd-8HDf(AHBEGIN°dONLNd4FZRÍ+myWindow := FrontWindow;°dONLNdXF2Rh)ÿ    {close al°dONLNdaFhRz)6l w°dONLNddFzR§)indows}°dONLNdmTZ`Í(]ZWHILE myWindow <> NIL DO°dONLNdàblnä+BEGIN°dONLNdëp~|+DoUpdate(myWindow);°dONLNdÆp2|¬)¥{force redrawing window}°dONLNd ~~ä(á~DoCloseWindow(myWindow);°dONLNdÊå~ò*myWindow := FrontWindow;
  10040. wÖFòÄ:7œHHKÿ‡ˇˇˇˇˇˇ7œyãC∏»ˇ¸Ä…Ä…Ä…ø˜Ôˇ¸ÛÏˇ˜Ä@Ì`˛|`¸Îø@'Ôˇ¸`˛f˚Ïˇ˜Ä@ Ó c««¿fc√ÊœÎø@'Ôˇ¸˛f    `fdfgôòÏˇ˜Ä@ Ó˛f`fcÊfôòÎø@'Ôˇ¸gÊf`˝fôòÏˇ˜Ä@ Óff`˝fôòÎø@'Ôˇ¸F&f`˝fôòÏˇ˜Ä_‡Ó ÉΔf`|c„ÊôòÎø@Ôˇ¸˘`¸Ïˇ˜ ÄÂ`Á Ä¿ÁÄ…«ˇÄ @÷Ä Ò@÷Ä <@÷ÄÄ 9√8@÷Ä0Ä  Y    àp@÷Ä0Ä @±`h‡@÷Ä Åa#êhA¿@÷Ä!¡N~h„Ä@÷ÄÄ"Åhw@÷ÅÜÄ'˚!Äh>@÷ÅÜÄ$@~h@÷Ä$ Ë@÷Ä'¯(@÷Ä @÷«ˇÄ…«ˇÄ…Ä…Ä…Ä…Ä…įÄ˙1ÔD˙àà˙į˘Ô@˘ÄÄ˙+ĸ8≥b›å`˝ì;¿ˆ≈ò„Ïc¸‰òôÿΔ˚-ĸ$ƒíìíê˝$îë% ˆ&$îòDîIJ$§àâ)˚,ĸ$ÑíÚû`˝$ìë<¿ˆ$$óêDÛ˝$úàâÊ˚-ĸ$ÑíÇê˝$îë  ˆ$$îDÄIJ$§àâ˚-ĸ$Ñíííê˝$îë% ˆ$$îêDîIJ$§àâ)˚+ĸ8Ébå`˝së    ¿ˆƒ„$c¸„úàHΔ˚ĸ ˘ÒĢ ˜ĸ ˘ÒĢ ˜Ä…Ģˇ¿¸ˇ¯Ô˛˚ˇ¿˘"Ä˙>¸>¿ÒÄ˝>˘%Ä˙‡˛¿<Ò˝‡˙'Ä˙p˛8˛˛ÚÄ¿˛p˛8˙'Ä˚IJ˛p˝‡Û˝8IJ˙$Ä˚ ¸¿Ä˝Û`˝ ¸¿˚$Ä˚0¸0¸ÙÄ˝Ä0¸0˚"Ä˚`¸ ¸Ù˚¿`¸˚#ĸĸ0˚¿ı ˚0ĸ˚!ĸ˚@˚ ı˚˚˚ Ä¸ ˙¡Ä˚ı`˚ ˙¿¸ĸ˙c˙ ı¿˚˙`¸ĸ ˙˙ˆ˘†˙¸ĸ@˙˙ˆ˘@˙¸ĸÄ˙˘Ä˜˘†˙¸Ä˝˘"˘@˜˙˙¸Ä˝˘A˘ ˜˙˙¸ Ä˝˘ÄÄ˙˜ ˙˘Ä˝!Ä˝˙@˙˜@˙˘@˝!Ä˝˙`˙ ˜¿˙˘`˝!Ä˝˙ ˙˜Ä˙˘ ˝"Ä˝ ˙˙¯˘ Ä˙˝"Ä˝@˙˙¯˘@@˙˝"Ä˝@˙˙¯˘@@˙˝"Ä˝Ä˙˘Ä˘˘Ä ˙˝$IJÄ˙0˘¿˘ ˙Ä0˙˝#IJ˘ ˘@˘˙˙˝#IJ˘@˘ ˘˙˙˝#IJ˘@˘ ˘˙˙˝$IJ˘ÄÄ˙˘ ˙˘Ä˛$IJ˘ÄÄ˙˘ ˙˘Ä˛$IJ˘ÄÄ˙˘ ˙˘Ä˛%IJ˙˛@˙˘@˙˘@˛%IJ˙˛@˙˘@˙˘@˛%IJ˙˛`˙ ˘¿˙˘`˛%IJ˙˛ ˙˘Ä˙˘ ˛%IJ˙˛ ˙˘Ä˙˘ ˛%IJ˙˛ ˙˘Ä˙˘ ˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ@˙˛˙˙˘@˛@˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙˛˙˙˘ ˛Ä˙˛&IJ ˙ˇ‡˙˙˘ ˛Ä˙˛&IJ ˙˙™ø˙˙˘ ˛Ä˙˛&IJ ˙˛U˙˙˘ ˛Ä˙˛%IJ˙:˛™º˙˘Ä˙˘ ˛'IJ˚◊˛UcÄ˚˘Ä˙˘ ˛&IJ˚˝™†`˚˘Ä˙˘ ˛'IJ˚W˛U`˚ ˘¿˙˘`˛'IJ˚:´˛™¿ ˚˘@˙˘@˛&IJ˚’˝U@˚˘@˙˘@˛'IJ¸¸™Äĸ˘ ˙˘Ä˛)IJ¸UU’UUÄ`¸˘ ˙˘Ä˛'IJ¸¸™Ä0¸˘ ˙˘Ä˛'IJ¸¸U¸ ˘˙˙˝)IJ¸*™™Í™´¸ ˘˙˙˝(IJ¸˛UuUV¸@˘˙˙˝)IJÄ˝˛™∫™Æ¸¿˘ ˙Ä0˙˝(ĽIJ¸UT˛Ä˝Ä˘˘Ä ˙˝(Ä˝@˛¸™®˛@˛¯˘@@˙˝*Ä˝@˛˛U]UX˛ ˛¯˘@@˙˝*Ä˝ ˛˛™Æ™∞˛0˛¯˘ Ä˙˝)Ä˝˛˛UWU`˛˛˜Ä˙˘ ˝)Ä˝˛˛™´™‡0¿˛ ˜¿˙˘`˝'Ä˝˛5¸U@IJ˜@˙˘@˝'Ä˝˛*¸™Ä˛˜ ˙˘Ä˝%Ä˝˛˚U˛ ˜˙˙¸'Ä˝˛Í¸™˛@˜˙˙¸&ĸÄ’˝UTÄ˛Ä˜˘†˙¸$ĸ@¸™®0¿Äˆ˘@˙¸"ĸ ¸UT¸Äˆ˘†˙¸#ĸ¸™„¸@ ı¿˚˙`¸$ĸ ¸U¡Ä˝@ı`˚ ˙¿¸%ĸ˝™´@˝@ ı˚˚˚&ĸÄ˝UV0˝ ¿ı ˚0ĸ˚$Ä˚`˝™∏ ˝ Ù˚¿`¸˚&Ä˚0˝Up˝0ÙÄ˝Ä0¸0˚&Ä˚
  10041. ˝™¿IJÛ`˝ ¸¿˚(Ä˚ç˛UW˛p˛‡Û˝8IJ˙'Ä˙z˛™∏˛˛ÚÄ¿˛p˛8˙%Ä˙˛U‡˛¿<Ò˝‡˙"Ä˙˙™æ¸>»ÒÄ˝>˘Ä˙ˇ¿¸ˇ¯˛˚ˇ¿˘Ä˙ˆ›Ä˙ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ˆ›Ä˙ ˆ0›Ä˙ˆ ›Ä˙ˆ ›Ä˙ˆ@›Ä˙ˆ@›Ä˙ˆ@›Ä˙ˆÄ›Ä˙ˆÄ›Ä˘Ä¯‹Ģ¿¯‹Ģ@¯‹Ģ ¯‹Ģ ¯‹Ģ¯‹Ģ¯‹Ģ ¯0‹Ģ¯ ‹Ģ¯@‹Ģ¯Ä‹įÄ˙€į@˙€į ˙€į˙€į ˙0€į˙`€į˙Ä€Ę¿¸⁄Ę0¸ ⁄ʸ⁄ʸ`⁄Ę¿˛Ä⁄Ĉ8˛ŸĈ˛Ÿ Äı¯ÿ Äıˇ‡ÿÄ…Ä…Ä…į˛Äà⁄į˛ÄÄ⁄į«≥Ã[ÿΔ€Ģ    $§ƒ§ía$â)€Ģ    úɆûAâ€Ģ    §Ñ†êAâ€Ģ    $§Ñ§íA$â)€įƒúÉòLAHΔ€Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…Ä…ÄÊ˙ÄÄŸÄ˘ÅÄÄŸÄ>fl˛√èÄŸÄffqò˛Á˛ôÄŸÄΔffaò˛}˛ôÄŸÄffa¯˛9˛ôÄŸÄffaIJ˛ôÄŸÄffaà˛˛ôÄŸÄ>>`˛èÄŸ
  10042. IJÕ
  10043. IJFÕ
  10044. IJ<ÕÄ…Ä˙ˇ˚ˇ¸⁄ġ‡@Ä@ˇˇ⁄ġ‡@Ä@ˇˇ⁄Äœ‡CÄ¡A‡¯?⁄*Äè·@`Å¡C0˘ˇÑb˛@˜ ÄÙ(Äœ‡@¿Ç¡C0˘ˇÑb˛˛ˆ Û2,Äœ‡A‡Ñ¡C0˘ˇÑR8\·«.√é0·¿8π¿xπ«áqáı2,Äœ‡0@0à¡C¯ÑRDô"a"0DD D¬ D¬$Hò àëı2,Äœ‡`@0è·C0˘ˇÑJD@Ú D<Ç DÇ$Hê àêı2,Äœ‡¿@0Ä¡C0˘ˇÑJD"A CÑ¿DɇDÇ$Oê èéı2,Äœ·ÄB0Ä¡C0˘ˇÑFD"A @D DÇDÇ$H àı2,Äœ·¯A‡Ä¡C0¯?FDë"A" DD DÇ DÇ$Hê àëı3-ġ‡@Ä@ˇˇB8@Ò¡é CÉ·¿<Å¿xÅ«áá ˆÄˇ‡@Ä@ˇˇÓ@ġ‡@Ä@ˇˇÓ@Ä˙ˇ˚ˇ¸⁄Ä…Ä…Ä…Ä…į˚ˇ¸⁄į@ġ˛⁄į@ġ˛⁄įA‡á¡¸˛⁄&į    C0ܸ˛Ñ<˚B˚@˛@ı$į    C0ܸ˛ÑB˚˙@˛˛Ù-į#C0ܸ˛Ñ@8≥‰G«p‡\‡Xqsá8ª8√áˆ.į$CáŸ˛Ñ@DÃë$HàBâ"a"dâÑHàD¡DHĘ-į#C0ܸ˛Ñ<Dàë$GàBâA Dy»DÅDˆ-į#C0ܸ˛ÑDàü$HàB¯‡"A DâH|ÅDˆ.į$C0ܸ˛ÑDàê$HàBÄ"A DâH@ÅDĘ.į$C0ᡸ˛BDàë$»àBâ"A"DâHàDÅDHĘ.į$@ġ˛<8àé„GàAàp‡@‡Dy«8Å Cá˜į@ġ˛˚ ·į@ġ˛˚ ·į˚ˇ¸⁄Ä…Ä… Ä‹ˇÄ…į˚ˇ¸⁄į@ġ¸⁄į@ġ¸⁄įA‡á¡¸⁄"į    C0ÜÊ|<˚B˙@¸@٠į    C0ÜÊ|B˚˘@¸Û,į"C0ÜÊ|@8≥‰G«p‡\‡,8‡<\„√ã∏√áı-į#CáÅÊ|@DÃë$HàBâ"a2D@"a$LDHĈ,į"C0ÜÊ|<Dàë$GàBâA"D@"A$HDHı,į"C0ÜÊ|Dàü$HàB¯‡"A"D@"A'»G«ı-į#C0ÜÊ|Dàê$HàBÄ"A"D@"A$DĈ-į#C0á¡¸BDàë$»àBâ"A"D@"A$HDHĈ-į#@ġ¸<8àé„GàAàp‡@‡"80<@„√à Cáˆį@ġ¸˚ ı į@ġ¸˚ ı į˚ˇ¸⁄Ä…Ä…Ä…Ä…Ä…Ä…Ä…«ˇ»ˇˇÙ@ˇ ˇˇˇˇ@
  10045. ˇ·ˇ‚7^
  10046. 4*\¯, Palatino&e.3+l"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@l    Processes4⁄*˙¯
  10047. (‡*176    )BHandling Errors4^*¿¯,
  10048. Courier
  10049. .°dONLNd\Nhf(eNEND;°dONLNdj<vê(s<gDone := TRUE;°dONLNd jv‡)ÿ"{set flag to exit main event loop}°dONLNdCx*ÑB(Å*END;°dONLNdHêlúÄ+BThe °dONLNdLêÄú§)DoQuit°dONLNdRê§ú¶)$ °dONLNdSê¶ú∞)prR`°dONLNdUê∞úÕ)
  10050. ocedur$¿°dONLNd[êÕú‘)e $¿°dONLNd]ê‘ú)simply closes al$¿°dONLNdmêú*)Hl w$¿°dONLNdpê*ú¯)-indows belonging to the application and then ˇ˛ÓÓ°dONLNdùùl© (¶l%sets the application global variable ˇ¸Ã *¶°dONLNd¬ù©+)°gDoneˇ˛ÓÓ*¶°dONLNd«ù+©ë) to indicate that the use’L°dONLNd‡ùë©Æ)fr has fi≥(°dONLNdËùØ©Í)nished using të°dONLNdˆùΩ˜)<he .°dONLNd˘™l∂1(≥l.application. Recall that the main event loop ('`°dONLNd'™2∂à)ΔListing 4-4 on page È`°dONLNd;™à∂í)V77È`°dONLNd=™í∂‰)
  10051. ) terminates when .°dONLNdO∑l√ä(¿lgDone°dONLNdT∑ä√ñ) is °dONLNdX∑ñ√Æ) TRUE°dONLNd\∑Æ√±).
  10052. —*fl¯4“*fl¯    .°dONLNd^–l€(ÿlNote
  10053. ˇ·ˇ‚7^
  10054. °dONLNdc›lÈâ*The Prä`°dONLNdi›âÈä)9ocess Manager automatically deallocates your application °dONLNd¢Èlı≈(Úlpartition and closes ê°dONLNd∑È≈ı⁄)Yall w7¿°dONLNdºÈ€ıô))indows when your application terminates. `°dONLNdÂÈôıØ)æAs a .°dONLNdÍılp(˛lrR`°dONLNdÎıp•) esult, the V6†°dONLNd˜ı§é)41enn Diagrammer application could simply have set 6†°dONLNd(ıé¨)ÍgDone6†°dONLNd-ı¨Æ) °dONLNd.lw(
  10055. lto °dONLNd1wè) TRUE°dONLNd5è†) in rR`°dONLNd:†Q)$esponse to the Quit command. Howeverï°dONLNd^PU)∞, ï°dONLNd`Uy)DoQuitï°dONLNdfy≠)$ illustrates °dONLNdslØ(lhow to close al°dONLNdÇØΩ)Cl w°dONLNdÖΩG)indows because your version of °dONLNd§Gï)äDoCloseWindow°dONLNd±ïó)N .°dONLNd≤l%∂("lmight need to pr^†°dONLNd¬∂%k)J(ompt the user to save any unsaved data iw@°dONLNdÍk%y)µn d‰`°dONLNdÌy%¢)ocument °dONLNdı%l1ï(.lwindows∂°dONLNd¸%ï1©)) curre°dONLNd%™1)ently on the desktop…†°dONLNd%1)Z.,Zapf DingbatsI†°dONLNd( 0)u
  10056. 7*R¯48*R¯
  10057. b*j¯4c*j¯ d*d˛
  10058. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNd!O*bâ(]* Handling Err]3°dONLNd-Oäbü)`orsˇˇˇˇˇˇU˛(]9
  10059. °dONLNd1sl§(|l OccasionallyÏ¿°dONLNd=s£Ú)7, a system softwar:†°dONLNdOsÛ˛)Pe rI@°dONLNdRs˛Î) 5outine might be unable to perform the service you’ve .°dONLNdáÄlåp(âlrR`°dONLNdàÄpå±)equested of it. $¿°dONLNdòıå∏)AY9¿°dONLNdôÄ∑å3)ou might, for instance, pass 9¿°dONLNd∂Ä3åu)| GetResource9¿°dONLNd¡ÄuåÉ)B a r  °dONLNd≈ÄÉåö)esourfiÄ°dONLNd Äôå¬)    ce specififiÄ°dONLNd‘Ĭå˜)) cation that .°dONLNd‡çlôâ(ñldoesn’∞Ä°dONLNdÊçâôÃ)t apply to any rL°dONLNdˆçÕôÂ)Desourî@°dONLNd˚çÂôG)ce in any of the open rf¿°dONLNdçGô_)besourØ°dONLNdç_ôp)ce fiu†°dONLNdçqôç)les. Oru¿°dONLNd#ççôÏ), the user might have °dONLNd9öl¶7(£l)opened so many document windows that therGÄ°dONLNdbö8¶◊)Ã$e simply isn’t enough space in your °dONLNdÜßl≥Ï(∞lXapplication’s heap to open another one. In these situations, you need to determine that °dONLNdfi¥l¿Ü*an errR†°dONLNd‰¥Ü¿ø)or has occurr›‡°dONLNdÒ¥ø¿„)9ed and ru`°dONLNd˘¥‰¿E)%eact to it in some appr'`°dONLNd¥F¿ä)bopriate manner{†°dONLNd¥â¿ã)C.°dONLNd Δl“w(œlThr °dONLNd"Δx“¬) e system softwar↰dONLNd2Δ¬“…)Je ”@°dONLNd4Δ…“U)has several ways of informing y¡`°dONLNdSΔV“™)çour application tha˚@°dONLNdfΔ™“¥)Tt aΩ†°dONLNdiΔµ“ª)  r†°dONLNdkΔº“Ê)    equested °dONLNdt”lflä(‹lserviceA¿°dONLNd{”ãflÃ) is not possibleÑ°dONLNdã”Ãfl)A. Many functions rj°dONLNdù”flB)Q    eturn a r °dONLNd¶”CflÁ)&&esult code that indicates whether the °dONLNdÇlÏ˘(Èlfunction completed successfully+@°dONLNd·˘ÏZ)ç, and if not, what the rΰdONLNd‡ZÏù)aeason for failurÂ@°dONLNd‡ùÏ◊)Ce was. These .°dONLNd Ìl˘ö(ˆl functions rR`°dONLNd+Ìö˘ø).    eturn a r$¿°dONLNd4Ìø˘˘)%esult of type $¿°dONLNdBÌ˘˘):OSErr$¿°dONLNdGÌ˘.). Her˜ °dONLNdLÌ-˘j)e’s an exampl˜ °dONLNdYÌj˘r)=e:°dONLNd\l⁄(l=myResult := FindFolder(kOnSystemDisk, kPreferencesFolderType,°dONLNd¢¸Ï+ê( kDontCreateFolder, myVRefNum, myDirID);°dONLNdÀ l,¸()lIF myResult = noErr THEN°dONLNdÂ.~:ê+...°dONLNdÈ<lHÑ(ElELSE°dONLNdÔJ~Vñ+...;.°dONLNdÙblnå(klOther rp‡°dONLNd˚bån·) outines—mainly pr<†°dONLNd b‚n)Vocedur”‡°dONLNdbnb)es and functions that r.°dONLNd)bcn¿)ceturn other types of r≥@°dONLNd?b¿n„)]esults—°dONLNdFol{â(xldon’t r1@°dONLNdMoä{Ø)    eturn a rÕ`°dONLNdVoØ{Í)%esult code dirö °dONLNddoÎ{ˇ)<ectlyr °dONLNdioˇ{
  10060. ). T߇°dONLNdlo    {)
  10061. o fi™ °dONLNdpo{°)nd out whether these kinds of r,@°dONLNdèo¢{÷)ã outines wer@°dONLNdöo÷{›)4e °dONLNdú|làf(Öl9successful, you need to call an additional system softwar…¿°dONLNd’|fàq)˙e rÿ`°dONLNdÿ|qàË) outine. For example, some °dONLNdÚâlïã(ílResourv@°dONLNd¯âãï )ce Manager pr    @°dONLNdâÀïÈ)@ocedur†Ä°dONLNd âÈï) es don’t dir‹Ä°dONLNdâïu)2ectly indicate if the rÈ°dONLNd.âuïç)Zesour1@°dONLNd3âéï⁄)ce operation was .°dONLNdDñl¢Ω(ülsuccessful or not. Tï°dONLNdXñº¢ )Po fiï°dONLNd\ñ ¢J)nd that out, you can call the ï°dONLNdzñJ¢z)ÄResErrorï°dONLNdÇñz¢†)0     functionï°dONLNdãñ†¢π)&. The °dONLNdë£lØÆ(¨l DoSavePrefs°dONLNdú£ÆØ¥)B rR`°dONLNdû£¥ØÂ) outine (def"‡°dONLNd©£ÂØ)1ined in "‡°dONLNd±£Ø\)!Listing 3-6 on page "‡°dONLNd≈£\Øf)V66"‡°dONLNd«£fØÚ)
  10062. !) uses this strategy to update a .°dONLNdË∞lºu(πlprG °dONLNdÍ∞vºÜ)
  10063. eferÛ@°dONLNdÓ∞ܺ§)ences rJ °dONLNdı∞•ºΩ)esourí`°dONLNd˙∞Ωº»)ce:ˇ:j@ˇ ˇˇˇˇ@
  10064. ˇ·ˇ‚7^
  10065. 4H\, Palatino&e.3+ä"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@ä    Processes4⁄ä˙(‡äHandling Errors
  10066. (‡177
  10067. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10068. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10069.  
  10070.  
  10071.  
  10072.  
  10073.  
  10074. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  10075. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10076. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10077.  
  10078.  
  10079.  
  10080.  
  10081.  
  10082. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜¸˛ˇˇ    ˇ¸ˇ ˇˇ˛ˇ˙ˇ˛¸ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  10083. 454+?òÄ
  10084. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10085. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10086.  
  10087.  
  10088.  
  10089.  
  10090.  
  10091. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˜˛˙ˇ˚ˇˇ˚ˇˇ˙ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  10092. ˛ˇ˛ˇˇ
  10093. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  10094. ˛ˇ˛ˇˇ
  10095. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  10096. ˛ˇˇˇˇ
  10097. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  10098. ˛ˇˇˇˇ
  10099. ˛ˇˇˇˇ    ˝ˇˇˇ    ˛ˇˇ˛
  10100. ˛ˇˇˇˇ
  10101. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  10102. ˛ˇˇˇˇ
  10103. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  10104. ˛ˇˇˇˇ
  10105. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  10106. Courier.°dONLNd\äh(eäRmveResource(myHandle);°dONLNdjäv*IF ResError = noErr THEN°dONLNd2xúѯ+:AddResource(myPrefData, kPrefResType, kPrefResID, myName);°dONLNdmÜäí(èäIF ResError = noErr THEN°dONLNdáîú†8+WriteResource(myPrefData);°dONLNd¢¨ä∏∏(µä    Similarlyd@°dONLNd´¨∑∏Ï)- , the Resour6†°dONLNd∑¨Ï∏%)5 ce Manager r    °dONLNd√¨%∏C)9outine     °dONLNd ¨C∏ã) Get1Resource    °dONLNd÷¨ã∏ë)H r€`°dONLNdÿ¨ê∏ı)eturns a handle to the .°dONLNdÔπä≈¶(¬äspecifiÓ °dONLNdˆπ¶≈∑)ed rÄ°dONLNd˙π∏≈–)esour`¿°dONLNdˇπ–≈*)ce data. If for some r|@°dONLNdπ*≈Z)Z eason the rl °dONLNd πZ≈r)0esour¥`°dONLNd%πr≈)"ce cannot be opened, the function .°dONLNdGΔä“é(œärR`°dONLNdHΔé“)eturns a handle whose value is R`°dONLNdgΔ“-)çNILR`°dONLNdjΔ-“2). $¿°dONLNdlΔ2“9)Y9¿°dONLNdmΔ8“ç)ou can inspect the r  °dONLNdÅΔç“)Ueturned value to determine .°dONLNdú”äflÈ(‹äwhether it’s safe to prJÄ°dONLNd≥”Ífl˝)`ocee√Ä°dONLNd∑”˝fl)d..°dONLNd∫Í䈺(Ûä3myHandle := Get1Resource(kPrefResType, kPrefResID);°dONLNdÓ¯ä*IF myHandle <> NIL THEN°dONLNdú¥+...;°dONLNd ä*ë('äYï°dONLNdê*fl)ou could also call ï°dONLNd fl*)OResErrorï°dONLNd(*V)0 to determine if ï°dONLNd9V*û)G Get1Resourceï°dONLNdEû*˜)H succeeded. In other .°dONLNdZ+ä7õ(4äworÄ°dONLNd]+ú7    )ds, the following lines ar‰‡°dONLNdw+7\)le equivalent to the °dONLNdã+]7f)Upr… °dONLNdç+f7ä)    eceding ±@°dONLNdï+ã7õ)%one¡¿°dONLNdò+õ7°)s:.°dONLNdõBäNº(Kä3myHandle := Get1Resource(kPrefResType, kPrefResID);°dONLNdœPä\ *IF ResError <> noErr THEN°dONLNdÍ^új¥+...;°dONLNdÔväǢ(äThe Memory Manager prR`°dONLNdv˘Ç+)o ovides the R`°dONLNdv+Ç[)2MemErrorR`°dONLNdv[Çù)0 function, whicR`°dONLNd&vùÇÈ)Bh works much as °dONLNd6Éäèê(åäR°dONLNd7Éêè¥)esErro°dONLNd=É¥è∫)$r°dONLNd>É∫è€) does. F°dONLNdFÉ€è|)!"or Memory Manager functions that rR`°dONLNdhÉ|è˛)°eturn a value, you can either °dONLNdÜêäú¬(ôäinspect the rR`°dONLNdìê¬ú!)8eturned value or call R`°dONLNd©ê!úQ)_MemErrorR`°dONLNd±êQú)0( to determine if the function completed .°dONLNdŸùä©ø(¶ä successfullyá`°dONLNdÂùæ©¿)4.°dONLNdÁØäªõ(∏ä?This book has used a fairly simple strategy for detecting and rú@°dONLNd&Øõª˚(∏õeacting to the normal °dONLNd<ºä»∫(≈ä kinds of pr≤ °dONLNdGº∫»Ÿ)0oblemsr@°dONLNdMº⁄» ) . When calling ahÄ°dONLNd]º!»b)G function that r‡°dONLNdmºc»÷)Beturns a pointer or handle.†°dONLNdáº÷»‚)s, VK°dONLNd亷»Û) enn ˇˇ„Ç.°dONLNdé…ä’…(“ä Diagrammer ccÇ°dONLNdö… ’‡)@heckcÇ°dONLNdû…‡’È)s tG°dONLNd°…Í’≤)
  10107. .hat the value of that pointer or handle isn’t ˇˇ™ÜFñ°dONLNdœ…≥’≈)…NILˇˇ„ÇFñ°dONLNd“…≈’Á) . If it is ˇˇ™Ü‘û°dONLNd›…Á’˘)"NILˇˇ„Ç‘û°dONLNd‡…˘’), Vú`°dONLNd„…’) enn .°dONLNdÁ÷ä‚À(fläHDiagrammer usually just skips any code that uses that pointer or handle.
  10108. H˛4ÒH˛°dONLNd0Ò䢩*IMPORTÄ°dONLNd6Ò©˘π)ANT
  10109. ˇ·ˇ‚7^
  10110. °dONLNd:¸äë(äVú`°dONLNd;¸ê€)enn Diagrammer—¿°dONLNdI¸‹Ú)L’s err◊@°dONLNdO¸Ú˚)or¿°dONLNdQ¸¸¿)
  10111. .-handling strategy is far too simple for most °dONLNdä‰(äapplications, and it rj`°dONLNdï¬)[2uns afoul of good human interface principles. For .°dONLNd«ä “(äexample, if the °dONLNd◊“ &)HDoCreateWindow°dONLNdÂ& d)T function (defi°dONLNdÙd Å)>ned in °dONLNd˚Å ø)Listing 6-6 on ˇˇÓ2°dONLNd
  10112.  ä,°()äpage °dONLNd ¢,ß)1Û`°dONLNd ¶,∞)17Û`°dONLNd ∞,ï)
  10113. 5) cannot allocate the memory it needs, it exits and r¥°dONLNdG ñ,∫)Ê    eturns a ˇˇ ñ°dONLNdP ∫,Ã)$NILˇˇÓ2ë∏°dONLNdS Ã,Õ) .°dONLNdT,ä8(5äwindow pointer to the calling r °dONLNds,8\)äoutine. The net r≠†°dONLNdÑ,\8¥)Hesult is that no new °dONLNdô8äD√(Aä window is cr”†°dONLNd•8√D1)9eated, in spite of the user¿°dONLNd¿83DR)p’s desirj¿°dONLNd»8RDl)e to cr!Ä°dONLNdœ8mDñ)
  10114. eate one. )@°dONLNdŸ8ñD )) At the very .°dONLNdÂDäP¶(Mäleast, °dONLNdÏD¶P˙)DoCreateWindow°dONLNd˙D˙Pº)T* should inform the user that a new window .°dONLNd$Pä\À(Yäcould not be cr¿°dONLNd3PÃ\)Beated because suf+¿°dONLNdDP\)Mfi8Ä°dONLNdFP\≠)cient memory was not available.,Zapf Dingbats%@°dONLNdnS≥[π)îs
  10115. °dONLNdpaäm¬(jä OccasionallyÏ¿°dONLNd|a¡m()7, an application might r2‡°dONLNdîa)mw)hun into some mor[†°dONLNd§awm™)N e serious prᆰdONLNd∞a™mı)3oblem during its °dONLNd¡näzŒ(wäexecution that r@°dONLNd—nœz)Eenders further pr‘¿°dONLNd‚nz)K8ocessing impossible or undesirable. For example, if the °dONLNd{äáë(ÑäVú`°dONLNd{êáÌ)Menn Diagrammer application isn’t able to allocate enough memory for the data °dONLNdhàäîï(ëästrfi°dONLNdkàïî¨) ucturc‡°dONLNdpà≠îÍ)De it uses to maintain information about a document window’s geometry≤@°dONLNd¥àÈîˇ(ëÈ, therT†°dONLNd∫àî)e’s °dONLNdæïä°˛(ûäno point in continuing to r °dONLNdŸïˇ°)u>un, because the application won’t be able to draw anything in °dONLNd    ¢äÆˇ(´äTany document windows. In that case, the application should gracefully terminate its °dONLNd    kØ䪉*own execution. (See Ȇ°dONLNd    ؉ª:)ZListing 5-3 on page ´†°dONLNd    ìØ;ªE)W95´†°dONLNd    ïØEªJ)
  10116. .)ˇ*@ˇ ˇˇˇˇ@
  10117. ˇ·ˇ‚7^
  10118. 4*\¯, Palatino&e.3+l"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@l    Processes4⁄*˙¯
  10119. (‡*178    )B"Checking the Operating Environment4^*¿¯
  10120. .°dONLNd\lhr(elTï°dONLNd\qh∑)o do this, the Vy@°dONLNd\∂hM)Eenn Diagrammer application defiy@°dONLNd0\Mho)ónes the ,
  10121. Couriery@°dONLNd8\oh´)"
  10122. DoBadErrory@°dONLNdB\´h∑)< prK†°dONLNdE\∑h‘) ocedur°dONLNdK\‘hÓ)e and .°dONLNdQilup(rlc@°dONLNdRipuÅ)alls ~°dONLNdWiÇuä)it (¿°dONLNdZiãu≤)    wheneve%†°dONLNdai≥uÀ)(r ther:†°dONLNdgiÀu‡)e is a)†°dONLNdmi·uÌ) prp¿°dONLNdpiÌuÏ) 9oblem serious enough to warrant such drastic action. The .°dONLNd©vlÇ®(l
  10123. DoBadError°dONLNd≥v®Ç™)< °dONLNd¥v™Ç¥)prR`°dONLNd∂v¥Ç—)
  10124. ocedur$¿°dONLNdºv—Çÿ)e $¿°dONLNdævÿÇÒ)is defı@°dONLNdƒvÇ)ined in ı@°dONLNdÃvÇA)! Listing 9-5ı@°dONLNd◊vAÇD)0.
  10125. •*≠¯4¶*≠¯"¶*_
  10126. ˇ·ˇ‚7^    .°dONLNdŸõl¶ò(£l Listing 9-5°dONLNdÂõ∞¶)DHandling serious errors
  10127. .°dONLNd˝µl¡\(æl(PROCEDURE DoBadError (myError: Integer);°dONLNd&√lœ~*VAR°dONLNd+—~›®+myItem:°dONLNd6—Δ›ˆ)HInteger;°dONLNd@fl~Î∫(Ë~
  10128. myMessage:°dONLNdNflΔÎ)HStr255;°dONLNdVÌl˘ä(ˆlBEGIN°dONLNd]˚~‰+SetCursor(arrow);°dONLNd|˚zÊ)¸{set arrow cursor}°dONLNdê    ~û(~0GetIndString(myMessage, kErrorStrings, myError);°dONLNd¬~#D*!ParamText(myMessage, '', '', '');°dONLNdÂ%~1J*"myItem := Alert(rErrorAlert, NIL);°dONLNd%z1‡)¸{display message}°dONLNd(3~?Δ(<~ ExitToShell;°dONLNdB3z?¯)¸{terminate execution}°dONLNdXAlMÑ(JlEND;°dONLNd]Yle◊*The application passes °dONLNdtY◊e)k
  10129. DoBadError°dONLNd~Ye])< an index into a rR`°dONLNdêY]et)Jesour$¿°dONLNdïYte°) ce of type $¿°dONLNd†Y°e≈)-'STR#'$¿°dONLNd¶Y≈efi)$ that °dONLNd¨flrU(ol5contains messages indicating the types of serious errR`°dONLNd·fUrg)Èors. R`°dONLNdÊfgr)First R`°dONLNdÏfrµ)    DoBadErroR`°dONLNdıfµrª)6rR`°dONLNdˆfªr¡) sR`°dONLNd¯f¡r‚)ets the .°dONLNdsl«(|lcursor to the standar’‡°dONLNds«‹)[d arr)@°dONLNds› )
  10130. ow cursor ‡°dONLNd$s 9)/ (this step i≈`°dONLNd0s9Ì)-*s necessary only if your application ever .°dONLNdZÄlå‡(âlchanges the cursor). Then °dONLNdtćå)t
  10131. DoBadError°dONLNd~Äå")< rR`°dONLNdÄÄ"åq)etrieves the appr$¿°dONLNdëÄqåƒ)Oopriate message fr˜ °dONLNd£Ä√å‰)Rom the °dONLNd™çlôØ(ñlapplication’s rR`°dONLNdπçØôΔ)Cesour$¿°dONLNdæçΔôs)&ce fork and calls the Dialog Manager r˜ °dONLNd‰çrôê)¨outine ˜ °dONLNdÎçêôΔ)    ParamText˜ °dONLNdÙçΔô”)6 to ˇˇO‚°dONLNd¯öl¶4(£l0substitute the message into the alert box text. †∞°dONLNd(ö4¶g)» After that, ˇ˝Ô¶@t°dONLNd4öh¶§)4
  10132. DoBadErrorˇˇO‚@t°dONLNd>ö§¶¯)< displays the alert °dONLNdRßl≥(∞l#box by calling the Dialog Manager rR`°dONLNduß≥,)¢outine R`°dONLNd|ß,≥J)AlertR`°dONLNdÅßJ≥O). R`°dONLNdÉßO≥e)(See R`°dONLNdàße≥})Figur$¿°dONLNdçß}≥∏)e 7-2 on page $¿°dONLNdõß∏≥«);134$¿°dONLNdûß«≥Â) for an °dONLNd¶¥l¿Ï(Ωlexample of this alert box.) F°dONLNd√¥Ï¿    )Äinallyd@°dONLNd…¥¿), d@°dONLNdÀ¥¿I)
  10133. DoBadErrord@°dONLNd’¥I¿)< calls the Pr6†°dONLNd‚¥¿À)6ocess Manager pr    °dONLNdÚ¥À¿Ë)Locedur€`°dONLNd¯¥Á¿Ó)e °dONLNd˙¡lÕÆ( l ExitToShell°dONLNd¡ÆÕp)B) to terminate the application immediatelyd@°dONLNd.¡oÕr)¡.
  10134. ‘*Ô¯4’*Ô¯
  10135. ˇ*¯4*¯ *˛
  10136. ˇ·ˇ‚7^ˇˇ©.ˇÆ°dONLNd0Ï*ˇ(˙*Checking the Operating Envirøˇ°dONLNdLÏˇ8)ÿonmentˇˇˇˇˇˇU˛)Ó9
  10137. .°dONLNdSlë(lCalling °dONLNd[ë”)% ExitToShell°dONLNdf”˚)B
  10138.  is the prR`°dONLNdp˚)(eferr$¿°dONLNduÌ)1ed way to terminate your application if for some .°dONLNd¶l)o(&lrE°dONLNdßp)·)eason you don’t want to rr °dONLNd¿·)j)qeturn to your main event loop. `°dONLNdflk)q)äY¬‡°dONLNd‡p)‰)ou might also want to call .°dONLNd˚*l6®(3l
  10139. DoBadError°dONLNd*®6I)<$ to terminate your application beforR`°dONLNd)*I6Û)°'e you even get to the main event loop. .°dONLNdP7lC(@l$This might happen if your applicatioÄ°dONLNdt7C)£n r‡°dONLNdw7C2) equir5 °dONLNd|72CA)es s¯¿°dONLNdÄ7AC)ystem softwar↰dONLNdç7ÄCã)?e rò@°dONLNdê7ãC ) outines that ar2¿°dONLNdü7ÀCfi)@en’t °dONLNd§DlPÛ(Ml available in all operating envirh‡°dONLNdƒDÛP‚)á7onments. In general, if your application uses any systeN†°dONLNd˚D„PÓ)m °dONLNd˝Ql]p(ZlsΩ°dONLNd˛Qp]ç)oftwar‰¿°dONLNdQç]ò)e rÛ`°dONLNdQò]◊) outines that ar燰dONLNdQÿ]r)@%en’t available in all operating envirõ`°dONLNd;Qr]®)ö onments, yo’@°dONLNdFQ®]∂)6u n-¿°dONLNdIQ∑]Ô) eed to make °dONLNdU^ljz(glsurâ °dONLNdX^zj≥)e that they arZ`°dONLNdf^¥j):e available in the currö¿°dONLNd}^j:)_    ent envirÊ¿°dONLNdÜ^:jÛ)')onment. Otherwise, your application will °dONLNdØklwÖ(tlcrash..°dONLNd∂}lâ√*For example, the Vd@°dONLNd»}¬âm)V$enn Diagrammer application uses the d@°dONLNdÏ}mâ©)´
  10140. FindFolderd@°dONLNdˆ}©â„)< function to fid@°dONLNd}„â):nd .°dONLNdälñÜ(ìlthe Pr¨°dONLNdäÜññ)eferX °dONLNdäóñU),ences folder containing the application’s prœÄ°dONLNd>äUñe)æefer{†°dONLNdBäfñÜ)ences fi@°dONLNdJäáñ§)!le (see `°dONLNdRä§ñ‚)Listing 3-3 on .°dONLNdaól£Ñ(†lpage °dONLNdfóÑ£é)62°dONLNdhóé£ó)
  10141. ). °dONLNdkóó£Ω)    Because °dONLNdsóΩ£˘)&
  10142. FindFolder°dONLNd}ó˘£ )<     was intrR`°dONLNdÜó £ê)'oduced in system softwar$¿°dONLNdûó꣫)pe version 7.0$¿°dONLNd´ó«£‘)7, V    °dONLNdÆ󔣉) enn °dONLNd≤§l∞(≠l"Diagrammer will crash if it calls °dONLNd‘§∞A)ô
  10143. FindFolder°dONLNdfi§A∞b)< when rl°dONLNd§b∞‹)!unning in an earlier system .°dONLNd    ±lΩç(∫lsoftwar‰¿°dONLNd    ±çΩµ)!    e version˝ °dONLNd    ±µΩ∑)(.ˇ;î@ˇ ˇˇˇˇ@
  10144. ˇ·ˇ‚7^
  10145. 4H\, Palatino&e.3+ä"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@ä    Processes4⁄ä˙(‡ä"Checking the Operating Environment
  10146. (‡179
  10147. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10148. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10149.  
  10150.  
  10151.  
  10152.  
  10153.  
  10154. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  10155. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10156. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10157.  
  10158.  
  10159.  
  10160.  
  10161.  
  10162. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜¸˛ˇˇ    ˇ¸ˇ ˇˇ˛ˇ˙ˇ˛¸ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  10163. 454+?òÄ
  10164. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10165. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10166.  
  10167.  
  10168.  
  10169.  
  10170.  
  10171. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˜˛˙ˇ˚ˇˇ˚ˇˇ˙ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  10172. ˛ˇ˛ˇˇ
  10173. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  10174. ˛ˇ˛ˇˇ
  10175. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  10176. ˛ˇˇˇˇ
  10177. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  10178. ˛ˇˇˇˇ
  10179. ˛ˇˇˇˇ    ˝ˇˇˇ    ˛ˇˇ˛
  10180. ˛ˇˇˇˇ
  10181. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  10182. ˛ˇˇˇˇ
  10183. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  10184. ˛ˇˇˇˇ
  10185. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿.°dONLNd\ähê(eäTï°dONLNd\èhˇ)o avoid crashing in envirg`°dONLNd\ˇhã)ponments that don’t support the ,
  10186. Courierg`°dONLNd9\ãh«)å
  10187. FindFolderg`°dONLNdC\«h)< function, the .°dONLNdRiäuë(räVú`°dONLNdSiêu?)$enn Diagrammer application makes suræ °dONLNdwi?u‹)Ø&e that the function is available befor °dONLNdùi›u)ûe calling it. .°dONLNd´väÇæ(äIt calls the °dONLNd∏væÇË)4Gestalt°dONLNdøvËÇ5)* function to see if °dONLNd”v5Çq)M
  10188. FindFolder°dONLNd›vqÇá)< is prR`°dONLNd„váÇŸ)esent, as shown in R`°dONLNdˆvŸÇ    )R Listing 9-6R`°dONLNdv    Ç )0.
  10189. •H≠4¶H≠"¶H_
  10190. ˇ·ˇ‚7^    .°dONLNdõä¶∂(£ä Listing 9-6.°dONLNdõŒ¶)DChecking that 
  10191. °dONLNdö¶D):
  10192. FindFolder    °dONLNd'õD¶n)<  is present
  10193. °dONLNd3µä¡D(æäFUNCTION IsFindFolder: Boolean;°dONLNdS√äœú*VAR°dONLNdX—ú›“+    myResult:°dONLNde—‰›)HOSErr;°dONLNdmflúÎÿ(Ëú
  10194. myFeature:°dONLNd{fl‰Î)HLongInt;°dONLNdÑÌ䢮(ˆäBEGIN°dONLNdã˚ú +IsFindFolder := FALSE;°dONLNd´˚PÚ)¥{assume it's not available}°dONLNd»    ú‡(ú6myResult := Gestalt(gestaltFindFolderAttr, myFeature);°dONLNdú#2*IF myResult = noErr THEN °dONLNd%Æ1
  10195. +:IsFindFolder := BTST(myFeature, gestaltFindFolderPresent);°dONLNdW3ä?¢(<äEND;°dONLNd\KäWû*The °dONLNd`KûW»)Gestalt°dONLNdgK»Wy)*( function is part of the Gestalt Manager°dONLNdèKyW )±!, which you can use to determine .°dONLNd∞Xädƒ(aä what softwarœÄ°dONLNdºXƒdÌ):    e and har†°dONLNd≈XÓd)*dwarT`°dONLNd…Xd&)e featur °dONLNd—X&d:)!es ar†°dONLNd÷X;dö)e available in the currV°dONLNdÌXödÓ)_ent operating envir· °dONLNdXÓd)Tonment. .°dONLNdeäq€(näWhen passed the °dONLNde€qY)QgestaltFindFolderAttr°dONLNd-eYq´)~ selector code, the °dONLNdAe´q’)RGestalt°dONLNdHe’q)*  function fi°dONLNdTeq)/lls °dONLNdXrä~m({ä4in the long integer passed in its second parameter (°dONLNdårm~£)„    myFeature°dONLNdïr£~‡)6) with a bit fi°dONLNd§r‡~)=    eld that °dONLNd≠äã/(àä$encodes information about the featurR`°dONLNd—/ãW)•
  10196. es of the R`°dONLNd€Wãì)(
  10197. FindFolderR`°dONLNdÂìã“)< function. Curr$¿°dONLNdÙ“ã)?ently only one °dONLNdåäòµ(ïä
  10198. bit is defi°dONLNdåµòË)+ ned, specifi°dONLNdåËòG)3ed using the constant °dONLNd0åGò◊)_gestaltFindFolderPresent°dONLNdHå◊ò)ê. If that bit is °dONLNdYôä•≥(¢ä
  10199. set, then °dONLNdcô≥•Ô))
  10200. FindFolder°dONLNdmôÔ•)< is prR`°dONLNdsô•Å)esent in the operating envir$¿°dONLNdèôÅ•¬)|onment. The V    °dONLNdúô¡•)@enn Diagrammer °dONLNd´¶ä≤⁄(Øäapplication calls °dONLNdΩ¶⁄≤")P IsFindFolder°dONLNd…¶"≤a)H as follows (se°dONLNdÿ¶a≤h)?e °dONLNd⁄¶h≤æ)Listing 3-3 on page °dONLNdÓ¶æ≤»)V62°dONLNd¶»≤Ã)
  10201. )°dONLNdÒ¶Ã≤œ):°dONLNdÛΩä…(ΔäIF IsFindFolder THEN°dONLNd    Àú◊
  10202. +=myResult := FindFolder(kOnSystemDisk, kPreferencesFolderType,°dONLNdPŸ,Â+ê'kDontCreateFolder, myVRefNum, myDirID);
  10203. ÙH4ıH    .°dONLNdxÛä˛ù(˚äNote
  10204. ˇ·ˇ‚7^
  10205. .°dONLNd}ä /*%For complete details about using the °dONLNd¢/ Y)•Gestalt°dONLNd©Y Œ)* function to determine the .°dONLNdƒ ä§(äfeatur¨°dONLNd  §›)es of the curr`°dONLNdÿ fi2):ent operating envirìÄ°dONLNdÎ 2√)T!onment, see the chapter “Gestalt °dONLNd ä$ƒ(!ä Manager” in À¿°dONLNdƒ$|):,Inside Macintosh: Operating System UtilitiesÄ°dONLNdD}$)π.,Zapf DingbatsõÄ°dONLNdNÑ#â)u
  10206. ˇˇÇP.°dONLNdP)ä5ì(2äIf ˇ˛ÜP°dONLNdS)î5ö)
  10207. FP°dONLNdT)ö5–)    indFolderˇˇÇPP°dONLNd])–5:)6 function isn’t availableâ@°dONLNdv):5F)j, VÔ–°dONLNdy)E5Δ) enn Diagrammer looks in the {`°dONLNdï)«5)Çdefault directory˝∞°dONLNd¶)5)M .°dONLNdß6äB›(?äinstead of in the PrÕ†°dONLNdª6›BÌ)Sefery¿°dONLNdø6ÓB()ences folder fi@°dONLNdÕ6)BX); or the userlÄ°dONLNdÿ6YBl)0’s pr∑‡°dONLNd›6lB|)eferd°dONLNd·6}Bù)ences fi†°dONLNdÈ6ûB•)!le¥†°dONLNdÎ6•B˘). This isn’t the best °dONLNdCäOº(LäGstrategy possible, but it’s good enough for a simple application like V§@°dONLNdHCªO(Lªenn Diagrammer^‡°dONLNdVCO )K. °dONLNdXPä\ú(YäMor/¿°dONLNd[Pù\Õ) e generally£‡°dONLNdfPÃ\˜)/    , however∞Ä°dONLNdoP˜\)+, y?†°dONLNdrP\) oµ °dONLNdsP\*)u need t°dONLNd{P+\‘)$%o decide what the base system softwar< °dONLNd†P’\‹)™e °dONLNd¢]äiç(färE°dONLNd£]éi•)equir\@°dONLNd®]•i')ements of your application arW‡°dONLNd≈]'iì)Çe and how you want to rü‡°dONLNd‹]ìi)leact if necessary services °dONLNd˜jäví(säarE°dONLNd˘jìvE)    )en’t available. In some cases, working ar*@°dONLNd"jEvp)≤    ound a pr[ °dONLNd+jpv√)+oblem isn’t so easyã °dONLNd>j¬v)R. In those cases, °dONLNdPwäÉ+(Ää$informing the user that your softwar)†°dONLNdtw,ÉS)¢    e won’t ry`°dONLNd}wSÉè)'un in the currò°dONLNdãwèÉ÷)<ent system confi"`°dONLNdõw◊É)Hguration and °dONLNd®Ñäê‘(çäthen exiting is pr °dONLNd∫Ñ’êP)Kobably the right thing to do.°dONLNdÿñä¢ë(üäA∫†°dONLNdŸñë¢Õ)H second way to determine the availability of a particular system softwar›@°dONLNd    !ñÕ¢ÿ(üÕe r·°dONLNd    $ñÿ¢ ) outine is to °dONLNd    1£äØ©(¨ätest dirTÄ°dONLNd    9£©Ø*) ectly for the existence of the r|@°dONLNd    Y£*Ø)Å4outine by inspecting its trap number (a number that °dONLNd    ç∞亩(πäidentifiV†°dONLNd    ï∞™º) es each system softwar6`°dONLNd    ´∞º)ee rE°dONLNd    Æ∞º”) ,outine), using the technique illustrated in J†°dONLNd    ⁄∞”º)π Listing 9-7͇°dONLNd    Â∞º).. ˇ    à@ˇ ˇˇˇˇ@
  10208. ˇ·ˇ‚7^
  10209. 4*\¯, Palatino&e.3+l"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@l    Processes4⁄*˙¯
  10210. (‡*180    )B"Checking the Operating Environment4^*¿¯
  10211. °dONLNd\lhr(elY@Ä°dONLNd\rh`)8ou should use this method to test for the existence of rÔ†°dONLNd9\`hˆ)Ó!outines not included in managers .°dONLNdZiluß(rl about which ,
  10212. Courier°dONLNdfißu—);Gestalt°dONLNdmi—uË)* can rR`°dONLNdsiËu)eport.
  10213. ò*†¯4ô*†¯"ô*_
  10214. ˇ·ˇ‚7^    .°dONLNdzélôò(ñl Listing 9-7°dONLNdÜé∞ôF)D&Determining whether a trap is availabl@°dONLNd¨éGôL)óe
  10215. .°dONLNdÆ®l¥8(±l"FUNCTION NumToolboxTraps: Integer;°dONLNd—∂l¬ä*BEGIN°dONLNdÿƒ~–z+*IF NGetTrapAddress(_InitGraf, ToolTrap) = °dONLNd
  10216. “Ífi»+l%NGetTrapAddress($AA6E, ToolTrap) THEN°dONLNd2‡êÏ(ÈêNumToolboxTraps := $200°dONLNdKÓ~˙ñ(˜~ELSE°dONLNdR¸ê +NumToolboxTraps := $400;°dONLNdk
  10217. lÑ(lEND;°dONLNdq&l2ò*2FUNCTION GetTrapType (theTrap: Integer): TrapType;°dONLNd§4l@ä*CONST°dONLNd´B~N‰+TrapMask = $0800;°dONLNdΩPl\ä(YlBEGIN°dONLNdƒ^~jP+#IF BAND(theTrap, TrapMask) > 0 THEN°dONLNdÍlêx+GetTrapType := ToolTrap°dONLNdz~Üñ(É~ELSE°dONLNd
  10218. àêî+GetTrapType := OSTrap;°dONLNd!ñl¢Ñ(ülEND;°dONLNd'≤læû*3FUNCTION TrapAvailable (theTrap: Integer): Boolean;°dONLNd[¿lÃ~*VAR°dONLNd`Œ~⁄¢+tType:°dONLNdjŒΔ⁄¸)H    TrapType;°dONLNdt‹lËä(ÂlBEGIN°dONLNd{Í~ˆ2+tType := GetTrapType(theTrap);°dONLNdõ¯~*IF tType = ToolTrap THEN°dONLNdµ~ú*BEGIN°dONLNdΩê P+ theTrap := BAND(theTrap, $07FF);°dONLNd‡"ê.\*"IF theTrap >= NumToolboxTraps THEN°dONLNd0¢<>+theTrap := _Unimplemented;°dONLNd">~Jñ(G~END;°dONLNd(L~X∞*3TrapAvailable := NGetTrapAddress(theTrap, tType) <>°dONLNdcZÍfÊ+l*NGetTrapAddress(_Unimplemented, ToolTrap);°dONLNdéhltÑ(qlEND;ˇ46@ˇ ˇˇˇˇ@
  10219. ˇ·ˇ‚7^
  10220. 4H\, Palatino&e.3+ä"CHAPTER ”)>9,     Helvetica    ˇˇ—ÚˇÆ(@ä    Processes4⁄ä˙(‡ä"Checking the Operating Environment
  10221. (‡181
  10222. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10223. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10224.  
  10225.  
  10226.  
  10227.  
  10228.  
  10229. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  10230. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10231. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10232.  
  10233.  
  10234.  
  10235.  
  10236.  
  10237. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜¸˛ˇˇ    ˇ¸ˇ ˇˇ˛ˇ˙ˇ˛¸ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜
  10238. 454+?òÄ
  10239. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10240. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10241.  
  10242.  
  10243.  
  10244.  
  10245.  
  10246. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˜˛˙ˇ˚ˇˇ˚ˇˇ˙ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  10247. ˛ˇ˛ˇˇ
  10248. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  10249. ˛ˇ˛ˇˇ
  10250. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  10251. ˛ˇˇˇˇ
  10252. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  10253. ˛ˇˇˇˇ
  10254. ˛ˇˇˇˇ    ˝ˇˇˇ    ˛ˇˇ˛
  10255. ˛ˇˇˇˇ
  10256. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  10257. ˛ˇˇˇˇ
  10258. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  10259. ˛ˇˇˇˇ
  10260. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿.°dONLNd\äh∫(eä Listing 9-8°dONLNd \∫h)0 shows how to use the ,
  10261. Courier°dONLNd!\hk)cTrapAvailable°dONLNd.\kh•)N function defi°dONLNd<\•h¬):ned in °dONLNdC\¬hÚ) Listing 9-7°dONLNdN\Úhˇ)0 to °dONLNdRiäuˆ(rädetermine whether the °dONLNdhiˆuD)lWaitNextEvent°dONLNduiDuß)N function is available.
  10262. òH†4ôH†"ôH_
  10263. ˇ·ˇ‚7^    .°dONLNdçéäô∂(ñä Listing 9-8.°dONLNdôéŒôX)D%Checking for the availability of the 
  10264. °dONLNdæçXô¶)äWaitNextEvent    °dONLNdÀé¶ô…)N     function
  10265. °dONLNd’™ä∂D(≥äFUNCTION WNEAvailable: Boolean;°dONLNdı∏䃮*CONST°dONLNdˇΔú“ˆ+_WaitNextEvent °dONLNdΔ“8)l= $A860;°dONLNd ΔP“)H{trap number of WaitNextEvent}°dONLNd?‘䇮(›äBEGIN°dONLNdI‚úÓ∂+/WNEAvailable :=  TrapAvailable(_WaitNextEvent);°dONLNdy丢(˘äEND;ˇˇ° °dONLNd~äù*The ˇ˛„$! °dONLNdÇû¯)NumToolboxTrapsˇˇ° ! °dONLNdë¯#)Z  function r5Ñ°dONLNdú#ì)+elies on the fact that the ˇ˛„$˚ðdONLNd∑ì√)pInitGrafˇˇ° ˚ðdONLNdø√)0 trap (trap number .°dONLNd“ä!õ(ä?$A86E) is always implemented. If the trap dispatch table is larK‡°dONLNdú!(úge enough (that is, has .°dONLNd)"ä.õ(+ämorR`°dONLNd,"õ.ü)9e than $200 entries), then $AA6E always points to either R`°dONLNde"ü.Û(+ü_UnimplementedR`°dONLNds"Û.)T or °dONLNdw/ä;(8äsomething else, but never to °dONLNdî/;8)~InitGraf°dONLNdú/8;=)0. !†°dONLNdû/=;W)As a rÙ°dONLNd§/V;    )*esult, you can check the size of the trap .°dONLNdŒ<äHK(Eä-dispatch table by checking to see if the addrÀ¿°dONLNd˚<KH˚)¡'ess of trap $A86E is the same as $AA6E.ˇˇÇ.°dONLNd#NäZ®(WäAfter rU‚°dONLNd*N®Z«)Ceceiving the information about the size of the dispatch table, the ˇ˝
  10266. Ü|x°dONLNdmN«Z(W«TrapAvailableˇˇÇ|x°dONLNdzNZ)N .°dONLNd{[äg∑(dä
  10267. function fi°dONLNdÜ[∏g¿).?rst checks to see if the trap to be tested has a trap number gr±`°dONLNd≈[¿g(d¿eater than the total .°dONLNd⁄hätí(qä=number of traps available on the machine. If so, it sets the °dONLNdhítº(qítheTrap°dONLNdhºtÛ)* variable to °dONLNd+uäÅfi(~ä_Unimplemented°dONLNd9ufiŘ)T beforR`°dONLNd?u˜Å_)e testing it against the R`°dONLNdXu_Å≥)h_UnimplementedR`°dONLNdfu≥ÅÚ)T trap. See the .°dONLNduÇäéZ(ãä3discussion of the trap dispatch table utilities in †°dONLNd®ÇZé)–,Inside Macintosh: Operating System Utilities@`°dONLNd‘Çé)π °dONLNd’èäõ®(òäAfor complete details on trap numbers and the trap dispatch table.
  10268. ©H∑4™H∑°dONLNd™ä≤©*IMPORTÄ°dONLNd™©≤π)ANT
  10269. ˇ·ˇ‚7^
  10270. °dONLNd!µä¡ê(æäT†¿°dONLNd"µê¡û)her¿°dONLNd%µü¡≈)    e’s one fi·°dONLNd/µ≈¡")&nal twist in this storyÙÄ°dONLNdFµ!¡&)\. Δ‡°dONLNdHµ&¡,)Yá`°dONLNdIµ,¡_) our softwar€`°dONLNdTµ_¡ƒ)3e development system °dONLNdi¡äÕ∞( ämight pr&`°dONLNdq¡±ÕÊ)' ovide glue r °dONLNd}¡ÊÕø)50outines that mimic the operation of some system °dONLNd≠Õ䟴(÷äsoftwar‰¿°dONLNd¥Õ´Ÿ∂)!e rÛ`°dONLNd∑Õ∂ŸÌ) outines, ther °dONLNdƒÕÓŸæ)80eby allowing you to call them in earlier system °dONLNdÙŸä´(‚äsoftwar‰¿°dONLNd˚Ÿ´‹)! e versions. : °dONLNdŸ›‡)2(é°dONLNdŸ‡Â°)+For instance, MPW versions 3.2 and later proÄ°dONLNd3Ÿ°Âº)¡ovide .°dONLNd9ÂäÒ(Óäglue that allows you to call °dONLNdVÂÒD)~
  10271. FindFolder°dONLNd`ÂDÒï)< in system softwarR`°dONLNdrÂïÒ√)Q e versions °dONLNd}Òä˝æ(˙äprior to 7.0.°dONLNdäÒæ˝¬)4)°dONLNdãÒ¬˝ƒ) °dONLNdåÒƒ˝Ó)However¬†°dONLNdìÒÌ˝b)), you cannot in general use ¬†°dONLNdØÒb˝å)uGestalt¬†°dONLNd∂Òå˝´)* or the .°dONLNdæ˝ä    „(ätechnique shown in ◊@°dONLNd—˝„    )Y Listing 9-7wÄ°dONLNd‹˝    î)/" to test for the availability of rο°dONLNd˛˝î    ∂)Çoutines °dONLNd    äì(äprG °dONLNd    î
  10272. )
  10273. ovided as glue. Instead, yoj‡°dONLNd#    
  10274. Δ)v+u’ll need to consult the documentation for °dONLNdNä!fi(äyour development °dONLNd_fi!Á)Tsy± °dONLNdaË!)
  10275.     stem to fií¿°dONLNdk!c))nd out what glue r∂‡°dONLNd}c!ò)Routines it pr( °dONLNdäô!∏)6ovides.,Zapf DingbatsŒ†°dONLNdöΩ √)$sˇJ@ˇ ˇˇˇˇ@
  10276. ˇ·ˇ‚7^
  10277. 4^*¿¯ˇÄ@ˇ ˇˇˇˇ@
  10278. ˇ·ˇ‚7^
  10279. 4⁄∫˙, Palatino
  10280. .(·183    3, Ã(#∫AFTERK)BWORD 4^H¿
  10281. vHú4vHú óHó
  10282. ˇ·ˇ‚7^ˇˇ¬òˇ◊°dONLNd\∫uN(n∫Going Further
  10283. °dONLNdú∫®&*7If you’ve made it this farõ†°dONLNd(ú&®Â)l-, you’ve learned quite a bit about putting a °dONLNdU©∫µC(≤∫Macintosh application togetherø†°dONLNds©CµH)â. í°dONLNdu©HµN)YRÄ°dONLNdv©Nµ©)ou’ve seen how to cr2‡°dONLNdä©©µˆ)[eate and manage °dONLNdö∂∫¬d(ø∫$menus, windows, dialog boxes, and pr:‡°dONLNdæ∂e¬u)´eferÁ°dONLNd¬∂u¬ë)ence fiH†°dONLNd…∂í¬¢)les. 
  10284. °dONLNdŒ∂£¬©)Y Ä°dONLNdœ∂®¬)ou know how to get °dONLNd‚√∫œ0(Ã∫information about the userù °dONLNd¸√1œΔ)w!’s actions, and you know how to r‡°dONLNd√«œ)ñespond to many °dONLNd,–∫‹(Ÿ∫of those actions.  Ä°dONLNd>–‹    )IYã°dONLNd?–    ‹D) ou also know‰Ä°dONLNdK–C‹û):, at least in overview.@°dONLNda–û‹)[, how your application °dONLNdx›∫ÈÕ(Ê∫sharS`°dONLNd|›ÕÈ8)es the available system rñ °dONLNdï›8ÈP)kesourfi`°dONLNdö›PÈ)(ces with the Operating System and other °dONLNd¬Í∫ˆ(Û∫Qopen applications. Congratulations; that’s a lot to learn in less than 200 pages.°dONLNd¸∫*No doubt, however3`°dONLNd%¸w)V, you want to learn morÊ@°dONLNd<¸wõ)ge. The V°dONLNdD¸õË)$enn Diagrammer °dONLNdS    ∫(∫Japplication fails to implement a number of very fundamental elements of a °dONLNdù∫"U*$typical Macintosh application. It prô°dONLNd¡U")õ.ovides no text-input or editing capabilities, °dONLNdÔ#∫/ï(,∫1no support for user drawing, no support for color°dONLNd #ï/    )€, and virtually no support °dONLNd;0∫<>(9∫for the many important featurˆ†°dONLNdX0><Y)Ñes intr>`°dONLNd_0Z<ı)"oduced in System 7. The following °dONLNdÅ=∫IÚ(F∫section briefl!Ä°dONLNdè=ÛI∞)9,y describes some of these capabilities and r¿†°dONLNdª=∞Iˆ)Ωefers you to the x`°dONLNdÃ=˜I)GInside °dONLNd”J∫V‰(S∫    MacintoshpÄ°dONLNd‹JÂV?)+ books that give mor˚@°dONLNdJ?VÙ)Z'e information about implementing those °dONLNdW∫cÎ(`∫ capabilitiesdÄ°dONLNd#WÏcÓ)2.°dONLNd%i∫u¿(r∫T†¿°dONLNd&i¿uı) his afterwor˚Ä°dONLNd2iıu)5    d also pry@°dONLNd;iu)'9ovides some hints on writing your application so that it °dONLNdtv∫Ǣ(∫Fis compatible with all existing Macintosh computers and system softwar´Ä°dONLNd∫v˘Ç(˘e °dONLNdºÉ∫èô(å∫6versions and so that it can be easily localized to dif  °dONLNdÚÉöè¶)‡ferÓ†°dONLNdıÉ•è¸) ent languages. This °dONLNd    ê∫ú‡(ô∫afterword°dONLNdê‡ú)&d ends with aF†°dONLNdêú«)<) list of additional developer services pr`°dONLNdGê»ú˜)¨
  10285. ovided by œ°dONLNdQêˆú).Apple °dONLNdWù∫©Á(¶∫Computer+°dONLNd_ùÁ©¸)-, Inc.
  10286. ∞HÀ4±HÀ
  10287. €H„4‹H„ ›H›
  10288. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNdf»H€(÷HImplementing Further FeaturÀØ°dONLNdÅ»€))”esˇˇˇˇˇˇU˛)Û9
  10289. °dONLNdÑÏ∫¯¡(ı∫Vú`°dONLNdÖÏ¿¯˝)Ienn Diagrammer succeeds in its basic goal, which is to illustrate how to °dONLNdŒ˘∫ˆ(∫Gimplement many of the essential user interface components of a typical °dONLNd∫M*!Macintosh application and to intrÄ°dONLNd6N‘)îoduce the very simplest featur¸†°dONLNdT”˙)Ö
  10290. es of the °dONLNd^∫(∫JOperating System. It shows how to do basic drawing in a window and how to °dONLNd® ∫,{*/handle many user actions. Best of all, it’s a r∑ °dONLNd◊ {,    )¡"eal application that does useful, °dONLNd˘-∫9(6∫albeit limited, work.°dONLNd?∫K*It’s important to rû¿°dONLNd"?Kƒ)N+ealize that although some parts of the sourõ¿°dONLNdM?ƒK)º
  10291. ce code prg‡°dONLNdW?ÒK)-esented °dONLNd_L∫X«(U∫thrX¿°dONLNdbL«X#)oughout this book art¿°dONLNdvL#X{)\e purposely simplifi    °dONLNdäL|X«)Yed, other parts arm°dONLNdúL«X )Ke not. The code °dONLNd¨Y∫e†(b∫6for handling dialog boxes, for instance, is designed t°dONLNd‚Y°eÆ)Áo b °dONLNdÂYÆe)e easily amplifib‡°dONLNdıYÒe    )Ced to °dONLNd˚f∫r›(o∫Ahandle other modeless dialog boxes. The basic event loop and the °dONLNd<s∫!*menu-handling code ar…‡°dONLNdQs!º)g$e also quite typical of what you’d fiá@°dONLNdvsΩ)únd in a commer Ä°dONLNdÑs)Ecial °dONLNdâÄ∫å<(â∫Macintosh application. The VtÄ°dONLNd•Ä;åú)Åenn Diagrammer sourΠ°dONLNd∏Äúå)ace code is not intended as °dONLNd”ç∫ô≥(ñ∫9a shell on which to base your application, but chances ar]`°dONLNd     ç≥ô)˘e you’ll do at least a °dONLNd    #ö∫¶2(£∫few things in the same wayJ@°dONLNd    =ö2¶4)x.ˇ!⁄@ˇ ˇˇˇˇ@
  10292. ˇ·ˇ‚7^
  10293. 4⁄*˙¯, Palatino
  10294. .(·*184    3, Ã(#úAFTERK)BWORD 4^*¿¯
  10295. °dONLNd\úh…(eú Still, the V5°dONLNd \…h*)-enn Diagrammer sour´†°dONLNd\*hÚ)a/ce code fails to illustrate how to implement a °dONLNdNiúuF(rú$number of important Macintosh featurH°dONLNdriGuf)´es. Her.†°dONLNdyifu˜)"e’s a moderately complete list of °dONLNdõvúÇ (úwhat’s missing and wherí`°dONLNd≤v ÇÁ)o2e you can look to get the information you need to °dONLNd‰Éúè„(åúadd these featur«Ä°dONLNdÙÉ„èE)Ges to your application:,Zapf Dingbats°dONLNd ôú†°(üún
  10296. °dONLNdñ®¢≤) W!†°dONLNdñ≤¢÷)
  10297. indows.Ä@°dONLNdñ÷¢O)$ The document windows cra@°dONLNd.ñO¢é)yeated by the V„ °dONLNd<ñç¢⁄)>enn Diagrammer °dONLNdK¢®ÆÂ(´®application ar{‡°dONLNdY¢ÂÆ˝)=e of fi†°dONLNd`¢˛Æı)9xed size, so they don’t need to contain zoom boxes, size °dONLNdôÆ®∫fi(∑®boxes, or scr¿°dONLNd¶Æfl∫v)7$oll bars. In all likelihood, howeverc‡°dONLNd Æu∫Ù)ñ, your application will allow °dONLNdË∫®ΔË(√®Lthe user to enter and edit information (such as text or graphics) that will °dONLNd4Δ®“‚* usually not fi¡ °dONLNdBΔ‚“):t in a fiJ°dONLNdKΔ“L)xed-size window(‡°dONLNdZΔL“Q)K.  Ä°dONLNd\ΔP“i)As a rì¿°dONLNdbΔj“µ)esult, you will prØ@°dONLNdtΔµ“Ó)K obably want °dONLNdÄ“®fi~(€®/to include support for these window elements. Tb`°dONLNdØ“~fi·)÷o learn how to handle °dONLNd≈fi®Í[(Á®'zoom and size boxes, see the chapter “W™‡°dONLNdÏfi[Í¥)≥indow Manager” in †°dONLNd˛fiµÍœ)ZInside °dONLNdÍ®ˆ (Û®Macintosh: Macintosh T·°dONLNdÍ
  10298. ˆN)boolbox Essentials¶°dONLNd,ÍOˆZ)E. T€¿°dONLNd/ÍYˆ⁄)
  10299. o learn how to implement scr1 °dONLNdKÍ€ˆË)Çoll °dONLNdOˆ®"(ˇ®bars, see the chapter “Contr Ä°dONLNdkˆ#≠){ol Manager” in that same book.°dONLNdä ú°(ún
  10300. °dONLNdå® ) Menus.ß¿°dONLNdí S)" The Macintosh system softwar‡°dONLNdØTe)äe pr'†°dONLNd≥eˆ)!ovides support for several kinds °dONLNd‘® C(®#of menus in addition to the standarÄ°dONLNd˜D Â)ú!d “pull-down” menus used by the V˛‡°dONLNd„ ı)üenn °dONLNd ®,()®Diagrammer application. ‰ °dONLNd4 , )qA¿°dONLNd5 !,m) very useful adapˇ`°dONLNdF m,u)LtaA¿°dONLNdH v,Ú)    tion of the pull-down menu °dONLNdc,®8¬(5®is the Ç¿°dONLNdj,¬8) pop-up menu,Ô‡°dONLNdv,8·)@0 which you can put in dialog boxes and document °dONLNd¶8®DÈ(A® windows. More¿°dONLNd≤8ÈD)AeoverJ°dONLNd∑8D÷),, both pop-up menus and pull-down menus can °dONLNd„D®PÀ(M®contain ≥@°dONLNdÎDÀP$)#hierarchical menus,Ä°dONLNd˛D%P>)Z wherPÄ°dONLNdD>Pg)
  10301. e an entirv@°dONLNdDgPÍ))e menu is attached to a menu °dONLNd*P®\ÿ(Y®Eitem. For information about these additional kinds of menus, see the °dONLNdo\®h'* chapter “Menu Manager” in %Ä°dONLNdâ\(h¶)ÄInside Macintosh: Macintosh Tx°dONLNd¶\•hÈ)}oolbox Essentials=°dONLNd∑\ÍhÔ)E. °dONLNdπh®t(q®HThat chapter also shows how to modify a menu item’s text and style, how °dONLNdt®ÄÎ* Gto add a mark to a menu item, and how to associate an icon with a menu °dONLNdHÄ®å3* item. Because pop-up menus arz¿°dONLNdeÄ3åµ)ãe actually very complex contr§†°dONLNdÇĵåˆ)Çols, you’ll also °dONLNdìå®òœ(ï®    need to r}@°dONLNdúåœò4)'ead the chapter “Contrg†°dONLNd≤å4òy)eol Manager” in ë@°dONLNd¡åyòÒ)EInside Macintosh: Macintosh °dONLNd›ò®§Æ(°®T°dONLNdfiò≠§Ò)oolbox EssentialsE°dONLNdÔòÚ§û)E% to learn how to handle pop-up menus.°dONLNd≠ú¥°(≥ún
  10302. °dONLNd™®∂Æ) T¿°dONLNd™Æ∂Ω)ext.„†°dONLNd™Ω∂‰)A Most Macintosh applications support some form of text entry and °dONLNd]∂®¬£(ø®=editing, even if just to solicit some piece of information fr/@°dONLNdö∂§¬Ì)¸om the user in a °dONLNd´¬®Œ1(À®dialog box. The system softwar Ä°dONLNd…¬2Œg)ä e includes T[¿°dONLNd’¬fŒÍ)4extEdit, which you can use to °dONLNdÛŒ®⁄±(◊®prG °dONLNdıŒ≤⁄∂)
  10303. =ovide basic text-handling capabilities for your application. ˇ‡°dONLNd2Œµ⁄‚(◊µ    Although °dONLNd;⁄®ÊÆ(„®Tµ¿°dONLNd<⁄≠ÊÅ)0extEdit was originally designed to handle edit fiÔ¿°dONLNdm⁄ÅÊÔ)‘elds in a dialog box, you °dONLNdáÊ®Úõ(Ô®9can also use it for other purposes. For example, if you’rìÄ°dONLNd¿ÊõÚÕ)Û e writing a °dONLNdÃÚ®˛∂(˚®sprÑ °dONLNdœÚ∂˛^)%eadsheet application, you might use T≤‡°dONLNdÙÚ]˛Ó)ß extEdit to handle small amounts °dONLNd    ˛®
  10304. Œ(®
  10305. of text. Tv °dONLNd    ˛Œ
  10306. 4)&extEdit is not, however»@°dONLNd    5˛3
  10307. x)e, suitable for lar⁄ °dONLNd    G˛x
  10308. Ÿ)Ege amounts of text (grº†°dONLNd    ]˛Ÿ
  10309. Ò)aeater °dONLNd    c
  10310. ®N(®'than about 32,000 characters). If you’r™ °dONLNd    ä
  10311. Në)¶e writing a worBÄ°dONLNd    ô
  10312. í•)Dd-pry@°dONLNd    ù
  10313. •Ã)    ocessing °dONLNd    ¶®" (®Aapplication, you’ll need to write your own custom text-handling r≠°dONLNd    Á "Ô(     outines. °dONLNd    "®.Æ(+®Tµ¿°dONLNd    Ò"≠.⁄)Fo learn how to handle text entry and editing in dialog boxes, see the °dONLNd
  10314. 7.®:+(7®chapter “Dialog Manager” in †¿°dONLNd
  10315. S.+:©)ÉInside Macintosh: Macintosh TÛ@°dONLNd
  10316. p.®:Ï)}oolbox Essentials∏@°dONLNd
  10317. Å.Ì:Ú)E. °dONLNd
  10318. É:®FÆ(C®Tµ¿°dONLNd
  10319. Ñ:≠F)o learn how to use T∫Ä°dONLNd
  10320. ò:F5)Y extEdit diröÄ°dONLNd
  10321. £:5FI)/ectlyrÄ°dONLNd
  10322. ®:IFù), see the chapter “T@°dONLNd
  10323. º:ùFœ)T extEdit” in h‡°dONLNd
  10324. »:œFÈ)2Inside °dONLNd
  10325. œF®Rfi(O® Macintosh: TpÄ°dONLNd
  10326. €F›RÈ)5ext®°dONLNd
  10327. fiFÈR«) 4. This latter book also describes a number of other °dONLNd R®^ø([®text-r‡°dONLNd R¿^)elated facilities pr_`°dONLNd ,R^¡)N&ovided by the Macintosh system softwarå °dONLNd RR¡^Ì)≥ e, such as °dONLNd ]^®j•(g®8support for multiple fonts and non-Roman character sets.°dONLNd ñsúz°(yún
  10328. °dONLNd òp®|¿) Files.ß °dONLNd ûp¿|‹) The V@°dONLNd §p‹|x)!enn Diagrammer application can cr•°dONLNd ≈px|í)úeate, r?†°dONLNd Ãpì|’)ead, and write °dONLNd €|®à´(Ö®rE°dONLNd ‹|¨àƒ)esourç@°dONLNd ·|ƒà’)ce fiS‡°dONLNd Ê|÷àb) les only (which contain the useru‡°dONLNd |càv)ç’s pr¡@°dONLNd |vàÜ)eferm`°dONLNd |áà¿)ences). Most °dONLNd à®î5(ë®!applications allow the user to cr\°dONLNd =à5îÚ)ç-eate and edit information of arbitrary size, °dONLNd j‚(ù®and they storìÄ°dONLNd wM):e that information in a fiµ °dONLNd ëîM†€)k"le’s data fork. The data fork can °dONLNd ≥†®¨X(©®'contain any kind of information you caræ °dONLNd ⁄†X¨é)∞e to put ther≠†°dONLNd Á†é¨ó)6e. I†°dONLNd ͆ò¨û)
  10329. Y
  10330.  °dONLNd Άû¨Ø)ou rÀ¿°dONLNd ԆبÓ)ead and write °dONLNd ˝¨®∏≈(µ®data frw°dONLNd¨≈∏„)om a fiÕ@°dONLNd ¨„∏Ñ)%le’s data fork using the File Managerï@°dONLNd0¨Ñ∏π)° , and you prU@°dONLNd<¨∫∏„)6
  10331. esent the ˇf@ˇ ˇˇˇˇ@
  10332. ˇ·ˇ‚7^
  10333. 4⁄∫˙, Palatino
  10334. .(·185    3, Ã(#∫AFTERK)BWORD 4^H¿
  10335. °dONLNd\ΔhÁ(eΔstandar±Ä°dONLNd\Áhù)!)d user interface for opening and saving fi—@°dONLNd1\ùh˘)∂les using the Standarfi‡°dONLNdF\˘h)\d File °dONLNdMhΔt;(qΔPackage. The chapter “Intr °dONLNdgh<t–)v oduction to File Management” in ˝@°dONLNdáh–tÍ)îInside °dONLNdétΔÄ(}ΔMacintosh: FilesU`°dONLNdût    Ä)C8 shows how to use these and other services to implement °dONLNd÷ÄΔå™(âΔ1the typical File menu commands (Open, Save, Save ó@°dONLNdÄ™å¸)‰As, Revert, and so °dONLNdåΔòi(ïΔ&forth). Other chapters in that book pr'†°dONLNd@åjòó)§    ovide morü†°dONLNdIåóò˚)-e detailed information °dONLNd`òΔ§˝(°Δabout the str°dONLNdmò˛§)8ucturᇰdONLNdrò§=)
  10336. e of the fiÖ°dONLNd}ò>§))*le system used on Macintosh computers and °dONLNdߧΔ∞5(≠Δabout the system softwarq‡°dONLNdø§5∞ )o0e managers you can use to manipulate objects in °dONLNdÔ∞Δº‹(πΔthe fiÍ °dONLNdı∞‹º-)le system. For morã°dONLNd∞.º©)Re complete information on rï¿°dONLNd"∞©º){eading and writing °dONLNd5ºΔ»…(≈ΔrE°dONLNd6º »‚)esourç@°dONLNd;º‚»Û)ce fiS‡°dONLNd@ºÙ»m)les, see the chapter “Resour© °dONLNd\ºm»≥)yce Manager” in Æ¿°dONLNdkº≥»˝)FInside Macintosh: °dONLNd}»Δ‘◊(—ΔMorÄ°dONLNdÄ»ÿ‘)e Macintosh T͆°dONLNd绑))8oolbox£†°dONLNdì»*‘,).,Zapf Dingbats°dONLNdï›∫‰ø(„∫n
  10337. °dONLNdó⁄Δʇ) Icons.o°dONLNdù⁄·ÊÈ) T$¿°dONLNdü⁄ÈÊ<)o learn how to defiX °dONLNd≤⁄<Ê )S/ne icons for your application and its document °dONLNd·ÊΔÚÃ(ÔΔfiå¿°dONLNd„ÊÃÚ)+les, see the chapter “Finder Interface” in †°dONLNdÊÄÚ¯)¥Inside Macintosh: Macintosh °dONLNd*ÚΔ˛Ã(˚ΔT°dONLNd+ÚÀ˛)oolbox EssentialsE°dONLNd<Ú˛)E.°dONLNd>∫ø(∫n
  10338. °dONLNd@Δfl) Help.√Ä°dONLNdEflã)' Every application should include the r∏ °dONLNdlã£)¨esour`°dONLNdq§)ces necessary to allow °dONLNdàΔ(ΔHthe Help Manager to display help balloons after the user has chosen the °dONLNd–Δ(@* Show Balloons command frW@°dONLNdË@(ˆ)z&om the Help menu. Usually you can add °dONLNd(Δ4ç(1Δ,support for help balloons simply by adding rU@°dONLNd:(ç4•)«esourùÄ°dONLNd?(•4)ces to your application’s °dONLNdY4Δ@…(=ΔrE°dONLNdZ4 @‚)esourç@°dONLNd_4‚@à)&ce fork, without having to change or r5†°dONLNdÖ4â@‘)ßecompile its sour;‡°dONLNdñ4‘@)K ce code. In °dONLNd¢@ΔL"(IΔsome cases, however†°dONLNdµ@"L’)\(, you might also need to modify the sour[`°dONLNd›@’L)≥ ce code to °dONLNdËLΔXœ(UΔprG °dONLNdÍL–XÏ)
  10339. ?ovide help balloons. For complete details on implementing help °dONLNd)XΔdå(aΔ,balloons, see the chapter “Help Manager” in °dONLNdUXçdÈ)«Inside Macintosh: MorãÄ°dONLNdjXÈdÔ)\e °dONLNdldΔp˘(mΔ Macintosh TÄ°dONLNdwd¯p)2oolbox©Ä°dONLNd}dp).°dONLNdy∫Äø(∫n
  10340. °dONLNdÅvΔÇÓ)     Printing.¡†°dONLNdävÓÇ[)( One of the easiest featur√@°dONLNd§v[Ç®)mes to add to the V͇°dONLNd∂vßÇÙ)Lenn Diagrammer °dONLNd≈ÇΔét(ãΔ*application is the capability to print a V`°dONLNdÔÇté”)Æenn diagram window◊†°dONLNdÇ“é˝)^ . Printing °dONLNd éΔö (óΔJessentially involves just drawing the window into a special graphics port °dONLNdVöΔ¶h* &called a printing graphics port. BeforÎ`°dONLNd|öh¶»)¢e doing that, howeverÒ‡°dONLNdëö»¶)`, you need to °dONLNdü¶Δ≤œ(ØΔprG °dONLNd°¶–≤)
  10341. esent the standar:°dONLNd≤¶≤ )K8d dialog boxes to set up a page and to send a print job °dONLNdÍ≤Δæ˜(ªΔ to a printer'†°dONLNdˆ≤˜æy)1". If, as is usually the case, therfi °dONLNd≤yæâ)Çe arÏ¿°dONLNd≤âæ) e multiple pages to be printed, °dONLNd<æΔ («Δyou’ll want to str$`°dONLNdNæ ))Luctur™@°dONLNdSæ) ‡)+e your printing code into a printing loop. †°dONLNd~æ· Ë)∏AT@°dONLNdæË )
  10342.  complete °dONLNdâ Δ÷(”Δprinting loop is pr˚¿°dONLNdú ÷)P6ovided in the chapter “QuickDraw Printing Manager” in °dONLNd“÷Δ‚2(flΔInside Macintosh: ImagingC¿°dONLNdÎ÷3‚)m1. That chapter also shows how to handle a number °dONLNd‚ΔÓ(ÎΔof other printing-r·Ä°dONLNd/‚ÓL)Pelated tasks.°dONLNd=˜∫˛ø(˝∫n
  10343. °dONLNd?ÙΔÏ) MemoryzÄ°dONLNdEÙÏÓ)&.˙Ä°dONLNdFÙÓ
  10344. ) The V“†°dONLNdLÙ
  10345. ˙)6enn Diagrammer application is surprisingly naive in itF@°dONLNdÇÙ˚)Òs °dONLNdÑΔ (    Δ management o%°dONLNdê ˘)B9f the memory in its own partition. For the most part, it °dONLNd… Δ(ΔLsimply tries to allocate the memory it needs for some particular operation, °dONLNd    Δ$T* "and if it fails to get that memory¨°dONLNd    7S$)ç/, it just does the safest thing it can to work °dONLNd    f$Δ0Œ(-ΔarE°dONLNd    h$œ0)    ound that failurı†°dONLNd    x$0)Ee. 놰dONLNd    {$0$)
  10346. YR °dONLNd    |$$0Δ)"ou’ll want to implement a much mor÷Ä°dONLNd    û$Δ0—)¢e r °dONLNd    °$—0) obust scheme °dONLNd    Æ0Δ<F(9Δto manage the memory you’r@°dONLNd    »0G< )Å-e allocated when your application starts up. °dONLNd    ı<ΔHÃ(EΔY@Ä°dONLNd    ˆ<ÃH&)ou need to make sur+@°dONLNd
  10347.     <&Hø)Z"e that your application’s memory r≤`°dONLNd
  10348. +<øH÷)ôequir…†°dONLNd
  10349. 0<÷H)ements don’t °dONLNd
  10350. =HΔTÓ(QΔ?consume too much of your partition, because many system softwarÄ°dONLNd
  10351. |HÔTˆ(QÔe °dONLNd
  10352. ~TΔ`…(]ΔrE°dONLNd
  10353. T `t)$outines (especially many QuickDraw rn@°dONLNd
  10354. £Tt`
  10355. )™!outines) also use memory in your °dONLNd
  10356. ƒ`Δlx(iΔ*application partition. For a simple but ef≠¿°dONLNd
  10357. Ó`xl¸)≤fective memory-management °dONLNd lΔxÈ(uΔstrategyÄ°dONLNd lÈxG)#, see the chapter “Intrß¿°dONLNd 'lGxÒ)^"oduction to Memory Management” in nÄ°dONLNd IlÚx )´Inside °dONLNd PxΔÑ(ÅΔMacintosh: Memory√¿°dONLNd axÑ)Q7. For some advice on how to segment your application’s °dONLNd òÑΔêÎ(çΔBexecutable code to minimize its memory footprint, see the chapter °dONLNd ⁄êΔú.* “Segment Manager” in dONLNd Ôê.úÇ)hInside Macintosh: PrI`°dONLNd êÉúû)Uocesses=†°dONLNd
  10358. êüú°).ˇ@@ˇ ˇˇˇˇ@
  10359. ˇ·ˇ‚7^
  10360. 4⁄*˙¯, Palatino
  10361. .(·*186    3, Ã(#úAFTERK)BWORD 4^*¿¯,Zapf Dingbats°dONLNd_úf°(eún
  10362. °dONLNd\®h@) Interapplication Communication.5¿°dONLNd!\AhI)ô TÎÄ°dONLNd#\Hh√)o take full advantage of the °dONLNd@h®t0(q®cooperative multitasking envirhÄ°dONLNd^h0t^)à    onment pr߇°dONLNdgh^tÕ).ovided in system softwar4¿°dONLNdhŒt’)pe °dONLNdÅt®Ä(}®versions 7.0 and later¢Ä°dONLNdótÄ·)]1, your application should be able to communicate °dONLNd»Ä®å∞(â®efo‡°dONLNd Ä∞å≤):fectively with other open applications. The system softwar∏Ä°dONLNdÄ≤å√(â≤e pr…@°dONLNdÄ√å‚)ovides °dONLNdå®ò¡(ï®@several ways in which you can interact with other applications. ò°dONLNdOå¡ò«(ï¡YXÄ°dONLNdPå«òÊ)ou can °dONLNdWò®§fi(°®Fsupport the publish and subscribe capabilities of the Edition Manager °dONLNdù§®∞* (described earlier in 1Ä°dONLNd≥§∞›)[.“Interapplication Communication” beginning on °dONLNd·∞®ºø(π®page Z‡°dONLNdÊ∞¿º )14Z‡°dONLNdË∞ ºû)
  10363. 0) and you can support high-level events such as √ °dONLNd∞ûºÓ)‘Apple events. For °dONLNd*º®»Ü(≈®/complete details on how to communicate and shar◊`°dONLNdYºÜ»”)fie data with other °dONLNdk»®‘(—®applications, see the book £@°dONLNdÜ»‘Î)t0Inside Macintosh: Interapplication CommunicationÀ °dONLNd∂»ΑÌ)œ.°dONLNd∏›ú‰°(„ún
  10364. °dONLNd∫⁄®Ê») Sound.˛ °dONLNd¿⁄»Ê )  PÄ°dONLNd¡⁄ÀÊ—)Y°dONLNd¬⁄—Ê6)ou can enhance the perµ°dONLNdÿ⁄6Ê€)e&ceived quality of your application by °dONLNd˛Ê®Úº(Ô®apprI@°dONLNdÊΩÚË)Eopriately including sounds in its user interface. When, for example, °dONLNdGÚ®˛˙(˚®the user asks the V`†°dONLNdZÚ˙˛Δ)R,enn Diagrammer application to check the userm °dONLNdÜÚ«˛–)Õ’s °dONLNdⲮ
  10365. r(®,diagram, the application might play some agrk@°dONLNdµ˛r
  10366. Ô) eeable sound if the diagram °dONLNd—
  10367. ®√(®is corr¬¿°dONLNdÿ
  10368. √)ect and some discorË °dONLNdÎ
  10369. ∫)W"dant sound otherwise. Sound can pr¸ °dONLNd
  10370. ∫Í)† ovide user °dONLNd®"‘(®Efeedback that is not achievable using text and graphics alone. Other °dONLNd]"®.È* applications ar∏‡°dONLNdl"È.)Ae mor°dONLNdq".)e dir#¿°dONLNdv".s)ectly involved with r˘ °dONLNdã"r.Ñ)[ecormÄ°dONLNdè"Ö.±)
  10371. ding or pr`°dONLNdô"≤.ÿ)-oducing °dONLNd°.®:Œ(7®sound. T\Ä°dONLNd©.Œ:)&Co learn how to add sound capabilities to your application, see the °dONLNdÏ:®F·(C®chapter “Intry†°dONLNd˘:·FE)9oduction to Sound” in °dONLNd:FF™)eInside Macintosh: Sound†°dONLNd&:´F≠)e.°dONLNd(OúV°(Uún
  10372. °dONLNd*L®X¡) ColorÅ@°dONLNd/L¡X√).@°dONLNd0LƒX≈): Like sound, color might be either an enhancement to or a °dONLNdjX®d˝(a®fundamental featur‡°dONLNd|X˛d°)V%e of your application. For example, V‰ °dONLNd°X†dÌ)¢enn Diagrammer °dONLNd∞d®p(m®might allow the user to fiû‡°dONLNd dpB)o
  10373. ll empty r•‡°dONLNd‘dBpé)+egions with colorΔ†°dONLNdÂdépƒ)Led patterns. O‡°dONLNdÚd≈pÀ)7Y`°dONLNdÛdÀpÍ)ou can °dONLNd˙p®|<(y®use QuickDraw to draw shapes, rX¿°dONLNdp<|“)î#egions, and even text in any color °dONLNd<|®à„(Ö®Fsupported by the available video devices. For complete information on °dONLNdÇà®îÉ* 2supporting color in your application, see the appr◊‡°dONLNd¥àÉîÿ)€opriate chapters in Ô†°dONLNd»àÿîÚ)UInside °dONLNdœî®†˘(ù®Macintosh: ImagingR@°dONLNd·î˙†¸)R.
  10374. ≠*ª¯4Æ*ª¯,     Helvetica°dONLNd„Æú∂ª(¥úIMPORTÄ°dONLNdÈƪ∂À)ANT
  10375. ˇ·ˇ‚7^
  10376. °dONLNdÌπú≈¢(¬úY@Ä°dONLNdÓπ¢≈)ou don’t have to rÁÄ°dONLNdπ≈Ÿ)N7ead all of the books mentioned in this list to develop °dONLNd7≈ú—a(Œú+a Macintosh application. Which of the many s°dONLNdb≈b—ß)ΔInside MacintoshU°dONLNdr≈®—«)F books °dONLNdy—ú›H(⁄ú'you’ll need depends on the particular r⁄Ä°dONLNd†—H›_)¨equirÒ¿°dONLNd•—_›⁄)ements of your application. °dONLNd¡›úÈπ(Êú(The V,°dONLNd«›πÈÿ)?enn Diagrammer application, for instance, draws mainly on four °dONLNdÈúı—(Úú books only: ˝ °dONLNdÈ—ıO)5Inside Macintosh: Macintosh TO†°dONLNd/ÈOıì)~oolbox Essentials†°dONLNd@Èîıô)E, †°dONLNdBÈôı≥)Inside °dONLNdIıú›(˛úMacintosh: Mor°dONLNdWıfi)Be Macintosh T€ °dONLNddı/)8oolboxî °dONLNdjı05), î °dONLNdlı5¢)Inside Macintosh: Memory…`°dONLNdÑı°π)l, and 6Ä°dONLNdäı∫‘)Inside °dONLNdëúÌ(
  10377. úMacintosh: ImagingR@°dONLNd£Ó    )R.) MorU‡°dONLNd©    !)eover: °dONLNdÆ!≠)!, you don’t necessarily have to r놰dONLNdœ≠fl)åead all of a °dONLNd‹úf(ú.chapter to get started using a certain manager °dONLNd    
  10378. f∑) . Most chapters in ;`°dONLNd    ∑—)QInside °dONLNd    $ú%Δ("ú    MacintoshpÄ°dONLNd    -«%±)+8 contain advanced material that is likely to be of inter)‡°dONLNd    e≤%◊)Π   est only °dONLNd    n%ú1W(.ú*to developers with very specialized needs.°dONLNd    °(]0c)¡sˇD@ˇ ˇˇˇˇ@
  10379. ˇ·ˇ‚7^
  10380. 4⁄∫˙, Palatino
  10381. .(·187    3, Ã(#∫AFTERK)BWORD 4^H¿
  10382. ^Hx4^Hx
  10383. àHê4âHê äHä
  10384. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNduHà(ÉHMaintaining CompatibilityˇˇˇˇˇˇU˛(É9
  10385. °dONLNdô∫•˙(¢∫CompatibilityË¿°dONLNd'ô˙•∫)@/ is the ability of an application to execute pr熰dONLNdVôª•Ò)¡operly in dif °dONLNdcôÚ•˛)7ferˇ†°dONLNdfô˝•) ent °dONLNdj¶∫≤˛(Ø∫operating envir≠¿°dONLNdy¶˛≤¸)D9onments. Compatibility is important if you want to write °dONLNd≤≥∫ø€(º∫softwar‰¿°dONLNdπ≥€ø˙)!e that r„ °dONLNd¡≥˙øs)uns, with little or no modifi\†°dONLNdfi≥tøˆ)zcation, on all members of the °dONLNd¸¿∫Ãx(…∫*Macintosh family and in all system softwar2¿°dONLNd&¿yÃß)ø e versions.°dONLNd2“∫fiı(€∫GThe key to achieving compatibility is not to depend on things that may °dONLNdyfl∫Îfi*change. ο°dONLNdÅflfiÎ#)$Inside MacintoshÕ¿°dONLNdëfl$Îk)F contains numer˘ °dONLNd†flk΂)Gous warnings about which °dONLNdπÏ∫¯E(ı∫!information is likely to change. «°dONLNd⁄ÏE¯œ)ãAs the Operating System and T\‡°dONLNd˜Ïœ¯)äoolbox evolve °dONLNd˘∫(∫Ito accommodate the needs of developers and users, many of their elements °dONLNdN∫·*    will vary`°dONLNdW·?)'. Whenever possible, Í °dONLNdl>‰)]$Apple Computer strives to add featurr†°dONLNdêÂ)ßes °dONLNdì∫3(∫without altering existing pr¨°dONLNdØ3)y1ogramming interfaces. In general, you can assume °dONLNd‡ ∫,9()∫that Operating System and T
  10386. `°dONLNd˚ 9,])oolbox rHÄ°dONLNd ],à)$
  10387. outines ar ‡°dONLNd â,),e less likely to change than °dONLNd*-∫9€(6∫data strº °dONLNd2-€9Ú)!ucturB°dONLNd7-Û9)es. Ther…`°dONLNd?-9&)"efor!`°dONLNdC-'9ç)e, you should never dirÃÄ°dONLNdZ-ç9Ô)fectly manipulate data °dONLNdp:∫F≈(C∫strfi°dONLNds:≈F‹) ucturc‡°dONLNdx:›F)
  10388. es that arÖ†°dONLNdÇ:Fº)()e internal to a manager or system softwar†°dONLNd´:ºF«)∑e rƆ°dONLNdÆ:«F) outine, even if °dONLNdæG∫S‹(P∫    their str`°dONLNd«G›SÙ)#ucturú@°dONLNdÃGÙSÍ)6e is documented. Instead, you should manipulate those °dONLNdT∫`≈(]∫strfi°dONLNdT≈`‹) ucturc‡°dONLNd
  10389. T›`)es only indir´¿°dONLNdT`()7ectlyÉ¿°dONLNdT(`Δ)#, by calling Operating System and Tÿ†°dONLNd?T≈`È)ùoolbox r¿°dONLNdGTÍ` )%outines °dONLNdOa∫m(j∫that achieve the desirf¿°dONLNdeam-)^ed efº°dONLNdja-mx)fect. In particularÄ°dONLNd}axmˆ)K, you should never alter any °dONLNdön∫z(w∫portion of a data str·`°dONLNdØnz()Wucturg@°dONLNd¥n)zî)e marked as unused or rX °dONLNdÀnîz∏)keserved.°dONLNd‘Ä∫åÃ(â∫=Another key to writing compatible code is to code defensivelyî °dONLNdÄÀå(âÀ. Do not assume °dONLNd!ç∫ôz(ñ∫-that users perform actions in a particular orf‡°dONLNdNçzôà)¿derÅÄ°dONLNdQçàôˆ), and do not assume that °dONLNdjö∫¶˛(£∫function and prBÄ°dONLNdyöˇ¶)EocedurŸ¿°dONLNdö¶É)e calls always succeed. R‡°dONLNdóöѶä)gY`°dONLNdòö䶽)ou should always test the °dONLNd≤ß∫≥Ω(∞∫rE°dONLNd≥ßæ≥)eturn values of rΔ‡°dONLNdƒß≥D)Houtines for errÉÄ°dONLNd”ßE≥)?0ors, as illustrated in most of the code samples °dONLNd¥∫¿√(Ω∫prG °dONLNd¥ƒ¿)
  10390. esented in this book.°dONLNdΔ∫“À(œ∫Her`°dONLNdΔÀ“€)e arn†°dONLNd"Δ€“)
  10391. e some morñ‡°dONLNd,Δ“1)3e specifiN†°dONLNd5Δ2“)$/c guidelines to keep in mind as you write your °dONLNdd”∫flÓ(‹∫ application:,Zapf Dingbats°dONLNdqÈ∫ø*n
  10392. °dONLNdsÊΔÚ˘)
  10393. Never addrwÄ°dONLNd}Ê˘Ú)3ess har—Ä°dONLNdÑÊÚ.)dwar    @°dONLNdàÊ/ÚC)e dir°dONLNdçÊCÚ⁄)#ectly; whenever possible, use the rC°dONLNd∞Ê⁄Ú¸)óoutines °dONLNd∏ÚΔ˛œ(˚ΔprG °dONLNd∫Ú–˛    )
  10394. Fovided by the various device drivers and managers to send data to the °dONLNd˛Δ
  10395. ˛(Δavailable harG°dONLNd˛ˇ
  10396. )9dwar~¿°dONLNd˛
  10397. H) e. The addrĆ°dONLNd˛H
  10398.  )2esses of memory-mapped har%°dONLNd6˛À
  10399. ‚)Édwar\¿°dONLNd:˛‚
  10400. Ú)e ark`°dONLNd>˛Ú
  10401. ˘)e °dONLNd@
  10402. Δl(Δ'always subject to change, as is the har$°dONLNdg
  10403. mÑ)ßdwar[¿°dONLNdk
  10404. Ñ∏)e itself. Mor¬¿°dONLNdx
  10405. ∏˝)4e important, dirR@°dONLNdà
  10406. ˛ )Fect °dONLNdåΔ"(Δaccess to such har¯ °dONLNdû"+)Ndwar/‡°dONLNd¢,"fl)*e is not possible in every operating envir^Ä°dONLNdÃfl")≥ onment. In °dONLNd◊"Δ./(+Δmulti-user systems like 3¿°dONLNdÔ"/.Á)i)A/UX, for instance, the operating system °dONLNd.Δ:(7Δmanipulates all harØÄ°dONLNd+.:2)UdwarÁ@°dONLNd/.2:‹)'e; applications simply cannot write dirÈ¿°dONLNdV.‹:˛)™    ectly to °dONLNd_:ΔF‘(CΔhar`°dONLNdb:’FÏ)dwarN °dONLNdf:ÏF)e addrî@°dONLNdl:F )esses.°dONLNdsO∫Vø(U∫n
  10407. °dONLNduLΔXÕ) A\@°dONLNdvLÕX)void writing dirÄ°dONLNdÜLXS)Gectly to the scr}¿°dONLNdñLSX¥)?een. Use QuickDraw rF‡°dONLNd™LµX)boutines whenever °dONLNdªXΔd<(aΔpossible to draw on the scr«`°dONLNd÷X<d‹)v%een. If you absolutely must write dirx‡°dONLNd˚X›d)°ectly to the °dONLNd    dΔp“(mΔscrÚ@°dONLNd     d“pY) een, do not assume that the scrµ‡°dONLNd    *dZpÉ)à
  10408. een is a fiÆ°dONLNd    5dÉpÛ))xed size or that it is in a fiûÄ°dONLNd    SdÙp)qxed °dONLNd    WpΔ|¶(yΔ6location. The location, size, and bit depth of the scr^°dONLNd    çp¶|ƒ)‡een difm°dONLNd    îpƒ|)fer in various °dONLNd    £|ΔàÚ(ÖΔ    machines.ˇˆ@ˇ ˇˇˇˇ@
  10409. ˇ·ˇ‚7^
  10410. 4⁄*˙¯, Palatino
  10411. .(·*188    3, Ã(#úAFTERK)BWORD 4^*¿¯,Zapf Dingbats°dONLNd_úf°(eún
  10412. °dONLNd\®h«) Don’t r“¿°dONLNd    \«h≈):ely on system global variables. Many of these variables arÿ¿°dONLNdC\≈hÃ)˛e °dONLNdEh®tÌ(q®documented in Ÿ °dONLNdShÌt5)EInside Macintosh,; °dONLNddh6tn)I  but many arÖ¿°dONLNdphntø)8e not. In particularΩ°dONLNdÑhøt)Q , you must °dONLNdèt®Ä∑(}®:avoid undocumented system global variables because they ar÷Ä°dONLNd…t∑ÄÒ(}∑e most likely °dONLNd◊Ä®å‚(â®Eto change. But you should try to avoid even well-known system global °dONLNdå®òõ* 8variables because they may not be available in all envirõ°dONLNdTåõòÎ)Ûonments or in the °dONLNdfò®§æ(°®futurÈÄ°dONLNdkòæ§Á)De. In general, you can avoid using system global variables by using °dONLNdا®∞÷(≠® available ru†°dONLNd∫§÷∞).outines that r °dONLNd»§∞fi);.eturn the same information. (For example, the ,
  10413. CourierˇˇKd.°dONLNdˆ∞®ºfi(π®    TickCountˇˇ√ðdONLNdˇ∞fiº    )6  function rŸ¯°dONLNd
  10414. ∞    º˜)+6eturns the same value that is contained in the system °dONLNd@º®»Ò(≈®global variable °dONLNdPºÒ»)ITicks°dONLNdUº»).)
  10415. Œ*ȯ4œ*ȯ
  10416. ˘*¯4˙*¯ ˚*˚˛
  10417. ˇ·ˇ‚7^ˇˇ©.ˇÆ°dONLNdXÊ*˘e(Ù*Making h˚°dONLNd_Êf˘p)<Y⁄ì°dONLNd`Êo˘ã)    our ^‚°dONLNddÊå˘ò)ABí°dONLNdeÊô˘‡)
  10418. pplicationÈI°dONLNdoÊ·˘6)H  LocalizableˇˇˇˇˇˇU˛(Ù9
  10419. °dONLNd|
  10420. ú‘(ú LocalizationïÄ°dONLNdà
  10421. ‘˙)8
  10422.  is the prfl`°dONLNdí
  10423. ˙π)&,ocess of adapting an application to a specifi©Ä°dONLNdø
  10424. ∫Ó)¿ c language, °dONLNdÀú#∂( úculturÓ@°dONLNd—∂#◊)e, and rÍ°dONLNdŸ◊#ª)!2egion. By planning ahead and making localization r`°dONLNd º#‰)Â
  10425. elatively °dONLNd$ú0˘(-úpainless, you’ll ensur/¿°dONLNd+$˙06)^e that your prï°dONLNd9$60_)<
  10426. oduct is r `°dONLNdC$_0Ú))"eady for international markets in °dONLNde1ú=¬(:ú    the futurF‡°dONLNdn1√=)'e. This section pr◊†°dONLNdÄ1=Î)J2ovides a brief overview of what you need to do to °dONLNd≤>úJÛ(GúOmake it easy to localize your application. For the complete account of writing °dONLNdKúWΩ*softwar‰¿°dONLNdKΩWõ)!1e that is compatible with Macintosh computers thrZ °dONLNd9KúWÙ)floughout the world, °dONLNdLXúd¨(aúsee –@°dONLNdPX¨d¸)Inside Macintosh: T≤@°dONLNdcX¸d)PextÈ¿°dONLNdfXd)  and ÷‡°dONLNdkXdê)Guide to Macintosh SoftwarˆÄ°dONLNdÖXêd…)re Localization.°dONLNdïjúv>(sú'The key to easy localization is to storò‡°dONLNdºj>vI)¢e rßÄ°dONLNdøjIvÛ) $egion-dependent information used by °dONLNd„wúɘ(Äúyour application as r∑@°dONLNd¯w˜É)[esourˇÄ°dONLNd˝wɉ)2ces (rather than within the application’s code). Tl °dONLNd/w‰ÉÛ)’ext °dONLNd3Ñúê’(çúGseen by the user can then be translated without modifying the code. In °dONLNdzëúùE*'addition, storing such information in r¿°dONLNd°ëFù^)™esourJ°dONLNd¶ë^ùÏ) ces means that your application °dONLNdΔûú™(ßúcan be adapted for a dif懰dONLNdfiû™)hfer°`°dONLNd·û™)) ent ar√¿°dONLNdÁû)™‰)+ea of the world simply by substituting the °dONLNd´ú∑∞(¥úapprI@°dONLNd´±∑÷)    opriate rχ°dONLNd´÷∑Ó)%esour5 °dONLNd$´Ô∑*)ces. Make sur °dONLNd1´+∑À)<'e that at least the following kinds of °dONLNdX∏úƒ‹(¡úinformation arÄ`°dONLNdf∏‹ƒÙ)@e storɇ°dONLNdl∏Ùƒ)ed in rË°dONLNds∏ƒ()esour0@°dONLNdx∏)ƒ8)ces:°dONLNd}Œú’°(‘ún
  10427. °dONLNdÀ®◊à) 5all text, including special characters and delimiters°dONLNdµ‡úÁ°(Êún
  10428. °dONLNd∑›®Èˇ) menus and keyboar @°dONLNd»›ˇÈ“)W.d equivalents for menu commands (if available)°dONLNd˜Úú˘°(¯ún
  10429. °dONLNd˘Ô®˚–)     charactere¿°dONLNdÔ–˚Ê)(, wor˜@°dONLNdÔÊ˚Ü)&d, phrase, and text translation tables°dONLNd.ú °(
  10430. ún
  10431. °dONLNd0®Ω) addr|Ä°dONLNd4Ωµ)6ess formats, including zip codes and telephone numbers°dONLNdkú‘(ú When you cr-`°dONLNdv’Ì)9eate rH°dONLNd|Ì)esourê@°dONLNdÅz)ces for your applications, r˙`°dONLNdùzı)uemember the following key °dONLNd∑ú+∫((úpoints:°dONLNdø5ú<°*n
  10432. °dONLNd¡2®>€) text needs ry`°dONLNdÕ2€>)3    oom to grD`°dONLNd÷2>â)+ow (up, down, and sideways)°dONLNdÚD®L≠(J®n
  10433. °dONLNdÙA¥M3) translated text is often 50 per'`°dONLNdA4MT)Äcent lar¢`°dONLNdATM÷) ger than the U.S. English text °dONLNd;S®[≠(Y®n
  10434. °dONLNd=P¥\Ù) Hdiacritical marks, widely used outside the United States, may extend up °dONLNdÖ\¥h˛* to the ascent line°dONLNdòn®v≠(t®n
  10435. °dONLNdök¥wô) 4some system fonts contain characters that extend to ` °dONLNdŒköw´)Êboth≈@°dONLNd“k´wÔ) the ascent and °dONLNd‚w¥ÉÏ(Ä¥descent lines°dONLNdåúì°(íún
  10436. °dONLNdÚâ®ïù) 6text location within a window should be easy to changeˇº@ˇ ˇˇˇˇ@
  10437. ˇ·ˇ‚7^
  10438. 4⁄∫˙, Palatino
  10439. .(·189    3, Ã(#∫AFTERK)BWORD 4^H¿
  10440. ^Hx4^Hx
  10441. àHê4âHê äHä
  10442. ˇ·ˇ‚7^ˇˇ©ˇÆ°dONLNduHà(ÉHUsing Developer ServicesˇˇˇˇˇˇU˛(É9
  10443. °dONLNdô∫•    (¢∫In addition to the ÷†°dONLNd,ô    •N)OInside Macintosh∏†°dONLNd<ôO•ú)F library of books, Ø °dONLNdOôú•Û)MApple Computer pr\ °dONLNd`ôÙ•)Xovides °dONLNdg¶∫≤≤(Ø∫8a number of other services that you can use to learn morΆ°dONLNdü¶≤≤fl)¯
  10444. e about pr√°dONLNd©¶fl≤)-
  10445. ogramming °dONLNd≥≥∫øü(º∫1for Macintosh computers and simplify your softwarü†°dONLNd‰≥üøÌ)Âe development pró°dONLNdÙ≥Ìø    )Nocess. °dONLNd˚¿∫ô(…∫8Apple’s goal in making these services available is to pr @°dONLNd3¿¨Ã)Úovide you with the °dONLNdFÕ∫ŸΩ(÷∫rE°dONLNdGÕæŸ÷)esourç@°dONLNdLÕ÷Ÿ%)ces you need to cr}`°dONLNd^Õ%Ÿ˘)O/eate outstanding Macintosh applications. These °dONLNdç⁄∫Ê(„∫services include,Zapf Dingbats°dONLNdû∫˜ø*n
  10446. °dONLNd†ÌΔ˘p) &books and other technical publications°dONLNd«∫    ø(∫n
  10447. °dONLNd…ˇΔ œ) prG °dONLNdÀˇ– ^)
  10448. ogramming languages and tools°dONLNdÈ∫ø(∫n
  10449. °dONLNdÎΔœ) prG °dONLNdÌ–∏)
  10450. 3ogramming classes and self-paced training materials°dONLNd!&∫-ø(,∫n
  10451. °dONLNd##Δ/·) confer†°dONLNd)#‚/A)ences and workshops°dONLNd=8∫?ø(>∫n
  10452. °dONLNd?5ΔA) technical support°dONLNdQF∫R(O∫Most of these prfi†°dONLNdaFRb)Goducts and services aróÄ°dONLNdwFcR◊)be available to anyone inter≈`°dONLNdíF◊R˚)t    ested in °dONLNdõS∫_√(\∫prG °dONLNdùSƒ_n)
  10453. #ogramming for Macintosh computers. °¿°dONLNd¿Sn_t)™Yb@°dONLNd¡St_)"ou can get information about them °dONLNd„`∫l¯(i∫by contacting -`°dONLNdÒ`¯l)>APDA, $`°dONLNd˜`lR)" Apple’s sour§¿°dONLNd`Rl·)8"ce for developer tools. See the Pr]‡°dONLNd%`‚l˙)êeface °dONLNd+m∫yΩ(v∫(”‡°dONLNd,mΩy‘)page Æ¿°dONLNd1m’yfl)xv}†°dONLNd3m‡y„) )—Ä°dONLNd4m„yR) for details on contacting  Ä°dONLNdOmSyr)pAPDA.°dONLNdU∫ã(à∫Some of the services x`°dONLNdjã()\just ’†°dONLNdo(ãÄ)listed—in particular˘`°dONLNdÉÄãÁ)X, technical support and °dONLNdõå∫ò[(ï∫$invitations to some developer conferÃÄ°dONLNdøå[òÕ)°ences and workshops—ar°¿°dONLNd’åÕòfi)re pr≤Ä°dONLNdŸåfiò) ovided only °dONLNdÂô∫• (¢∫to members of the r¿°dONLNd˜ô •))RApple ‡°dONLNd˝ô*•ü)Associates and Partners PrØ@°dONLNdôü•    )uogram. For information °dONLNd.¶∫≤’(Ø∫about Ë@°dONLNd4¶’≤))Apple’s support pr$°dONLNdF¶*≤Å)Uograms for commer†°dONLNdW¶Å≤Í)Wcial developers, call the °dONLNdq≥∫øÇ(º∫-Developer Hotline at (408) 974-4897. These prOÄ°dONLNdû≥ÉøØ)…    ograms arú¿°dONLNdß≥ØøÎ),e available to °dONLNd∂¿∫Ãë(…∫/developers in the United States and Canada onlyM`°dONLNd¿ëÃì)◊.
  10454. ÒH¯4ÚH¯ Û∫ÛF
  10455. ˇ·ˇ‚7^,     Helveticaˇˇ‹.ˇ◊°dONLNdÁ‚∫Ò¬(Ì∫T\.°dONLNdË‚¡Ò@)echnical Publicationsˇˇˇˇˇˇ€r(Ì9
  10456. °dONLNd˛¯∫·(∫Apple prD†°dONLNd¯‚˚)(Aovides a number of technical publications that can assist you in °dONLNdG∫Z(∫#writing Macintosh applications. Herv†°dONLNdjZ”)†e’s a brief description of thr» °dONLNdà”)yee books that °dONLNdñ∫‡(∫    you’ll prj‡°dONLNdü‡F)&obably need right now:°dONLNd∂(∫/ø(.∫n
  10457. °dONLNd∏%Δ1h) %Macintosh Human Interface Guidelines.†°dONLNd›%i1k)£ 1@°dONLNdfi%k1r)Ak‡°dONLNdfl%r1Ô) complete description of the èÄ°dONLNd¸%Ô1 )}Apple °dONLNd1Δ=/(:ΔDesktop Interface and a∂`°dONLNd1/={)in indispensable s”`°dONLNd*1{=)Let of guidelines governing the °dONLNdI=ΔIØ(FΔ3appearance and behavior of Macintosh applications. «`°dONLNd|=ØIµ)ÈYᇰdONLNd}=µI)ou will need this °dONLNdèIΔU(RΔbook to ensur›¿°dONLNdúIUÍ)<5e that your application conforms to those guidelines.°dONLNd“^∫eø(d∫n
  10458. °dONLNd‘[ΔgÃ) T°dONLNd’[Àg˛)echnical IntrÇ °dONLNd‚[˛gÜ)3 oduction to the Macintosh Family”`°dONLNd[Ögä)á. u°dONLNd[ägë)A؆°dONLNd[ëgΔ) general intr?Ä°dONLNd[«g )6oduction to the °dONLNd"gΔs–(pΔ:family of Macintosh computers, with emphasis on the featur, °dONLNd\g—s(p—es that make it °dONLNdlsΔÊ(|ΔBa desirable platform for application developers. This book also prÄ°dONLNdÆsÁ(|Áovides °dONLNdµΔã3(àΔdetails on Macintosh harx@°dONLNdÕ3ãJ)mdwar∞°dONLNd—Jãr)    e and on œ@°dONLNd⁄rãì)(A/UX, ∫ °dONLNd‡ìãˆ)!Apple’s version of the °dONLNd˜ãΔó‡(îΔUNIX† °dONLNd    â‡íÂ(ꇮ
  10459. ô@°dONLNd ãÊó7+ operating system.ˇî@ˇ ˇˇˇˇ@
  10460. ˇ·ˇ‚7^
  10461. 4⁄*˙¯, Palatino
  10462. .(·*190    3, Ã(#úAFTERK)BWORD 4^*¿¯,Zapf Dingbats°dONLNd_úf°(eún
  10463. °dONLNd\®h) Guide to Macintosh Softwarü†°dONLNd\hQ)re Localization@°dONLNd*\RhW)8. ؇°dONLNd,\Vh])AÍÄ°dONLNd-\]h†) guide to the pr™‡°dONLNd=\°hÛ)Docess of localizing °dONLNdQh®t˝(q®application softwar†°dONLNddh˛t)Ve for Macintosh computers ar `°dONLNdÄht…)Åound the world. ß °dONLNdêh…tœ)JYg†°dONLNdëhœtÂ)ou’ll °dONLNdót®Ä–(}®    want to rg†°dONLNd†t–Ä”)(:ead this book for essential information about making your °dONLNd⁄Ä®å±(â®prG °dONLNd‹Ä≤å˙)
  10464. oduct marketabl„‡°dONLNdÎÄ˙å4)H e worldwide.°dONLNd¯ëúù¡(öú    If you ar °dONLNdë¬ù÷)&e an ?¿°dONLNdë÷ùÛ)Apple fi‡°dONLNd ëÛùL)Associate or Partnerq@°dONLNd ëLù∞)Y, you’ll automatically rg‡°dONLNd8ë∞ù’)d    eceive a °dONLNdAûú™‡(ßúsubscription to ˇ†°dONLNdQû‡™4)Ddevelop, The Apple T‡¿°dONLNdeû4™u)Technical JournalÛÄ°dONLNduûu™)A. This magazine is intended °dONLNdë´ú∑˛(¥úto complement other r·†°dONLNd¶´˛∑)beferç¿°dONLNd™´∑c)ence materials like ÏÄ°dONLNdæ´c∑®)TInside MacintoshŒÄ°dONLNdŒ´©∑Ù)F. It doesn’t try to °dONLNd‚∏úƒü(¡úrE°dONLNd„∏†ƒŒ) eplace or r` °dONLNdÓ∏Œƒ‰).eworª@°dONLNdÚ∏‰ƒÔ)=d those books; instead, it’s designed to help you understand °dONLNd/≈ú—Ë(ŒúLthem by illustrating some of the techniques they describe. For subscription °dONLNd{“úfiı*information, contact°dONLNdê‰úπ*develop°dONLNdòÒú˝Á*Apple Computer(Ä°dONLNd¶ÒÁ˝˛)K, Inc. °dONLNdÆ˛ú
  10465. ¢(úP?†°dONLNdØ˛°
  10466. “) .O. Box 531°dONLNdª úË(úMount Morris, IL‡°dONLNdÀ È)M  61054-7858
  10467. z*ů4{*ů |ú|(
  10468. ˇ·ˇ‚7^,     Helveticaˇˇ‹.ˇ◊°dONLNdHkúz§(vúTeN°dONLNdIk§zÕ)rainingˇˇˇˇˇˇ€r(v9
  10469. °dONLNdQÅúç$(äúApple Developer University of†°dONLNdnÅ%çH)â    fers a br†`°dONLNdwÅHçº)#oad range of Macintosh prD`°dONLNdêÅΩçÛ)u
  10470. ogramming °dONLNdöéúö∞(óúinstró¿°dONLNdüé∞ö€)
  10471. uction thrŸÄ°dONLNd©é€ö≥)+0ough hands-on classes and self-paced training prÄ°dONLNdŸé¥ö÷)Ÿoducts. °dONLNd·õúß«(§ú
  10472. Classes arE°dONLNdÎõ»ßÿ),e of*`°dONLNdÔõÿ߉)fer ‡°dONLNdÚõ‰ß9) ed in Cupertino, at ^ °dONLNdõ9ßÙ)U+Apple training facilities worldwide, on an °dONLNd1®ú¥˜(±úon-site basis, and thr¸°dONLNdG®˜¥F)[ough selected thir͇°dONLNdY®F¥L)Od†°dONLNdZ®M¥P)-ZÄ°dONLNd[®P¥fi)party University and Corporate °dONLNdzµú¡¿(æú    trainers.°dONLNdÑ«ú”*Developer University pr4Ä°dONLNdõ«”Z)lovides expert instre¿°dONLNdÆ«Z”Ï)R#uction for all levels of Macintosh °dONLNd—‘ú‡•(›úprG °dONLNd”‘¶‡=)
  10473.  ogrammers. These course teach pr‡°dONLNdÛ‘=‡á)óogrammers to pr4`°dONLNd‘ᇡ)Joduce fast, efI¿°dONLNd‘¡‡«):fiVÄ°dONLNd‘«‡ˆ) cient code °dONLNd·úÌ|(Íú/that takes maximum advantage of the Macintosh T2‡°dONLNdL·|Ìfl)‡oolbox and Operating °dONLNdaÓú˙æ(˜úSystem.°dONLNdiú Ì*IApple Developer University is open to all individuals worldwide who have °dONLNd≤úæ*an inter\ °dONLNd∫æt)"(est in mastering leading-edge technologyT‡°dONLNd‚s~)µ. T䆰dONLNdÂ}à)
  10474. o rE °dONLNdËâÎ) eserve your place in a °dONLNdˇú&y(#ú5class, schedule an on-site training class, or for morJ °dONLNd4z&⁄)fie information, contact°dONLNdK,ú8π(5úApple }Ä°dONLNdQ,∫8")Developer University T•†°dONLNdg,!8k)graining Registrar°dONLNdy9úEÁ(BúApple Computer(Ä°dONLNdá9ÁE˛)K, Inc. °dONLNdèFúR›(Oú20525 Mariani +†°dONLNdùF›R‰)AA‡°dONLNdûF‰Rˇ)venue°dONLNd§Sú_Õ(\ú    M/S 75-6U°dONLNdÆ`úl›*Cupertino, CA¿°dONLNdª`›l¯)A 95014°dONLNd÷ú)¢(&úTµ¿°dONLNd◊°)…)elephoneb °dONLNd‡‡)\)?800-877-5548 (United States)b °dONLNd˝(‡4t* "815-734-6309 (All other countries)°dONLNd!8úD´(AúFaxb °dONLNd%8‡D)D 815-734-4205°dONLNd3HúTÀ(Qú    AppleLinkb °dONLNd=H‡Tı)DDEV)@°dONLNd@HÙT).SUBS°dONLNd¡rú~¢({úTµ¿°dONLNd¬r°~…)elephoneb °dONLNdÀr‡~\)?408-974-6215 (United States)°dONLNdÈÇúé´(ãúFaxb °dONLNdÌLJé)D408-974-0544 °dONLNd¸íúûÀ(õú    AppleLinkb °dONLNdí‡û)DDEVUNIVˇ¢@ˇ ˇˇˇˇ@
  10475. ˇ·ˇ‚7^
  10476. 4⁄∫˙, Palatino
  10477. .(·191    3, Ã(#∫AFTERK)BWORD 4^H¿
  10478. kHr4lHr m∫mF
  10479. ˇ·ˇ‚7^,     Helveticaˇˇ‹.ˇ◊°dONLNd\∫k¬(g∫T\.°dONLNd\¡k')echnical Supportˇˇˇˇˇˇ€r(g9
  10480. °dONLNdr∫~fl({∫    If you ar °dONLNdr‡~Ù)&e an ?¿°dONLNd rÙ~)Apple fi‡°dONLNd&r~j)Associate or Partnerq@°dONLNd:rj~ )Y', you’ll have access to various levels °dONLNda∫ã(à∫of technical support fr5 °dONLNdxã,)bom †@°dONLNd{,ãc) Apple. Both ‰`°dONLNdácã“)7Associates and Partners rx °dONLNd†”ã)peceive °dONLNdßå∫òw(ï∫*monthly mailings that include a newsletterä`°dONLNd—åwò|)Ω, ,°dONLNd”å|òÌ)Apple II and Macintosh TÓ‡°dONLNdÎåÏò)p    echnical °dONLNdÙô∫•>(¢∫Notes, pertinent Developer Pr‡°dONLNdô?•Û)Ö(ograms information, and the latest news °dONLNd9¶∫≤Ω(Ø∫rE°dONLNd:¶æ≤È) elating to €¿°dONLNdE¶È≤)+Apple pr†`°dONLNdM¶≤)(;oducts. Mailings also usually include the latest developer °dONLNdà≥∫øq(º∫%CD-ROM, which contains system softwar∑¿°dONLNd≠≥qøÑ)∑e, prHÄ°dONLNd≤≥Öø¯)ogramming utilities, code °dONLNdÿ∫ÃÒ(…∫Fsamples illustrating how to use various parts of the Macintosh system °dONLNdÕ∫Ÿ€*softwar‰¿°dONLNdÕ€Ÿ≥)!2e, and the latest on-line technical documentation.°dONLNdLfl∫Î(Ë∫In addition, c°dONLNdYflÎ9)6Apple Partners rÆ¿°dONLNdifl9Îë)Ieceive discounts on Ò¿°dONLNd}flëÎÙ)XApple equipment and °dONLNdëÏ∫¯(ı∫technical assistance fr‡°dONLNd®Ï¯I)_ om the staf≤`°dONLNd≥ÏJ¯[)1f of q@°dONLNd∏Ï[¯∂)Apple’s Developer T;¿°dONLNdÀÏ∂¯˝)[echnical Suppor冰dONLNd⁄Ï˝¯)Gt °dONLNd‹˘∫(∫ department.ˇJ@ˇ ˇˇˇˇ@
  10481. ˇ·ˇ‚7^
  10482. 4^*¿¯ˇ!å@ˇ ˇˇˇˇ@
  10483. ˇ·ˇ‚7^
  10484. 4⁄ä˙
  10485. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10486. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10487.  
  10488.  
  10489.  
  10490.  
  10491.  
  10492. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  10493. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10494. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10495.  
  10496.  
  10497.  
  10498.  
  10499.  
  10500. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@$˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  10501. 4^H¿, Palatinoˇˇ∫Î.ˇ◊°dONLNd\äx+äp
  10502. Appendixes
  10503. ÑH$4ÖH$ H
  10504. ˇ·ˇ‚7^
  10505. °dONLNd %ä1–*æThe following fi¯°dONLNd%–1)Fve appendixes pr†°dONLNd+%1w)Movide complete sour„†°dONLNd>%v1 )Y%ce code listings of the parts of the °dONLNdc2ä>ë(;äVú`°dONLNdd2ê>k).enn Diagrammer application whose operations ar@°dONLNdí2l>)‹%e explained in this book. For clarity≤°dONLNd∑2> )ö, °dONLNdπ?äKÆ(Häthe sour\°dONLNd¡?ÆK)$ce code is divided into fi†°dONLNd€?K?)l    ve parts:,Zapf Dingbats°dONLNdÂUä\è([än
  10506. °dONLNdÁRñ^≈)     Appendix 4‡°dONLNdR≈^)/A, “Constants, Td‡°dONLNdR^A)H ypes, and V∑°dONLNd R@^g)3    ariables”†°dONLNdRh^©)(, beginning on ‡°dONLNd#R™^¡)Bpage fi¿°dONLNd(R¡^–)195fi¿°dONLNd+R–^Â), defi–‡°dONLNd1RÊ^)nes the °dONLNd9^ñjè(gñ9constants, data types, and global variables used by the V;†°dONLNdr^èj)˘enn Diagrammer application°dONLNdçsäzè(yän
  10507. °dONLNdèpñ| ) Appendix B, “Utility Routines”†°dONLNd≠p |a)ä, beginning on ·°dONLNdºpb|y)Bpage Δ¿°dONLNd¡pz|â)199Δ¿°dONLNdƒpâ|û), defi∏‡°dONLNd pü|)nes a number of utility °dONLNd‚|ñàü(ÖñprG °dONLNd‰|†àæ)
  10508. ocedurfi`°dONLNdÍ|æàB)es and functions used by the r°dONLNd|Cà™)Öemaining code samples°dONLNdëäòè(óän
  10509. °dONLNd éñö) Appendix C, “Dialog Code”.¿°dONLNd9éöT)}, beginning on *°dONLNdHéUöl)Bpage ‡°dONLNdMémö|)205‡°dONLNdPé|öë), defi˜°dONLNdVéëö‰)nes a handful of pra`°dONLNdiéÂö)Tocedur¯†°dONLNdoéö)es °dONLNdröñ¶(£ñthat manage dialog boxes°dONLNdãØä∂è(µän
  10510. °dONLNdç¨ñ∏ı) Appendix D, “ResourF¿°dONLNd†¨ˆ∏)`ce Code”rÄ°dONLNd®¨∏_)(, beginning on m¿°dONLNd∑¨`∏w)Bpage H†°dONLNdº¨x∏Ç)21º°dONLNdæ¨Å∏Ü)    1º°dONLNdø¨Ü∏Œ), shows how to rn†°dONLNdœ¨œ∏)Iead and write a °dONLNdfl∏ñƒ(¡ñsimple set of application prΩ‡°dONLNd˚∏ƒ)xeferj°dONLNdˇ∏ƒ7)ences°dONLNdÕä‘è(”än
  10511. °dONLNd ñ÷2) !Appendix E, “User Interface Code”ù†°dONLNd( 2÷s)ú, beginning on ò‡°dONLNd7 t÷ã)Bpage s¿°dONLNd< å÷õ)217s¿°dONLNd? õ÷˙), shows the code that °dONLNdU÷ñ‚—(flñGmanages the basic application setup, event handling, and user interface°dONLNdùÁäÛ›(äCode that is specifi[Ä°dONLNd±ÁfiÛ!)Tc to handling V¿°dONLNd¿Á!Û†)Cenn diagrams (such as the prN °dONLNd‹Á†Ûæ)ocedurÂ`°dONLNd‚ÁæÛ)es that handle the °dONLNdıÙäê(˝äfiå¿°dONLNd˜Ùê£)rst fiãÄ°dONLNd˝Ù§")ve menu commands in the V\‡°dONLNdÙ"≈)~$enn menu) is not shown in this book.
  10512. H4H,     Helvetica°dONLNd;ä©(äIMPORTÄ°dONLNdA©π)ANT
  10513. ˇ·ˇ‚7^
  10514. °dONLNdEä&Ï(#äAs explained in the pr^`°dONLNd[Ï&{)b#eface to this book, this code is prô@°dONLNd~{&´)è ovided for °dONLNdâ&ä2(/äexplanatory purposes only¡Ä°dONLNd¢&ˇ2¿)u,. The code listed in these appendixes might °dONLNdŒ2ä>º(;ä not be appr#¿°dONLNdŸ2Ω>ü)35opriate for the particular needs of your application.…†°dONLNdˇˇ)ÁsˇT@ˇ ˇˇˇˇ@
  10515. ˇ·ˇ‚7^
  10516. 4⁄*˙¯4^*¿¯ˇ+@ˇ ˇˇˇˇ@
  10517. ˇ·ˇ‚7^, Palatino    3,. Ã+ä#    APPENDIX Vø)sA
  10518. 4⁄ä˙
  10519. (‡195
  10520. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10521. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10522.  
  10523.  
  10524.  
  10525.  
  10526.  
  10527. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  10528. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10529. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10530.  
  10531.  
  10532.  
  10533.  
  10534.  
  10535. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜ˇˇ˚˝ˇ˝˝¸ˇ˝¸ˇ˝ˇ˝ˇˇ˚˜˜˜˜˜˜˜˜˜˜˜˜
  10536. 4Å4w?òÄ
  10537. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10538. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10539.  
  10540.  
  10541.  
  10542.  
  10543.  
  10544. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˝˛ˇ˛
  10545. ˛ˇ˛ˇˇ    ˇ¸ˇ    ˇ¸ˇ
  10546. ˛ˇ˛ˇˇ˜˛˛ˇ˝
  10547. ˇ˛ˇ˛
  10548. ˇ˛ˇ˛˛˛ˇ˝˜˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜    ˇˇ˝
  10549. ˇˇˇ˛
  10550. ˇˇˇ˛    ˛ˇˇ˛˛¸ˇˇ
  10551. ˇ˛ˇ˛˜˛ˇˇ˝
  10552. ˇˇˇ˛
  10553. ˇˇˇ˛˛˛ˇ˝ˇ˙¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛¸ˇˇ
  10554. ˇ˛ˇ˛    ˇˇ˝
  10555. ˇˇˇ˛
  10556. ˇˇˇ˛    ˛ˇˇ˛˜ˇ¯ˇˇ˙˜˜˘ˇ˘ˇ˙ˇ˘ˇ˘ˇ¸ˇˇ˛ˇˇˇ¸ˇˇ˙˛ˇˇ¸¸ˇˇ˛˙ˇ˛
  10557. ˇ˛ˇ˛
  10558. ˇ˛ˇ˛˛˛ˇ˝˜˛˛ˇ˝
  10559. ˇˇˇ˛
  10560. ˇˇˇ˛    ˇˇˇ˝˜    ˇˇ˝
  10561. ˇˇˇ˛
  10562. ˇˇˇ˛    ˛ˇˇ˛ˇ¯ˇˇ˙˜˜˜˛ˇˇ˝
  10563. ˇˇˇ˛
  10564. ˇˇˇ˛˛˛ˇ˝ˇ˙¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛˛ˇ˝
  10565. ˇ˛ˇ˛
  10566. ˇ˛ˇ˛˙ˇ˜˜˜˜˙ˇˇ¸ˇˇ˛˛ˇ¸¸ˇˇ˛˙ˇˇ˛ˇˇ˝
  10567. ˇˇˇ˛
  10568. ˇˇˇ˛˛˛ˇ˝ˇ˙¸ˇ˛¸ˇ˝˚ˇ˛    ¸ˇˇ˜˛ˇˇ˝
  10569. ˇˇˇ˛
  10570. ˇˇˇ˛˛˛ˇ˝ˇ˙˙ˇ
  10571. ˇ˛ˇ˛
  10572. ˇ˛ˇ˛˛˛ˇ˝˜˙ˇ˜˛˛ˇ˝
  10573. ˇˇˇ˛
  10574. ˇˇˇ˛    ˇˇˇ˝˜    ˇˇ˝
  10575. ˇˇˇ˛
  10576. ˇˇˇ˛    ˛ˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  10577. vH£4vH£ ûHû
  10578. ˇ·ˇ‚7^ˇˇ¬òˇ◊°dONLNd\äu (nä Constants, T4 °dONLNd \
  10579. uÑ)Ä ypes, and Vº(°dONLNd\Çu“)xariablesˇˇˇˇˇˇh)ÇA
  10580. °dONLNd £äØ‹(¨äThis appendix defiU†°dONLNd2£›Ø)SHnes most of the constants, data types, and global variables used by the °dONLNdz∞äºë(πäVú`°dONLNd{∞êº)enn Diagrammer application.,
  10581. Courier.°dONLNdó«H”ê(–H UNIT Global;°dONLNd§’H·~*    INTERFACE°dONLNd∞ÒZ˝x+CONST°dONLNd∏ˇl º+8{menu constants (resource IDs and menu command numbers)}°dONLNdÛlú*rMenuBar°dONLNdΔÍ)Z= 128;°dONLNdV⁄)ê{menu bar resource ID}°dONLNd()l5ê(2lmApple°dONLNd3)Δ5Í)Z= 128;°dONLNdA)V5¯)ê{resource ID of Apple menu}°dONLNd_7lCê(@liAbout°dONLNdj7ΔCfi)Z= 1;°dONLNdv7VC‘)ê{our About... dialog}°dONLNdèSl_ä(\lmFile°dONLNdôSΔ_Í)Z= 129;°dONLNdßSV_Ú)ê{resource ID of File menu}°dONLNdƒalmÑ(jliNew°dONLNdÕaΔmfi)Z= 1;°dONLNd‘ol{ê(xliClose°dONLNdfloΔ{fi)Z= 2;°dONLNdÊ}lâä(ÜliQuit°dONLNd}Δâfi)Z= 4;°dONLNd¯ôl•ä(¢lmEdit°dONLNdôΔ•Í)Z= 130;°dONLNdôV•Ú)ê{resource ID of Edit menu}°dONLNd-ßl≥ä(∞liUndo°dONLNd7ßΔ≥fi)Z= 1;°dONLNd>µl¡Ñ(æliCut°dONLNdGµΔ¡fi)Z= 3;°dONLNdN√lœä(ÃliCopy°dONLNdX√Δœfi)Z= 4;°dONLNd_—l›ê(⁄liPaste°dONLNdj—Δ›fi)Z= 5;°dONLNdqfllÎê(ËliClear°dONLNd|flΔÎfi)Z= 6;°dONLNdÑ˚lê(lmVennD°dONLNdè˚ΔÍ)Z= 131;°dONLNdù˚VÚ)ê{resource ID of Venn menu}°dONLNd∫    l®(l
  10582. iCheckVenn°dONLNd…    Δfi)Z= 1;°dONLNd–l#ñ( liDoVenn°dONLNd‹Δ#fi)Z= 2;°dONLNd„%l1®(.l
  10583. iClearVenn°dONLNdÚ%Δ1fi)Z= 3;°dONLNd˘3l?¢(<l    iNextTask°dONLNd3Δ?fi)Z= 4;°dONLNdAlM¢(Jl    iCheckArg°dONLNdAΔMfi)Z= 5;°dONLNd#Ol[∫(XliGetVennPrefs°dONLNd5OΔ[fi)Z= 7;°dONLNd=klw¢(tl    kNumTools°dONLNdKkΔwfi)Z= 5;°dONLNdSálìx(êlrV°dONLNdUáxìê) ennD°dONLNd^áΔì¸)N    = mVennD;°dONLNdmá2ì
  10584. )l${resource ID of Venn diagram window}°dONLNdï£lØb(¨l){dialog boxes and their associated items}°dONLNd¡±lΩ®*
  10585. rAboutDial°dONLNd–±ΔΩ)Z= 7000;°dONLNd‡±hΩ)¢{resource ID of About dialog}
  10586. ^ÇH4`}Cˇˇˇˇˇˇ,     Helvetica    .(fFigure `)A-0(oListing Ç¿)A-0(xT)able P)A-0ˇä@ˇ ˇˇˇˇ@
  10587. ˇ·ˇ‚7^
  10588. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CA,     Helvetica    ˇˇ—ÚˇÆ(@l Constants, flf)+T≤() ypes, and VíN)-ariables4⁄*˙¯
  10589. (‡*1964^*¿¯,
  10590. Courier.°dONLNd\Nh`(eNiOK°dONLNd\®h¿)Z= 1;°dONLNd\Jhå)¢ {OK button}°dONLNd#jNvx(sNiCancel°dONLNd/j®v¿)Z= 2;°dONLNd<jJv§)¢{Cancel button}°dONLNdOÜNíÿ(èNrVennDPrefsDial = 3040;°dONLNdoÜí¬)¢#{resource ID of Preferences dialog}°dONLNdïîN†T(ùNi°dONLNdñîT†ê)
  10591. Empty1Radi°dONLNd†îê†ñ)<o°dONLNd©îfi†‰)N=°dONLNd™î‰†ˆ) 1;°dONLNd≤î8†>)T{°dONLNd≥î>†∂)dialog item numbers}°dONLNd ¢NÆê(´N iEmpty2Radi°dONLNd’¢êÆñ)Bo°dONLNdfi¢fiƉ)N=°dONLNdfl¢‰Æˆ) 2;°dONLNdÂ∞Nºê(πN iEmpty3Radi°dONLNd∞êºñ)Bo°dONLNd˘∞fiº‰)N=°dONLNd˙∞‰ºˆ) 3;°dONLNdæN ê(«N iEmpty4Radi°dONLNd æê ñ)Bo°dONLNdæfi ‰)N=°dONLNd扠ˆ) 4;°dONLNdÃNÿä(’N
  10592. iEmpty1Ico°dONLNd%Ãäÿê)<n°dONLNd.Ãfiÿ‰)T=°dONLNd/Éÿˆ) 5;°dONLNd5⁄NÊä(„N
  10593. iEmpty2Ico°dONLNd?⁄äÊê)<n°dONLNdH⁄fiʉ)T=°dONLNdI⁄‰Êˆ) 6;°dONLNdOËNÙä(ÒN
  10594. iEmpty3Ico°dONLNdYËäÙê)<n°dONLNdbËfiÙ‰)T=°dONLNdcˉو) 7;°dONLNdiˆNä(ˇN
  10595. iEmpty4Ico°dONLNdsˆäê)<n°dONLNd|ˆfi‰)T=°dONLNd}ˆ‰ˆ) 8;°dONLNdÉNê(N iExist1Radi°dONLNdéêñ)Bo°dONLNdófi‰)N=°dONLNdò‰ˆ) 9;°dONLNdûNê(N iExist2Radi°dONLNd©êñ)Bo°dONLNd≤fi‰)N=°dONLNd≥‰¸) 10;°dONLNd∫ N,ê()N iExist3Radi°dONLNd≈ ê,ñ)Bo°dONLNdŒ fi,‰)N=°dONLNdœ ‰,¸) 11;°dONLNd÷.N:ê(7N iExist4Radi°dONLNd·.ê:ñ)Bo°dONLNdÍ.fi:‰)N=°dONLNdÎ.‰:¸) 12;°dONLNdÚ<NHä(EN
  10596. iExist1Ico°dONLNd¸<äHê)<n°dONLNd<fiH‰)T=°dONLNd<‰H¸) 13;°dONLNdJNVä(SN
  10597. iExist2Ico°dONLNdJäVê)<n°dONLNd JfiV‰)T=°dONLNd!J‰V¸) 14;°dONLNd(XNdä(aN
  10598. iExist3Ico°dONLNd2Xädê)<n°dONLNd;Xfid‰)T=°dONLNd<X‰d¸) 15;°dONLNdCfNrä(oN
  10599. iExist4Ico°dONLNdMfärê)<n°dONLNdVffir‰)T=°dONLNdWf‰r¸) 16;°dONLNd^tNÄ®(}NiGetNextRandoml°dONLNdmt®ÄÆ)Zy°dONLNdvtfiĉ)6=°dONLNdwt‰ĸ) 19;°dONLNd~ÇNéä(ãN
  10600. iAutoAdjus°dONLNdàÇäéê)<t°dONLNdëÇfié‰)T=°dONLNdíljé¸) 20;°dONLNdôêNú®(ôNiShowSchoolName°dONLNd®ê®úÆ)Zs°dONLNd±êfiú‰)6=°dONLNd≤ê‰ú¸) 21;°dONLNdπûN™¢(ßNiUseExistImpor°dONLNd«û¢™®)Tt°dONLNd–ûfi™‰)<=°dONLNd—û‰™¸) 22;°dONLNdÿ¨N∏ú(µNiSaveVennPref°dONLNd¨ú∏¢)Ns°dONLNdÓ¨fi∏‰)B=°dONLNdÔ¨‰∏ˆ) 23°dONLNdÚ¨ˆ∏¸);°dONLNdˆ∫NΔ∫(√NkVennPrefsItemCoun°dONLNd∫∫Δ¿)lt°dONLNd∫fiΔ‰)$=°dONLNd∫‰Δ¸) 23;°dONLNd÷N‚ê(flN kVisualDela°dONLNd%÷ê‚ñ)By°dONLNd,÷∫‚¿)*=°dONLNd-÷¿‚Ã) 8°dONLNd/÷“) ;°dONLNd3÷‚ˆ)${°dONLNd4÷ˆ‚¯)+ticks to invert a button to simulate press}°dONLNdb‰Nñ(ÌN kCntlActivat°dONLNdn‰ñú)He°dONLNdu‰∫¿)$=°dONLNdv‰¿Ã) 0°dONLNdx‰Ã“) ;°dONLNd|‰ˆ)${°dONLNd}‰ˆJ)enabled contro°dONLNdã‰J\)Tl's°dONLNdé‰\∞) hilite state}°dONLNdüÚN˛¢(˚NkCntlDeactivat°dONLNd≠Ú¢˛®)Te°dONLNd¥Ú∫˛¿)=°dONLNdµÚ¿˛ÿ) $FF°dONLNdπÚÿ˛fi);°dONLNdΩÚ˛ˆ){°dONLNdæÚˆ˛P)disabled contro°dONLNdÕÚP˛b)Zl's°dONLNd–Úb˛∂) hilite state}°dONLNd‚Nr(NkToolH°dONLNdËrx)$t°dONLNdÔ∫¿)H=°dONLNd¿“) 14°dONLNdÛ“ÿ);°dONLNd˜ˆ){°dONLNd¯ˆz)height of a tool icon}°dONLNdN(r(%NkToolW°dONLNdr(x)$d°dONLNd∫(¿)H=°dONLNd¿(“) 21°dONLNd"“(ÿ);°dONLNd&(ˆ){°dONLNd'ˆ(t)width of a tool icon}°dONLNd@8NDÍ(ANkVennToolsIconStart = 768;°dONLNdc8D∂)¢!{base resource ID of tools icons}°dONLNdáFNR~(ONkExistID°dONLNdïF∫R‰)l= 2000;°dONLNdüFRÊ)6){first (of four) icons showing existence}°dONLNdÀTN`~(]NkEmptyID°dONLNdŸT∫`‰)l= 3000;°dONLNd„T`¯)6,{first (of four) patterns showing emptiness}°dONLNdpN|n(yN0{Text strings printed in a Venn diagram window.}°dONLNdF~Näñ* rMiscStrings°dONLNdX~∫ä‰)l= 1004;°dONLNdb~ä‘)6&{resource ID of 'STR#' for text items}°dONLNdãåNò®(ïNkShowAnswerText°dONLNd†å∫ò“)l= 1;°dONLNdßåòD)6{in Venn menu}°dONLNd∏öN¶ú(£NkShowUserText°dONLNdÀö∫¶“)l= 2;°dONLNd“ö¶D)6{in Venn menu}°dONLNd„®N¥~(±NkAllText°dONLNdÒ®∫¥“)l= 3;ˇ/™@ˇ ˇˇˇˇ@
  10601. ˇ·ˇ‚7^
  10602. 4H\, Palatino&e.3+ä"    APPENDIX ‡Ò)CA,     Helvetica    ˇˇ—ÚˇÆ(@ä Constants, flf)+T≤() ypes, and VíN)-ariables4⁄ä˙
  10603. (‡197
  10604. ˇˇˇˇˇˇˇˇ4^4|lòÄ0^@|oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10605. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10606.  
  10607.  
  10608.  
  10609.  
  10610.  
  10611. ˆ                        ˜¯˘˙˚¸˝˛ˇ^@|o^@|o$——————————————————————————————òÄ
  10612. ^6|@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10613. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10614.  
  10615.  
  10616.  
  10617.  
  10618.  
  10619. ˆ                        ˜¯˘˙˚¸˝˛ˇ^6|@^6|@˜˜˜˜˜˜˜˜˜˜˜˜ˇˇ˚˝ˇ˝˝¸ˇ˝¸ˇ˝ˇ˝ˇˇ˚˜˜˜˜˜˜˜˜˜˜˜˜
  10620. 4Å4w?òÄ
  10621. Å6w@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10622. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10623.  
  10624.  
  10625.  
  10626.  
  10627.  
  10628. ˆ                        ˜¯˘˙˚¸˝˛ˇÅ6w@Å6w@$˝˛ˇ˛
  10629. ˛ˇ˛ˇˇ    ˇ¸ˇ    ˇ¸ˇ
  10630. ˛ˇ˛ˇˇ˜˛˛ˇ˝
  10631. ˇ˛ˇ˛
  10632. ˇ˛ˇ˛˛˛ˇ˝˜˜¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜    ˇˇ˝
  10633. ˇˇˇ˛
  10634. ˇˇˇ˛    ˛ˇˇ˛˛¸ˇˇ
  10635. ˇ˛ˇ˛˜˛ˇˇ˝
  10636. ˇˇˇ˛
  10637. ˇˇˇ˛˛˛ˇ˝ˇ˙¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛¸ˇˇ
  10638. ˇ˛ˇ˛    ˇˇ˝
  10639. ˇˇˇ˛
  10640. ˇˇˇ˛    ˛ˇˇ˛˜ˇ¯ˇˇ˙˜˜˘ˇ˘ˇ˙ˇ˘ˇ˘ˇ¸ˇˇ˛ˇˇˇ¸ˇˇ˙˛ˇˇ¸¸ˇˇ˛˙ˇ˛
  10641. ˇ˛ˇ˛
  10642. ˇ˛ˇ˛˛˛ˇ˝˜˛˛ˇ˝
  10643. ˇˇˇ˛
  10644. ˇˇˇ˛    ˇˇˇ˝˜    ˇˇ˝
  10645. ˇˇˇ˛
  10646. ˇˇˇ˛    ˛ˇˇ˛ˇ¯ˇˇ˙˜˜˜˛ˇˇ˝
  10647. ˇˇˇ˛
  10648. ˇˇˇ˛˛˛ˇ˝ˇ˙¸ˇ˛¸ˇ˝˚ˇ˛˝ˇ˝˜˛˛ˇ˝
  10649. ˇ˛ˇ˛
  10650. ˇ˛ˇ˛˙ˇ˜˜˜˜˙ˇˇ¸ˇˇ˛˛ˇ¸¸ˇˇ˛˙ˇˇ˛ˇˇ˝
  10651. ˇˇˇ˛
  10652. ˇˇˇ˛˛˛ˇ˝ˇ˙¸ˇ˛¸ˇ˝˚ˇ˛    ¸ˇˇ˜˛ˇˇ˝
  10653. ˇˇˇ˛
  10654. ˇˇˇ˛˛˛ˇ˝ˇ˙˙ˇ
  10655. ˇ˛ˇ˛
  10656. ˇ˛ˇ˛˛˛ˇ˝˜˙ˇ˜˛˛ˇ˝
  10657. ˇˇˇ˛
  10658. ˇˇˇ˛    ˇˇˇ˝˜    ˇˇ˝
  10659. ˇˇˇ˛
  10660. ˇˇˇ˛    ˛ˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  10661. Courier.°dONLNd\lhñ(elkNoText°dONLNd\ÿh)l= 4;°dONLNdjlv¢(sl    kSomeText°dONLNd#jÿv)l= 5;°dONLNd*xlÑú(ÅlkAreText°dONLNd8xÿÑ)l= 6;°dONLNd?ÜlíÆ(èl kAreNotText°dONLNdPÜÿí)l= 7;°dONLNdWîl†Æ(ùl kFigureText°dONLNdhîÿ†)l= 8;°dONLNdo¢lÆ¢(´l    kMoodText°dONLNd~¢ÿÆ)l= 9;°dONLNdÜæl ¬(«l9{Venn Diagram window status messages: 'STR#' resource ID °dONLNdø欠¯(«¬    = rVennD}°dONLNdÀÃlÿΔ(’leDiagramCorrect°dONLNd·ÃÍÿ)~= 1;°dONLNdË⁄lÊ“(„leDiagramIncorrect°dONLNd⁄ÍÊ)~= 2;°dONLNdËlÙΔ(ÒleHereIsSolution°dONLNdËÍÙ)~= 3;°dONLNd$ˆlΔ(ˇleHereIsYourWork°dONLNd:ˆÍ)~= 4;°dONLNdAl“(leCannotEditAnswer°dONLNdYÍ)~= 5;°dONLNd`lÿ(leCannotEraseAnswer°dONLNdyÍ)~= 6;°dONLNdÄ l,Æ()l eArgIsValid°dONLNdí Í,)~= 7;°dONLNdô.l:¥(7l eArgNotValid°dONLNd¨.Í:)~= 8;°dONLNd≥<lH“(EleExistNotPossible°dONLNdÀ<ÍH)~= 9;°dONLNd”XldÆ(al rErrorAlert°dONLNd‰Xÿdˆ)l= 129°dONLNdÈXˆd¸);°dONLNdÌXd){°dONLNdÓXd)*res ID of 'ALRT' resource for error mesgs}°dONLNdflr∫(olkErrorStrings°dONLNd.fÿr)l= 1005;°dONLNd8fr
  10662. )6*{res ID of 'STR#' resource for error mesgs°dONLNdbf
  10663. r)¸}°dONLNdftlÄ¿(}leCantFindMenus°dONLNdztÿÄfi)l=°dONLNd{tfiÄ) 1;°dONLNdÅtĬ)0{can't read menu bar resource}°dONLNd¢ÇléÃ(ãleNotEnoughMemory°dONLNd∏Çÿé)l= 2;°dONLNdøÇé‡)6#{insufficient memory for operation}°dONLNdÊûl™å(ßl0{constants defining several keyboard characters}°dONLNd¨l∏ê*kEnter°dONLNd%¨ÿ∏)l
  10664. = char(3);°dONLNd7¨h∏Ê)ê{the enter character}°dONLNdO∫lΔñ(√lkReturn°dONLNd\∫ÿΔ)l = char(13);°dONLNdo∫hΔÏ)ê{the return character}°dONLNdà»l‘ñ(—lkEscape°dONLNdï»ÿ‘)l = char(27);°dONLNd®»h‘Ï)ê{the escape character}°dONLNd¡÷l‚ñ(fllkPeriod°dONLNdŒ÷ÿ‚¸)l= '.';°dONLNd‹÷h‚Ï)ê{the period character}°dONLNdıÚZ˛x(˚ZTYPE °dONLNd˝l ‡+>{record to hold the current settings of a Venn Diagram window}°dONLNd>lÆ* MyDocRec = °dONLNdM~(¢+RECORD°dONLNdYÍ(»)l%{information about a document window}°dONLNdÉ*ê6∫(3êfigure:°dONLNdê*¸6,)lInteger;°dONLNdû*h6)l{the figure of the syllogism}°dONLNd¿8êDÆ(Aêmood:°dONLNdÀ8¸DÜ)lARRAY[1..3] of Integer;°dONLNdÛFhR+l{the moods of the statements}°dONLNdTê`¥(]êterms:°dONLNd!T¸`z)lARRAY[1..3] of Str31;°dONLNd?Tû`)¢{the three terms}°dONLNdUbên“(kê statusText:°dONLNdfb¸n&)lStr255;°dONLNdsbhn)l{most recent status message}°dONLNdîpê|fi(yêuserSolution:°dONLNdßp¸|)lMy°dONLNd©p|V) DiagramState;°dONLNdºph|Ï)`{user's diagram state}°dONLNd◊~êäÿ(áê realSolution°dONLNd„~ÿäfi)H:°dONLNdÍ~¸äV)$MyDiagramState;°dONLNdˇ~hä¯)l{answer's diagram state}°dONLNdåêò(ïêisAnswerShowing:°dONLNd2å¸ò,)lBoolean;°dONLNd@åhò¯)l{is the answer showing?}°dONLNd]ö궉(£êisExistImport:°dONLNdqö¸¶,)lBoolean;°dONLNdöh¶)l{stmts imply exists subject?}°dONLNd°®ê¥Í(±êneedsAdjusting:°dONLNd∂®¸¥,)lBoolean;°dONLNdƒ®h¥)l{diagram needs adjusting?}ˇ
  10665. Δ@ˇ ˇˇˇˇ@
  10666. ˇ·ˇ‚7^
  10667. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CA,     Helvetica    ˇˇ—ÚˇÆ(@l Constants, flf)+T≤() ypes, and VíN)-ariables4⁄*˙¯
  10668. (‡*1984^*¿¯,
  10669. Courier.°dONLNd\`hx(e`END;°dONLNdjNvfi(sNMyDocRecPtr = ^MyDocRec;°dONLNd"xNÑ*MyDocRecHnd = ^MyDocRecPtr;°dONLNd@î<†N(ù<VAR°dONLNdF¢NÆÆ+gNumDocWindows: °dONLNd]¢ÃƸ)~Integer;°dONLNdi¢ÆÚ)H%{the number of open document windows}°dONLNdë∞Nºú(πNgPrefsDialog:°dONLNd•∞ú)~
  10670. DialogPtr;°dONLNd≥∞º¯)H&{pointer to Preferences dialog window}°dONLNd‹æN ∫(«NgAppsResourceFile:°dONLNdıæà¸)~Integer;°dONLNdæ Ï)H${reference number of app's res file}°dONLNd(ÃNÿ¥(’NgPreferencesFile:°dONLNd@ÃÃÿ¸)~Integer;°dONLNdLÃÿÚ)H%{reference number of app's prefs file°dONLNdqÃÚÿ¯)fi}°dONLNdu⁄NÊñ(„N gToolsIcons:°dONLNdà⁄ÃÊÄ)~ARRAY[1..kNumTools] of Handle;°dONLNd¥ËÙ§+H{handles to tools icons}°dONLNdœˆNê(ˇN gEmptyPats:°dONLNd·ˆÃb)~ARRAY[1..4] of PatHandle;°dONLNdŒ+H{handles to emptiness patterns}°dONLNd*Nñ(N gExistIcons:°dONLNd=ÃP)~ARRAY[1..4] of Handle;°dONLNda ,»+H{handles to existence symbols}°dONLNdÇ.N:ê(7N gMoodIcons:°dONLNdî.Ã:P)~ARRAY[1..4] of Handle;°dONLNd∏<Hû+H{handles to mood icons}°dONLNd“JNVú(SNgFigureIcons:°dONLNdÊJÃVP)~ARRAY[1..4] of Handle;°dONLNd
  10671. Xd™+H{handles to figure icons}°dONLNd&fNrT(oNg°dONLNd'fTrñ) ExistIndex:°dONLNd9fÃr¸)xInteger;°dONLNdEfr‘)H {rank of icon showing existence}°dONLNdhtNÄñ(}N gEmptyIndex:°dONLNd{tÃĸ)~Integer;°dONLNdátÄ‘)H {rank of icon showing emptiness}°dONLNd™ÇNéñ(ãN gStepRandom:°dONLNdΩÇÃé¸)~Boolean;°dONLNd…ÇéŒ)H{generate next setup randomly?}°dONLNdÎêNúú(ôNgAutoAdjust: °dONLNdˇêÃú¸)~Boolean;°dONLNd êúÊ)H#{automatically adjust the diagram?}°dONLNd1ûN™ñ(ßN gGiveImport:°dONLNdDûÙ¸)~Boolean;°dONLNdPû™¯)H&{do subjects have existential import?}°dONLNdy¨N∏ê(µN gShowNames:°dONLNdã¨Ã∏¸)~Boolean;°dONLNdó¨∏‡)H"{do we show names of valid forms?}°dONLNdª»*‘~(—*IMPLEMENTATION°dONLNd ÷*‚ñ*END. {UNIT Global}ˇ)@ˇ ˇˇˇˇ@
  10672. ˇ·ˇ‚7^, Palatino    3,. Ã+ä#    APPENDIX Vø)sB
  10673. 4⁄ä˙
  10674. (‡199
  10675. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10676. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10677.  
  10678.  
  10679.  
  10680.  
  10681.  
  10682. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  10683. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10684. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10685.  
  10686.  
  10687.  
  10688.  
  10689.  
  10690. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜˙ˇ˙ˇ     ˇˇˇ     ˇˇˇ˙ˇ
  10691. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  10692. 4€4—?òÄ
  10693. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10694. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10695.  
  10696.  
  10697.  
  10698.  
  10699.  
  10700. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˝˚ˇ˛ˇ˚˛ˇ˚˛ˇ˚˝˚ˇ˜˝¸ˇ
  10701. ˛ˇ˛ˇˇ˜˛¸ˇˇ˜˛˙ˇ˜˛¸ˇˇ˜˝¸ˇ
  10702. ˛ˇ˛ˇˇ˚ˇˇˇ    ˇˇˇ˝ˇˇ˚˝ˇˇ˝˚ˇˇˇ˜˜˛˙ˇ˚ˇˇ˚ˇˇ˚ˇˇ    ˛˛ˇˇˇ˜˜˝˛ˇ˛
  10703. ˛ˇ˛ˇˇ
  10704. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜˝¸ˇ
  10705. ˛ˇ˛ˇˇ˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝˛ˇ˛
  10706. ˛ˇˇˇˇ
  10707. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  10708. ˛ˇˇˇˇ
  10709. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  10710. vH£4vH£ ûHû
  10711. ˇ·ˇ‚7^ˇˇ¬òˇ◊°dONLNd\äu.(näUtility Routinesˇˇˇˇˇˇh(nB
  10712. °dONLNd£äØ‹(¨äThis appendix defiU†°dONLNd#£›ØM)Snes a number of utility pr†°dONLNd=£NØl)qocedurô‡°dONLNdC£lØ”)es and functions that arÙ°dONLNd[£”Ø)g e called by °dONLNdg∞äºfl(πäother parts of the V¸¿°dONLNd{∞fiº`)Tenn Diagrammer application.,
  10713. Courier.°dONLNdó«H”¢(–HUNIT Utilities;°dONLNdß’H·~*    INTERFACE°dONLNd≤„ZÔr+USES°dONLNdπÒl˝ñ+Global;°dONLNd√Z
  10714. (ZHPROCEDURE DoPlotIcon (myRect: Rect; myIcon: Handle; myWindow: WindowPtr;°dONLNdÿ'D+~ myMode: Integer);°dONLNd()Z5º(2Z;PROCEDURE DoOutlineControl (myControl: univ ControlHandle);°dONLNde7ZCz*0PROCEDURE DoDefaultButton (myDialog: DialogPtr);°dONLNdóEZQò*5FUNCTION IsDAccWindow (myWindow: WindowPtr): Boolean;°dONLNdŒSZ_í*4FUNCTION IsAppWindow (myWindow: WindowPtr): Boolean;°dONLNdaZm§*7FUNCTION IsDialogWindow (myWindow: WindowPtr): Boolean;°dONLNd=oZ{Ä*1PROCEDURE DoPositionWindow (myWindow: WindowPtr);°dONLNdp}Zâz*0PROCEDURE DoSetWindowTitle (myWindow: WindowPtr)°dONLNd†}zâÄ(Üz;°dONLNd£ãZó`(îZF°dONLNd§ã`óÊ)AUNCTION DoTrackRect (myWindow: WindowPtr; myRect: Rect): Boolean;°dONLNdÁôZ•»(¢Z=PROCEDURE DoStatusText (myWindow: WindowPtr; myText: Str255);°dONLNd&ßZ≥‡*APROCEDURE DoStatusMesg (myWindow: WindowPtr; myMessage: Integer);°dONLNdiµZ¡J*(PROCEDURE DoBadError (myError: Integer);°dONLNdì√Zœ*FUNCTION IsFindFolder: Boolean;°dONLNd¥—Z›\*+FUNCTION MyRandom (last: Integer): Integer;°dONLNd·ÌH˘ú(ˆHIMPLEMENTATION°dONLNdÒ    Hº*>{DoPlotIcon: plot a piece of an icon in a specified rectangle}°dONLNd1Z#
  10715. +HPROCEDURE DoPlotIcon (myRect: Rect; myIcon: Handle; myWindow: WindowPtr;°dONLNdÉ%Í1V+ê myMode: Integer);°dONLNdò3l?~(<lVAR°dONLNdüA~M¥+    myBitMap:°dONLNd¨AΔM)HBitMap;°dONLNdµOZ[x(XZBEGIN°dONLNdΩ]li+myBitMap.baseAddr := myIcon^;°dONLNd›klwˆ*myBitMap.rowBytes := 4;°dONLNd˜ylÖ*myBitMap.bounds := myRect;°dONLNdálì*DCopyBits(myBitMap, myWindow^.portBits, myRect, myRect, myMode, NIL);°dONLNdZïZ°l(ûZEND°dONLNd]ïl°r);
  10716. ^ÇH4`}Cˇˇˇˇˇˇ,     Helvetica    .(f
  10717. Figure B-0*     Listing B-0*    T)able B-0ˇ @ˇ ˇˇˇˇ@
  10718. ˇ·ˇ‚7^
  10719. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CB,     Helvetica    ˇˇ—ÚˇÆ(@lUtility Routines4⁄*˙¯
  10720. (‡*2004^*¿¯,
  10721. Courier.°dONLNd\*h0(e*{°dONLNd\0h¸)"DoOutlineControl: draw bold outlin°dONLNd#\¸h8)Ã
  10722. e around a°dONLNd-\8hh)< control°dONLNd5\hhn)0}°dONLNd8j<vB(s<P°dONLNd9jBvû):ROCEDURE DoOutlineControl (myControl: UNIV ControlHandle);°dONLNdvxNÑ`+ VAR°dONLNd}Ü`íä+myOval:°dONLNdàÜ®íÿ)HInteger;°dONLNdîî`†ä(ù`myRect:°dONLNdüΔ)HRect;°dONLNd®¢`Æê(´`origPen:°dONLNd¥¢®Æfi)H    PenState;°dONLNd¡∞`ºñ(π`    origPort:°dONLNdŒ∞®ºÿ)HGrafPtr;°dONLNdÿæ< Z(«<BEGIN°dONLNd‡ÃNÿfi+IF myControl <> NIL THEN°dONLNd¸⁄`Ê~+BEGIN°dONLNdËrÙfi+GetPort(origPort);°dONLNdˆr8*!SetPort(myControl^^.contrlOwner);°dONLNdCr*GetPenState(origPen);°dONLNd]rÆ*
  10723. PenNormal;°dONLNdm.r:8*!myRect := myControl^^.contrlRect;°dONLNdì<rH*InsetRect(myRect, -4, -4);°dONLNd≤JrVb*(myOval := ((myRect.bottom - myRect.top) °dONLNd⁄JbVt)DIV°dONLNd›JtV§) 2) + 2;°dONLNdÎfrrû(or2IF (myControl^^.contrlHilite = kCntlActivate) THEN°dONLNd#tÑÄ“+PenPat(black)°dONLNd5Çréä(ãrELSE°dONLNd?êÑú“+PenPat(gray);°dONLNdQûr™Δ(ßrPenSize(3, 3);°dONLNdd¨r∏\*'FrameRoundRect(myRect, myOval, myOval);°dONLNdê∫rΔ*SetPenState(origPen);°dONLNd±∫JΔÚ)ÿ{restore previous pen state}°dONLNd“»r‘fi(—rSetPort(origPort);°dONLNdË÷`‚x(fl`END;°dONLNdÓ‰<T(Ì<END;°dONLNdÙ* ˆ(    *"{DoDefaultButton: draw bold outlin°dONLNdˆ 2)Ã
  10724. e around d°dONLNd 2 Œ)<efault button in a dialog}°dONLNd;*¯(*M{this procedure assumes that the default button is item number 1 (i.e., iOK)}°dONLNdä<(\+0PROCEDURE DoDefaultButton (myDialog: DialogPtr);°dONLNdΩ*N6`+VAR°dONLNdƒ8`Dä+myType:°dONLNdœ8®Dÿ)HInteger;°dONLNd€F`Rä(O`myHand:°dONLNdÊF®R“)HHandle;°dONLNdÒT``ä(]`myRect:°dONLNd¸T®`Δ)HRect;°dONLNdb<nZ(k<BEGIN°dONLNd pN|å+5GetDialogItem(myDialog, iOK, myType, myHand, myRect);°dONLNdC~Nä‰*DoOutlineControl(myHand);°dONLNd^å<òT(ï<END;°dONLNdd®*¥‡(±*I{IsDAccWindow: determine if specified window belongs to a desk accessory}ˇ'b@ˇ ˇˇˇˇ@
  10725. ˇ·ˇ‚7^
  10726. 4H\, Palatino&e.3+ä"    APPENDIX ‡Ò)CB,     Helvetica    ˇˇ—ÚˇÆ(@äUtility Routines4⁄ä˙
  10727. (‡201
  10728. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10729. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10730.  
  10731.  
  10732.  
  10733.  
  10734.  
  10735. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  10736. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10737. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10738.  
  10739.  
  10740.  
  10741.  
  10742.  
  10743. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜˙ˇ˙ˇ     ˇˇˇ     ˇˇˇ˙ˇ
  10744. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  10745. 4€4—?òÄ
  10746. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10747. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10748.  
  10749.  
  10750.  
  10751.  
  10752.  
  10753. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˝˚ˇ˛ˇ˚˛ˇ˚˛ˇ˚˝˚ˇ˜˝¸ˇ
  10754. ˛ˇ˛ˇˇ˜˛¸ˇˇ˜˛˙ˇ˜˛¸ˇˇ˜˝¸ˇ
  10755. ˛ˇ˛ˇˇ˚ˇˇˇ    ˇˇˇ˝ˇˇ˚˝ˇˇ˝˚ˇˇˇ˜˜˛˙ˇ˚ˇˇ˚ˇˇ˚ˇˇ    ˛˛ˇˇˇ˜˜˝˛ˇ˛
  10756. ˛ˇ˛ˇˇ
  10757. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜˝¸ˇ
  10758. ˛ˇ˛ˇˇ˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝˛ˇ˛
  10759. ˛ˇˇˇˇ
  10760. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  10761. ˛ˇˇˇˇ
  10762. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  10763. Courier.°dONLNd\Zhò(eZ5FUNCTION IsDAccWindow (myWindow: WindowPtr): Boolean;°dONLNd7jZvx*BEGIN°dONLNd?xlÑ+IF myWindow = NIL THEN°dONLNdYÜ~í¸+IsDAccWindow := FALSE°dONLNdqîl†Ñ(ùlELSE°dONLNdy¢~ƺ+5IsDAccWindow := WindowPeek(myWindow)^.windowKind < 0;°dONLNd∞∞Zºr(πZEND;°dONLNd∂ÃHÿº(’H>{IsAppWindow: determine if specified window belongs to my app}°dONLNdˆ⁄ZÊí+4FUNCTION IsAppWindow (myWindow: WindowPtr): Boolean;°dONLNd,ËZÙx*BEGIN°dONLNd4ˆl+IF myWindow = NIL THEN°dONLNdN~ˆ+IsAppWindow := FALSE°dONLNdelÑ(lELSE°dONLNdm ~,‡+;IsAppWindow := WindowPeek(myWindow)^.windowKind = userKind;°dONLNd™.Z:r(7ZEND;°dONLNd∞JHV™(SH;{IsDialogWindow: determine if specified window is a dialog}°dONLNdÌXZd§+7FUNCTION IsDialogWindow (myWindow: WindowPtr): Boolean;°dONLNd&fZrx*BEGIN°dONLNd.tlÄ+IF myWindow = NIL THEN°dONLNdHÇ~é+IsDialogWindow := FALSE°dONLNdbêlúÑ(ôlELSE°dONLNdjû~™˛+@IsDialogWindow := WindowPeek(myWindow)^.windowKind = dialogKind;°dONLNd¨¨Z∏r(µZEND;°dONLNd≤»H‘Ä(—H4{DoPositionWindow: set the position of a new window}°dONLNdË÷Z‚Ä+1PROCEDURE DoPositionWindow (myWindow: WindowPtr);°dONLNd‰Zx*BEGIN°dONLNd"ÚZ˛r*END;°dONLNd(Hå(H6{DoSetWindowTitle: construct a title for a new window}°dONLNd`Z(Ä+1PROCEDURE DoSetWindowTitle (myWindow: WindowPtr);°dONLNdî*l6~+VAR°dONLNdõ8~D®+myName:°dONLNd¶8ΔD)HStr255;°dONLNd±F~R®(O~myRank:°dONLNdºFΔR)HStr255;°dONLNd≈TZ`x(]ZBEGIN°dONLNdÕbln+GetWTitle(myWindow, myName);°dONLNdÏpl|J*%gNumDocWindows := gNumDocWindows + 1;°dONLNd~läD*$NumToString(gNumDocWindows, myRank);°dONLNd;ålòP*&myName := concat(myName, ' ', myRank);°dONLNddöl¶*SetWTitle(myWindow, myName);°dONLNdÇ®Z¥r(±ZEND;ˇ
  10764. û@ˇ ˇˇˇˇ@
  10765. ˇ·ˇ‚7^
  10766. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CB,     Helvetica    ˇˇ—ÚˇÆ(@lUtility Routines4⁄*˙¯
  10767. (‡*2024^*¿¯,
  10768. Courier.°dONLNdj*v0(s*{°dONLNdj0v\)2DoTrackRect: do "TrackBox" for a random rectangle}°dONLNd4x*ÑP(Å*1{this is used to process clicks in a window tool}°dONLNdgÜ<í»+BFUNCTION DoTrackRect (myWindow: WindowPtr; myRect: Rect): Boolean;°dONLNd¨îN†`+VAR°dONLNd≥¢`Æñ+    myIgnore:°dONLNd¿¢®Æÿ)HLongInt;°dONLNdÃ∞`ºê(π`myPoint:°dONLNdÿ∞®ºÃ)HPoint;°dONLNd‡æ< Z(«<BEGIN°dONLNdËÃNÿ¿+InvertRect(myRect);°dONLNdÃÃÿP)~{invert the rectangle}°dONLNd⁄NÊr(„NREPEAT°dONLNd%Ë`Ù+Delay(kVisualDelay, myIgnore)°dONLNdEˆNΔ(ˇNUNTIL NOT StillDown;°dONLNdcˆÚ)¥({keep inversion until mouse is released}°dONLNdéN¿(NInvertRect(myRect);°dONLNd• N,∫*GetMouse(myPoint);°dONLNd¡ ,¯)¥){get mouse location in local coordinates}°dONLNdÌ.N:D(7N)DoTrackRect := PtInRect(myPoint, myRect);°dONLNd<<HT(E<END;°dONLNdX*dÄ(a*9{DoStatusText: print a message in a window's status area}°dONLNdYf<r™+=PROCEDURE DoStatusText (myWindow: WindowPtr; myText: Str255);°dONLNdôtNÄ`+VAR°dONLNd†Ç`éä+myRect:°dONLNd´Ç®éΔ)HRect;°dONLNd¥ê`úñ(ô`    origSize:°dONLNd¡ê®úÿ)HInteger;°dONLNdÕû`™ñ(ß`    origFont:°dONLNd⁄û®™ÿ)HInteger;°dONLNdʨ`∏ñ(µ`    myHandle:°dONLNdÛ¨®∏)H MyDocRecHnd;°dONLNd∫NΔl(√NCONST°dONLNd »`‘ú+
  10769. kSlop = 4;°dONLNd÷`‚ú*
  10770. kSize = 9;°dONLNd'‰`Δ*kFont = applFont;°dONLNd:Ú<˛Z(˚<BEGIN°dONLNdBN ÿ+IF myWindow <> NIL THEN°dONLNd]`~+BEGIN°dONLNdgr(fi+SetPort(myWindow);°dONLNd~*r6 *origSize := myWindow^.txSize;°dONLNd•*&6Ï)¥!{remember original size and font}°dONLNdÀ8rD (ArorigFont := myWindow^.txFont;°dONLNdÌFrR“*TextSize(kSize);°dONLNdF&R»)¥{set desired size and font}°dONLNd'Tr`“(]rTextFont(kFont);°dONLNd=pr|\*'SetRect(myRect, kToolWd * kNumTools, 0,°dONLNdo~fiä∂+l$ myWindow^.portRect.right, kToolHt);°dONLNdòåròfi(ïrEraseRect(myRect);°dONLNdØör¶*IF length(myText) > 0 THEN°dONLNdœ®Ñ¥¢+BEGINˇ(ˆ@ˇ ˇˇˇˇ@
  10771. ˇ·ˇ‚7^
  10772. 4H\, Palatino&e.3+ä"    APPENDIX ‡Ò)CB,     Helvetica    ˇˇ—ÚˇÆ(@äUtility Routines4⁄ä˙
  10773. (‡203
  10774. ˇˇˇˇˇˇˇˇ4∏4÷lòÄ0∏@÷oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10775. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10776.  
  10777.  
  10778.  
  10779.  
  10780.  
  10781. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏@÷o∏@÷o$——————————————————————————————òÄ
  10782. ∏6÷@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10783. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10784.  
  10785.  
  10786.  
  10787.  
  10788.  
  10789. ˆ                        ˜¯˘˙˚¸˝˛ˇ∏6÷@∏6÷@˜˜˜˜˜˜˜˜˜˜˜˜˙ˇ˙ˇ     ˇˇˇ     ˇˇˇ˙ˇ
  10790. ˛ˇˇˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  10791. 4€4—?òÄ
  10792. €6—@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10793. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10794.  
  10795.  
  10796.  
  10797.  
  10798.  
  10799. ˆ                        ˜¯˘˙˚¸˝˛ˇ€6—@€6—@$˝˚ˇ˛ˇ˚˛ˇ˚˛ˇ˚˝˚ˇ˜˝¸ˇ
  10800. ˛ˇ˛ˇˇ˜˛¸ˇˇ˜˛˙ˇ˜˛¸ˇˇ˜˝¸ˇ
  10801. ˛ˇ˛ˇˇ˚ˇˇˇ    ˇˇˇ˝ˇˇ˚˝ˇˇ˝˚ˇˇˇ˜˜˛˙ˇ˚ˇˇ˚ˇˇ˚ˇˇ    ˛˛ˇˇˇ˜˜˝˛ˇ˛
  10802. ˛ˇ˛ˇˇ
  10803. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜˝¸ˇ
  10804. ˛ˇ˛ˇˇ˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝˛ˇ˛
  10805. ˛ˇˇˇˇ
  10806. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜    ˛ˇˇ˛
  10807. ˛ˇˇˇˇ
  10808. ˛ˇˇˇˇ    ˝ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  10809. Courier.°dONLNd\¥hÊ(e¥3MoveTo(myRect.left + kSlop, myRect.bottom - kSlop);°dONLNd:j¥v&*DrawString(myText);°dONLNdSx¢Ñ∫(Å¢END;°dONLNd]îê†(ùêTextSize(origSize);°dONLNdzîD†)¥ {restore original size and font}°dONLNdü¢êÆ(´êTextFont(origFont);°dONLNd∏æê ¬*3{Remember the last message printed in this window.}°dONLNdÃêÿ§*.myHandle := MyDocRecHnd(GetWRefCon(myWindow));°dONLNd#⁄êÊP* myHandle^^.statusText := myText;°dONLNdGË~Ùñ(Ò~END;°dONLNdMˆZr(ˇZEND;°dONLNdSH⁄(HC{DoStatusMesg: call DoStatusText, getting the text from a resource}°dONLNdò Z,\++PROCEDURE DoStatusMesg (myWindow: WindowPtr°dONLNd√ \,∞()\; myMessageID:°dONLNd— ∞,Ï)T
  10810.  Integer);°dONLNdfi.l:~(7lVAR°dONLNdÂ<~H®+myText:°dONLNd<ΔH)HStr255;°dONLNd˘JZVx(SZBEGIN°dONLNdXldfi+GetIndString(myText°dONLNdXfidˆ)r, rV°dONLNdXˆd)ennD°dONLNdXdb), myMessageID)°dONLNd*Xbdh)T;°dONLNd.flr&(olDoStatusText(myWindow, myText);°dONLNdOtZÄr(}ZEND;°dONLNdUêHúÊ(ôHE{DoBadError: inform the user of fatal errors, then terminate the app}°dONLNdúûZ™J+(PROCEDURE DoBadError (myError: Integer);°dONLNd«¨l∏~+VAR°dONLNdŒ∫~Δ®+myItem:°dONLNdŸ∫ΔΔˆ)HInteger;°dONLNd»~‘∫(—~
  10811. myMessage:°dONLNdÛ»Δ‘)HStr255;°dONLNd¸÷Z‚x(flZBEGIN°dONLNd‰l“+SetCursor(arrow);°dONLNd#‰h‘)¸{set arrow cursor}°dONLNd8Úl˛å(˚l0GetIndString(myMessage, kErrorStrings, myError);°dONLNdkl 2*!ParamText(myMessage, '', '', '');°dONLNdèl8*"myItem := Alert(rErrorAlert, NIL);°dONLNdøhŒ)¸{display message}°dONLNd”l(¥(%l ExitToShell;°dONLNdÌh(Ê)¸{terminate execution}°dONLNd*Z6r(3ZEND;°dONLNd
  10812. FHRÜ(OH5{IsFindFolder: is the FindFolder function available?}°dONLNdATZ`+FUNCTION IsFindFolder: Boolean;°dONLNdbbZnl*VAR°dONLNdhpl|¢+    myResult:°dONLNdup¥|ÿ)HOSErr;°dONLNd~~lä®(ál
  10813. myFeature:°dONLNdå~¥ä‰)HLongInt;°dONLNdñåZòx(ïZBEGIN°dONLNdûöl¶+IsFindFolder := FALSE;°dONLNdæö ¶¬)¥{assume it's not available}°dONLNd‹®l¥∞(±l6myResult := Gestalt(gestaltFindFolderAttr, myFeature);ˇ@ˇ ˇˇˇˇ@
  10814. ˇ·ˇ‚7^
  10815. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CB,     Helvetica    ˇˇ—ÚˇÆ(@lUtility Routines4⁄*˙¯
  10816. (‡*2044^*¿¯,
  10817. Courier.°dONLNd\Nh‰(eNIF myResult = noErr THEN °dONLNdj`vº+:IsFindFolder := BTST(myFeature, gestaltFindFolderPresent);°dONLNdYx<ÑT(Å<END;°dONLNd_î*†∂(ù*B{MyRandom: generate a reasonably random number between 0 and last}°dONLNd£¢<Æ>++FUNCTION MyRandom (last: Integer): Integer;°dONLNd–∞<ºZ*BEGIN°dONLNdÿæN 8+'MyRandom := ABS(Random) MOD SUCC(last);°dONLNdÃ<ÿT(’<END;°dONLNd⁄*ÊB(„*END.ˇ(d@ˇ ˇˇˇˇ@
  10818. ˇ·ˇ‚7^, Palatino    3,. Ã+ä#    APPENDIX Vø)sC
  10819. 4⁄ä˙
  10820. (‡205
  10821. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10822. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10823.  
  10824.  
  10825.  
  10826.  
  10827.  
  10828. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  10829. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10830. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10831.  
  10832.  
  10833.  
  10834.  
  10835.  
  10836. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜˝˛ˇ˛˛¸ˇˇ ˇˇ˛ˇˇ    ˇ¸ˇ ˇˇ˛ˇˇ
  10837. ˛ˇ˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  10838. 454+?òÄ
  10839. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10840. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10841.  
  10842.  
  10843.  
  10844.  
  10845.  
  10846. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˛˙ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ¸˛ˇˇ˜˛¸ˇˇ˜˝ˇˇ˛
  10847. ˛ˇˇˇˇ
  10848. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚˛˙ˇ˜˝˛ˇ˛
  10849. ˛ˇ˛ˇˇ
  10850. ˛ˇ˛ˇˇ˝˛ˇ˛˜    ˇ˛ˇ˛ ˇˇ˛ˇˇ ˇˇ˛ˇˇ˚ˇˇ˜˜˜˜¸˛ˇˇ    ˝ˇ˛ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ˜˝˛ˇ˛
  10851. ˛ˇ˛ˇˇ
  10852. ˛ˇ˛ˇˇ˝˛ˇ˛˜˜˝˛ˇ˛
  10853. ˛ˇ˛ˇˇ
  10854. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  10855. ˛ˇˇˇˇ
  10856. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  10857. vH£4vH£ ûHû
  10858. ˇ·ˇ‚7^ˇˇ¬òˇ◊°dONLNd\äu (nä Dialog Codeˇˇˇˇˇˇπh(nC
  10859. °dONLNd £äØ‹(¨äThis appendix defiU†°dONLNd£›Ø)Snes several prF@°dONLNd,£Ø8)=ocedur›Ä°dONLNd2£8ØÄ)es used by the V °dONLNdB£ÄØ)Henn Diagrammer application to °dONLNd`∞äºÈ(πämanage dialog boxes.,
  10860. Courier.°dONLNdu«H”ê(–H UNIT Dialog;°dONLNdà«Δ”å)~!{routines to handle dialog boxes}°dONLNd™’H·~(fiH    INTERFACE°dONLNdµ„ZÔr+USES°dONLNdºÒl˝h+*Global, Utilities, Preferences, VennProcs;°dONLNdÈZ˛(ZFPROCEDURE DoSetupUserItems (myKind: Integer; VAR myDialog: DialogPtr);°dONLNd1Z'Ü*2PROCEDURE DoSetupCtrlValues (myDialog: DialogPtr);°dONLNde)Z5¬*<PROCEDURE DoUserItem (myDialog: DialogPtr; myItem: Integer);°dONLNd£7ZC˛*FPROCEDURE DoModelessDialog (myKind: Integer; VAR myDialog: DialogPtr);°dONLNdÎEZQ»*=FUNCTION DoHandleDialogEvent (myEvent: EventRecord): Boolean;°dONLNd*aHmú(jHIMPLEMENTATION°dONLNd:}Hâ*M{DoSetupUserItems: set up application-defined ("user") items in a dialog box}°dONLNdâãZó˛+FPROCEDURE DoSetupUserItems (myKind: Integer; VAR myDialog: DialogPtr);°dONLNd“ôl•~+VAR°dONLNdŸß~≥®+myType:°dONLNd‰ßΔ≥ˆ)HInteger;°dONLNdµ~¡®(æ~myHand:°dONLNd˚µΔ¡)HHandle;°dONLNd√~œ®(Ã~myRect:°dONLNd√Δœ‰)HRect;°dONLNd—~›¢(⁄~count:°dONLNd$—Δ›ˆ)HInteger;°dONLNd0fl~Î¥(Ë~    origPort:°dONLNd=flΔΈ)HGrafPtr;°dONLNdGÌZ˘x(ˆZBEGIN°dONLNdO˚lÿ+GetPort(origPort);°dONLNdd    lÿ*SetPort(myDialog);°dONLNdz%l1¿*CASE myKind OF°dONLNdå3~?‰+rVennDPrefsDial: °dONLNd¢AêMÄ+(FOR count := 1 TO kVennPrefsItemCount DO°dONLNd–O¢[å+'IF count IN [iExist1Icon..iExist4Icon, °dONLNd]¸i∞+ZiEmpty1Icon..iEmpty4Icon] THEN°dONLNd&k¢w¿(t¢BEGIN°dONLNd2y¥Ö˛+7GetDialogItem(myDialog, count, myType, myHand, myRect);°dONLNdpá¥ìÊ*3SetDialogItem(myDialog, count, myType, @DoUserItem,°dONLNd∫ï‘°
  10861. (û‘     myRect);°dONLNd…£¢Ø∫(¨¢END;°dONLNd—±~Ω¥(∫~    OTHERWISE
  10862. ^ÇH4`}Cˇˇˇˇˇˇ,     Helvetica    .(f
  10863. Figure C-0*     Listing C-0*    T)able C-0ˇ
  10864. ö@ˇ ˇˇˇˇ@
  10865. ˇ·ˇ‚7^
  10866. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CC,     Helvetica    ˇˇ—ÚˇÆ(@l Dialog Code4⁄*˙¯
  10867. (‡*2064^*¿¯,
  10868. Courier.°dONLNd\rhx(er;°dONLNdjNvf(sNEND;°dONLNd ÜNí∫*SetPort(origPort);°dONLNd î<†T(ù<END;°dONLNd&∞*ºt(π*7{DoSetupCtrlValues: install initial values in a dialog}°dONLNd_æ< h+2PROCEDURE DoSetupCtrlValues (myDialog: DialogPtr);°dONLNdîÃNÿ`+VAR°dONLNdõ⁄`ÊÑ+count:°dONLNd•⁄®Êÿ)HInteger;°dONLNd±Ë`Ùä(Ò`myType:°dONLNdºË®Ùÿ)HInteger;°dONLNd»ˆ`ä(ˇ`myHand:°dONLNd”ˆ®“)HHandle;°dONLNdfi`ä(`myRect:°dONLNdÈ®Δ)HRect;°dONLNdÚ`ñ(`    origPort:°dONLNdˇ®ÿ)HGrafPtr;°dONLNd     <,Z()<BEGIN°dONLNd.N:“+IF myDialog = NIL THEN°dONLNd+<`H+exit(DoSetupCtrlValues);°dONLNdGXNd∫(aNGetPort(origPort);°dONLNddXd‘)Δ {save the current graphics port}°dONLNdáfNr∫(oNSetPort(myDialog);°dONLNd§frŒ)Δ{always do this before drawing}°dONLNdΔtNÄÃ(}NShowWindow(myDialog);°dONLNd‡êNú*IF myDialog = gPrefsDialog THEN°dONLNdû`™~+BEGIN°dONLNd¨r∏b+(FOR count := 1 TO kVennPrefsItemCount DO°dONLNd;∫ÑΔú+BEGI°dONLNd?∫úΔ¢)N°dONLNdG»ñ‘Í(—ñGetDialogItem(°dONLNdU»Í‘§)TmyDialog, count, myType, myHand°dONLNdt»§‘™)∫,°dONLNdÅ÷‚ˆ(fl °dONLNdÇ÷ˆ‚&)myRect);°dONLNdë‰ñh(Ìñ#IF myType = ctrlItem + radCtrl THEN°dONLNdºÚ®˛ˆ+CASE count OF°dONLNd“∫ b+iExist1Radio..iExist4Radio: °dONLNd¯Ãí+!SetCtlValue(ControlHandle(myHand)°dONLNdíò)Δ,°dONLNd%fi(ˆ(%fiORD(°dONLNd)ˆ(¯)+gExistIndex = count - (iExist1Radio - 1)));°dONLNd]*∫6b(3∫iEmpty1Radio..iEmpty4Radio: °dONLNdÉ8ÃDí+!SetCtlValue(ControlHandle(myHand)°dONLNd§8íDò)Δ,°dONLNd∞FfiRˆ(OfiORD(°dONLNd¥FˆR¯)+gEmptyIndex = count - (iEmpty1Radio - 1)));°dONLNdÁT®`fi(]®    OTHERWISE°dONLNd˘b∫n¿+;°dONLNdp®|¿(y®END;°dONLNd~ñäh(áñ#IF myType = ctrlItem + chkCtrl THEN°dONLNd8å®òˆ+CASE count OF°dONLNdNö∫¶&+iGetNextRandomly: °dONLNdj®Ã¥í+!SetCtlValue(ControlHandle(myHand)°dONLNdã®í¥ò)Δ,ˇ'é@ˇ ˇˇˇˇ@
  10869. ˇ·ˇ‚7^
  10870. 4H\, Palatino&e.3+ä"    APPENDIX ‡Ò)CC,     Helvetica    ˇˇ—ÚˇÆ(@ä Dialog Code4⁄ä˙
  10871. (‡207
  10872. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10873. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10874.  
  10875.  
  10876.  
  10877.  
  10878.  
  10879. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  10880. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10881. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10882.  
  10883.  
  10884.  
  10885.  
  10886.  
  10887. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜˝˛ˇ˛˛¸ˇˇ ˇˇ˛ˇˇ    ˇ¸ˇ ˇˇ˛ˇˇ
  10888. ˛ˇ˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  10889. 454+?òÄ
  10890. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10891. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10892.  
  10893.  
  10894.  
  10895.  
  10896.  
  10897. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˛˙ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ¸˛ˇˇ˜˛¸ˇˇ˜˝ˇˇ˛
  10898. ˛ˇˇˇˇ
  10899. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚˛˙ˇ˜˝˛ˇ˛
  10900. ˛ˇ˛ˇˇ
  10901. ˛ˇ˛ˇˇ˝˛ˇ˛˜    ˇ˛ˇ˛ ˇˇ˛ˇˇ ˇˇ˛ˇˇ˚ˇˇ˜˜˜˜¸˛ˇˇ    ˝ˇ˛ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ˜˝˛ˇ˛
  10902. ˛ˇ˛ˇˇ
  10903. ˛ˇ˛ˇˇ˝˛ˇ˛˜˜˝˛ˇ˛
  10904. ˛ˇ˛ˇˇ
  10905. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  10906. ˛ˇˇˇˇ
  10907. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  10908. Courier.°dONLNd\2hP(e2 ORD(°dONLNd\PhŒ)gStepRandom = TRUE));°dONLNd#jÿvD(sÿiShowSchoolNames: °dONLNd?xÍÑ∂+"SetCtlValue(ControlHandle(myHand),°dONLNdax∂Ѻ)à°dONLNdpÜ2íP(è2 ORD(°dONLNduÜPí»)gShowNames = TRUE));°dONLNdíîÿ†>(ùÿiUseExistImport: °dONLNd≠¢ÍÆ∞+!SetCtlValue(ControlHandle(myHand)°dONLNdŒ¢∞Æ∂)Δ,°dONLNd›∞2ºP(π2 ORD(°dONLNd‚∞PºŒ)gGiveImport = TRUE));°dONLNdæÿ &(«ÿiAutoAdjust: °dONLNdÃÍÿ∞+!SetCtlValue(ControlHandle(myHand)°dONLNd8Ã∞ÿ∂)Δ,°dONLNdG⁄2ÊP(„2 ORD(°dONLNdL⁄PÊŒ)gAutoAdjust = TRUE));°dONLNdiËΔÙ¸(ÒΔ    OTHERWISE°dONLNd{ˆÿfi+;°dONLNdÑΔfi(ΔEND;°dONLNdé¢∫(¢END;°dONLNdñ ~,ñ()~END;°dONLNdû<lHÿ(ElSetPort(origPort);°dONLNdª<2H
  10909. )Δ${restore the previous graphics port}°dONLNd·JZVr(SZEND;°dONLNdÁfHr˛(oHI{DoUserItem: handle drawing of application-defined items in a dialog box}°dONLNd2tZĬ+<PROCEDURE DoUserItem (myDialog: DialogPtr; myItem: Integer);°dONLNdqÇlé~+VAR°dONLNdxê~ú®+myType:°dONLNdÉêΔúˆ)HInteger;°dONLNdèû~™®(ß~myHand:°dONLNdöûΔ™)HHandle;°dONLNd•¨~∏®(µ~myRect:°dONLNd∞¨Δ∏‰)HRect;°dONLNdπ∫~Δ¥(√~    origPort:°dONLNdΔ∫ΔΔˆ)HGrafPtr;°dONLNd–»Z‘x(—ZBEGIN°dONLNdÿ÷l‚ÿ+GetPort(origPort);°dONLNd̉lÿ*SetPort(myDialog);°dONLNdl º*8GetDialogItem(myDialog, myItem, myType, myHand, myRect);°dONLNd?l(&*IF myDialog = gPrefsDialog THEN°dONLNdb*~6“+CASE myItem OF°dONLNdu8êD,+iExist1Icon..iExist4Icon: °dONLNdïF¢R¿+BEGIN°dONLNd°T¥`&+DoPlotIcon(myRect, °dONLNdøb¸nÚ+H)GetIcon(kExistID + myItem - iExist1Icon),°dONLNdÛp¸|n*myDialog, srcCopy);°dONLNd ~¢ä∫(á¢END;°dONLNdåêò,(ïêiEmpty1Icon..iEmpty4Icon: °dONLNd5ö¢¶¿+BEGIN°dONLNdA®¥¥&+DoPlotIcon(myRect, ˇ
  10910. @ˇ ˇˇˇˇ@
  10911. ˇ·ˇ‚7^
  10912. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CC,     Helvetica    ˇˇ—ÚˇÆ(@l Dialog Code4⁄*˙¯
  10913. (‡*2084^*¿¯,
  10914. Courier.°dONLNd\fih‘(efi)GetIcon(kEmptyID + myItem - iEmpty1Icon),°dONLNd4jfivP*myDialog, srcCopy);°dONLNdNxñÑ(ÅñFrameRect(myRect);°dONLNdfÜÑíú(èÑEND;°dONLNdoîr†®(ùr    OTHERWISE°dONLNd~¢ÑÆä+;°dONLNdÉ∞`º¢(π` END; {CASE}°dONLNdíÃNÿ∫(’NSetPort(origPort);°dONLNdÆÃÿå)¥{restore original port}°dONLNd«⁄<ÊT(„<END;°dONLNdÕˆ*J(ˇ*0{DoModelessDialog: put up a modeless dialog box}°dONLNdˇ<‡+FPROCEDURE DoModelessDialog (myKind: Integer; VAR myDialog: DialogPtr);°dONLNdHN`+VAR°dONLNdO `,ú+
  10915. myPointer:°dONLNd] ®,¿)HPtr;°dONLNdc.<:Z(7<BEGIN°dONLNdk<NH“+IF myDialog = NIL THEN°dONLNdã<HŒ)¥"{the dialog box doesn't exist yet}°dONLNd±J`V~(S`BEGIN°dONLNdªXrdn+*myPointer := NewPtr(sizeof(DialogRecord));°dONLNdÍfrr¸*IF myPointer = NIL THEN°dONLNdtÑÄ+exit(DoModelessDialog);°dONLNd$êrú‘(ôr;myDialog := GetNewDialog(myKind, myPointer, WindowPtr(-1));°dONLNddûr™¸*IF myDialog <> NIL THEN°dONLNdŨÑ∏¢+BEGIN°dONLNdç∫ñΔh+#DoSetupUserItems(myKind, myDialog);°dONLNdΩ∫ÄΔÚ)Í{set up user items}°dONLNd◊»ñ‘8(—ñDoSetupCtrlValues(myDialog)°dONLNd˘»8‘>)¢;°dONLNdˇ»n‘¯)6{set up initial values}°dONLNd÷Ñ‚ú(flÑEND;°dONLNd$‰`r(Ì`END°dONLNd*ÚN˛f(˚NELSE°dONLNd2` ~+BEGIN°dONLNd<r+ShowWindow(myDialog);°dONLNdVr(¸*SelectWindow(myDialog);°dONLNdr*r6fi*SetPort(myDialog);°dONLNdà8`Dx(A`END;°dONLNdéF<RT(O<END;°dONLNdîb*nò(k*={DoHandleDialogEvent: handle events in modeless dialog boxes}°dONLNd”p<|™+=FUNCTION DoHandleDialogEvent (myEvent: EventRecord): Boolean;°dONLNd~Nä`+VAR°dONLNdå`òÆ+eventHandled:°dONLNd-åÃò¸)lBoolean;°dONLNd:å&ò¬)Z{did we handle the event?}°dONLNdXö`¶ñ(£`    myDialog:°dONLNdgöö)l
  10916. DialogPtr;°dONLNdv®`¥ä(±`myItem:°dONLNdɮå¸)lInteger;ˇ&4@ˇ ˇˇˇˇ@
  10917. ˇ·ˇ‚7^
  10918. 4H\, Palatino&e.3+ä"    APPENDIX ‡Ò)CC,     Helvetica    ˇˇ—ÚˇÆ(@ä Dialog Code4⁄ä˙
  10919. (‡209
  10920. ˇˇˇˇˇˇˇˇ440lòÄ0@0oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10921. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10922.  
  10923.  
  10924.  
  10925.  
  10926.  
  10927. ˆ                        ˜¯˘˙˚¸˝˛ˇ@0o@0o$——————————————————————————————òÄ
  10928. 60@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10929. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10930.  
  10931.  
  10932.  
  10933.  
  10934.  
  10935. ˆ                        ˜¯˘˙˚¸˝˛ˇ60@60@˜˜˜˜˜˜˜˜˜˜˜˜˝˛ˇ˛˛¸ˇˇ ˇˇ˛ˇˇ    ˇ¸ˇ ˇˇ˛ˇˇ
  10936. ˛ˇ˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  10937. 454+?òÄ
  10938. 56+@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10939. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10940.  
  10941.  
  10942.  
  10943.  
  10944.  
  10945. ˆ                        ˜¯˘˙˚¸˝˛ˇ56+@56+@$˛˙ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ¸˛ˇˇ˜˛¸ˇˇ˜˝ˇˇ˛
  10946. ˛ˇˇˇˇ
  10947. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚˛˙ˇ˜˝˛ˇ˛
  10948. ˛ˇ˛ˇˇ
  10949. ˛ˇ˛ˇˇ˝˛ˇ˛˜    ˇ˛ˇ˛ ˇˇ˛ˇˇ ˇˇ˛ˇˇ˚ˇˇ˜˜˜˜¸˛ˇˇ    ˝ˇ˛ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ˜˝˛ˇ˛
  10950. ˛ˇ˛ˇˇ
  10951. ˛ˇ˛ˇˇ˝˛ˇ˛˜˜˝˛ˇ˛
  10952. ˛ˇ˛ˇˇ
  10953. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  10954. ˛ˇˇˇˇ
  10955. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  10956. Courier.°dONLNd\Zhx(eZBEGIN°dONLNdjlv+eventHandled := FALSE;°dONLNd!xlÑ*IF FrontWindow <> NIL THEN°dONLNd?Ü~í2+IF IsDialogEvent(myEvent) THEN°dONLNdbîꆙ+/IF DialogSelect(myEvent, myDialog, myItem) THEN°dONLNdó¢¢Æ¿+BEGIN°dONLNd£∞¥º2+eventHandled := TRUE;°dONLNdø楠 *SetPort(myDialog);°dONLNdŸ⁄¥Ên*IF myDialog = gPrefsDialog THEN°dONLNdËΔÙ‰+BEGIN°dONLNdˆÿ,+CASE myItem OF°dONLNd&Íí+iEmpty1Radio..iEmpty4Radio: °dONLNdM¸Ä+gEmptyIndex := myItem;°dONLNdm Í,Ü()ÍiEmpty1Icon..iEmpty4Icon: °dONLNdí.¸:ò+gEmptyIndex := myItem - 4;°dONLNd∂<ÍHí(EÍiExist1Radio..iExist4Radio: °dONLNd›J¸V‘+$gExistIndex := myItem - iEmpty4Icon;°dONLNd XÍdÜ(aÍiExist1Icon..iExist4Icon: °dONLNd0f¸rJ+gExistIndex :°dONLNd=fJr¯)N= myItem - (iEmpty4Icon + 4);°dONLNddtÍÄV(}ÍiGetNextRandomly: °dONLNdÅǸé∂+gStepRandom := NOT gStepRandom;°dONLNd™êÍú8(ôÍiAutoAdjust: °dONLNd¬û¸™∂+gAutoAdjust := NOT gAutoAdjust;°dONLNdΨÍ∏V(µÍiShowSchoolNames: °dONLNd∫¸Δ™+gShowNames := NOT gShowNames;°dONLNd/»Í‘P(—ÍiUseExistImport: °dONLNdK÷¸‚∂+gGiveImport := NOT gGiveImport;°dONLNdt‰ÍJ(ÌÍiSaveVennPrefs: °dONLNdèÚ¸˛D+ DoSavePrefs;°dONLNd•Í  (    Í    OTHERWISE°dONLNdπ¸+;°dONLNd√ÿ((%ÿEND;°dONLNd—8ÿDÄ*DoSetupCtrlValues(myDialog);°dONLNd˘8∞D
  10957. )ÿ{update values}°dONLNdFΔRfi(OΔEND;°dONLNdT¢`∫(]¢END;°dONLNd"pl|D(yl$DoHandleDialogEvent := eventHandled;°dONLNdH~Zär(áZEND;°dONLNdNöH¶`(£HEND.ˇJ@ˇ ˇˇˇˇ@
  10958. ˇ·ˇ‚7^
  10959. 4^*¿¯ˇ.∞@ˇ ˇˇˇˇ@
  10960. ˇ·ˇ‚7^, Palatino    3,. Ã+ä#    APPENDIX Vø)sD
  10961. 4⁄ä˙
  10962. (‡211
  10963. ˇˇˇˇˇˇˇˇ4l4älòÄ0l@äoMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10964. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10965.  
  10966.  
  10967.  
  10968.  
  10969.  
  10970. ˆ                        ˜¯˘˙˚¸˝˛ˇl@äol@äo$——————————————————————————————òÄ
  10971. l6ä@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10972. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10973.  
  10974.  
  10975.  
  10976.  
  10977.  
  10978. ˆ                        ˜¯˘˙˚¸˝˛ˇl6ä@l6ä@˜˜˜˜˜˜˜˜˜˜˜˜˛˙ˇ˛˙ˇ˛ˇ¸ˇ
  10979. ˛ˇˇ˛ˇˇ˝¸ˇ¸˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  10980. 4è4Ö?òÄ
  10981. è6Ö@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  10982. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  10983.  
  10984.  
  10985.  
  10986.  
  10987.  
  10988. ˆ                        ˜¯˘˙˚¸˝˛ˇè6Ö@è6Ö@$˛˙ˇ˚ˇˇ˚ˇˇ˚ˇˇ    ˛˛ˇˇˇ˜˝˛ˇ˛
  10989. ˛ˇˇˇˇ
  10990. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜    ˛ˇˇ˛
  10991. ˛ˇˇˇˇ
  10992. ˛ˇˇˇˇ    ˝ˇˇˇ˝˛ˇ˛
  10993. ˛ˇ˛ˇˇ
  10994. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  10995. ˛ˇ˛ˇˇ
  10996. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  10997. ˛ˇˇˇˇ
  10998. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜¸˛ˇˇ    ˝ˇ˛ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ˜˜˝˛ˇ˛
  10999. ˛ˇ˛ˇˇ
  11000. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  11001. ˛ˇ˛ˇˇ
  11002. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  11003. ˛ˇˇˇˇ
  11004. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  11005. vH£4vH£ ûHû
  11006. ˇ·ˇ‚7^ˇˇ¬òˇ◊°dONLNd\äu”(näResour^ê°dONLNd\”u%)Ice Codeˇˇˇˇˇˇ*h(nD
  11007. °dONLNd£äØ‹(¨äThis appendix defiU†°dONLNd £›Ø)S    nes the r–°dONLNd)£Øa)%outines used by the Vâ`°dONLNd>£a؈)_ enn Diagrammer application to cr%`°dONLNd^£˜Ø)ñeate, °dONLNdd∞äºç(πärE°dONLNde∞麉)ead, and write the rw‡°dONLNdy∞‰º¸)Vesour¿ °dONLNd~∞¸ºF)ces it uses to stor@°dONLNdë∞Gºq)K
  11008. e the userÉ°dONLNdõ∞rºÖ)+’s prŒ`°dONLNd†∞Öºï)eferzÄ°dONLNd§∞ñº˙)ences. The application °dONLNdªΩä…æ(Δä expects to fiÚ@°dONLNd»Ωæ…Í)4
  11009. nd those r4@°dONLNd“ΩÎ…)-esour|Ä°dONLNd◊Ω…+)
  11010. ces in a fi9‡°dONLNd‚Ω,…c)) le named “Vì°dONLNdÌΩb…π)6enn Diagrammer PrY†°dONLNd˛Ω∫… )Xefer¿°dONLNdΩÀ…)ences” in the °dONLNd ä÷ì(”äPrN†°dONLNd î÷§)
  11011. efer˙¿°dONLNd §÷    )ences folder in the curr\Ä°dONLNd. 
  11012. ÷})fently-active System folder»`°dONLNdH |÷µ)r. If no such fi‘ °dONLNdW µ÷¯)9le is found, the °dONLNdh◊ä„Δ(‡äapplication crÏ °dONLNdv◊Δ„)<eates a new fi}Ä°dONLNdÑ◊„=)<le of the desir&°dONLNdì◊>„)<3ed name in that location; then it copies into that °dONLNdΔ‰äê(Ìäfiå¿°dONLNd»‰êÁ)le a default set of pr`°dONLNdfi‰Ë¯)XeferØÄ°dONLNd‚‰¯›)7ences settings that is contained in the application’s r˛°dONLNd‰›ı)ÂesourF@°dONLNd‰ˆ)ce fi ‡°dONLNd#‰)le.,
  11013. Courier.°dONLNd'˚HÆ(HUNIT Preferences;°dONLNd9    H~*    INTERFACE°dONLNdDZ#r+USES°dONLNdK%l1+Folders, Global, Utilities;°dONLNdiAZMx(JZCONST°dONLNdqOl[Δ+kPrefResType = °dONLNdÜOÿ[)l'PRFN';°dONLNdêO[¬)6{type of preferences resource}°dONLNd±]li∫(flkPrefResID = °dONLNdƒ]ÿi)l259;°dONLNdÀ]iÏ)6%{resource ID of preferences resource}°dONLNdÛyZÖr(ÇZTYPE°dONLNd˙álìÏ+@{structure of a resource that contains Venn diagram preferences}°dONLNd=ïl°fi*MyPrefsRec = RECORD°dONLNdT£~Ø¥+    autoDiag:°dONLNda£Δ؈)HBoolean;°dONLNdm£ØÚ)H&{do we automatically fix the diagram?}°dONLNdó±~Ω¥(∫~    showName:°dONLNd§±ΔΩˆ)HBoolean;°dONLNd∞±ΩÚ)H&{do we show names of valid arguments?}°dONLNd⁄ø~À¥(»~    isImport:°dONLNdÁøΔÀˆ)HBoolean;°dONLNdÛøÀÚ)H&{do subjects have existential import?}°dONLNdÕ~Ÿ¥(÷~    isRandom:°dONLNd*ÕΔŸˆ)HBoolean;°dONLNd6ÕŸÏ)H%{do we select next setting randomly?}°dONLNd_€~Á¥(‰~    emptyInd:°dONLNdl€ΔÁˆ)HInteger;°dONLNdx€Á˛)H({index of the desired emptiness pattern}°dONLNd§È~ı¥(Ú~    existInd:°dONLNd±ÈΔıˆ)HInteger;°dONLNdΩÈı¯)H'{index of the desired existence symbol}°dONLNdÁ˜l~(lEND°dONLNd͘~Ñ);°dONLNdÓl(lMyPrefsPtr = ^MyPrefsRec;°dONLNd
  11014. l*MyPrefsHnd = ^MyPrefsPtr;°dONLNd&/Z;(8ZGFUNCTION DoCopyResource (rType: ResType; rID: Integer; source: Integer;°dONLNdx=¸IÜ+¢ dest: Integer): OSErr;°dONLNdëKZWfi(TZPROCEDURE DoReadPrefs;°dONLNd©YZefi*PROCEDURE DoSavePrefs;°dONLNd¡uHÅú(~HIMPLEMENTATION°dONLNd—ëHù®*{DoCopyResource}°dONLNd‚üH´˛*I{copy a resource from one open resource file [source] to another [dest];}°dONLNd,≠Hπz*3{make sure not to alter the current resource file }
  11015. ^ÇH4`}Cˇˇˇˇˇˇ,     Helvetica    .(f
  11016. Figure D-0*     Listing D-0*    T)able D-0ˇé@ˇ ˇˇˇˇ@
  11017. ˇ·ˇ‚7^
  11018. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CD,     Helvetica    ˇˇ—ÚˇÆ(@lResource Code4⁄*˙¯
  11019. (‡*2124^*¿¯,
  11020. Courier.°dONLNd\*h(e*&{ and to preserve resource attributes}°dONLNd(j<vÊ+GFUNCTION DoCopyResource (rType: ResType; rID: Integer; source: Integer;°dONLNdzxfiÑh+¢ dest: Integer): OSErr;°dONLNdîÜNí`(èNVAR°dONLNdõî`†ñ+    myHandle:°dONLNd®î®†“)HHandle;°dONLNd∂î&†Œ)~{handle to resource to copy}°dONLNd÷¢`Æä(´`myName:°dONLNd·¢®Æ“)HStr255;°dONLNdÔ¢&Ƭ)~{name of resource to copy}°dONLNd∞`ºä(π`myAttr:°dONLNd∞®ºÿ)HInteger;°dONLNd'∞&º§)~{resource attributes}°dONLNd@æ` ä(«`myType:°dONLNdKæ® ÿ)HResType;°dONLNdZæ& ⁄)~{ignored; used for GetResInfo}°dONLNd|Ã`ÿ~(’`myID:°dONLNdÖîÿÿ)HInteger;°dONLNdîÃ&ÿ⁄)~{ignored; used for GetResInfo}°dONLNd∂⁄`Êñ(„`    myResult:°dONLNd√⁄®ÊÃ)HOSErr;°dONLNdÕË`Ùú(Ò`
  11021. myCurrent:°dONLNd€Ë®Ùÿ)HInteger;°dONLNdÎË8Ù¯)ê {current resource file on entry}°dONLNdˆ<Z(ˇ<BEGIN°dONLNdNfi+myCurrent := CurResFile;°dONLNd:8¯)Í {remember current resource file}°dONLNd]N¿(NUseResFile(source);°dONLNd}8Ï)Í{set the source resource file}°dONLNdû N,,()N%myHandle := Get1Resource(rType, rID);°dONLNd– 8,‘)Í{open the source resource}°dONLNdÌ.N:ÿ(7NIF myHandle <> NIL THEN°dONLNd<`H~+BEGIN°dONLNdJrVt++GetResInfo(myHandle, myID, myType, myName);°dONLNdLJÄV‘(SÄ{get res name}°dONLNd_Xrd2(ar myAttr := GetResAttrs(myHandle);°dONLNdéXÄd¯(aÄ{get res attributes}°dONLNdßfrr(orDetachResource(myHandle);°dONLNdÀf8rÊ)Δ{so we can copy the resource}°dONLNdÌtrÄÿ(}rUseResFile(dest);°dONLNd    t8ÄÚ)Δ{set destination resource file}°dONLNd-Çré(ãrIF ResError = noErr THEN°dONLNdKêÑúÄ+*AddResource(myHandle, rType, rID, myName);°dONLNdzûr™(ßrIF ResError = noErr THEN°dONLNdò¨Ñ∏8+SetResAttrs(myHandle, myAttr);°dONLNd¿¨8∏‡)¥{set res attributes of copy}°dONLNd·∫rΔ(√rIF ResError = noErr THEN°dONLNdˇ»Ñ‘+ChangedResource(myHandle)°dONLNd»‘ )ñ;°dONLNd#»8‘‘){mark resource as changed}°dONLNdB÷r‚(flrIF ResError = noErr THEN°dONLNd`‰Ñ+WriteResource(myHandle);°dONLNdlj8∂)¥{write resource data}°dONLNdõÚ`˛x(˚`END;°dONLNd£N(NDoCopyResource := ResError;°dONLNdÀ8∞)Í{return result code}°dONLNd‚N(Í(%NReleaseResource(myHandle);°dONLNd    8(‘)Í{get rid of resource data}°dONLNd&*N6“(3NUseResFile(myCurrent);°dONLNdI*86¯)Í {restore original resource file}°dONLNdk8<DT(A<END;°dONLNdqT*`¢(]*{DoCreatePrefsFile:}°dONLNdÜb*nn*6{Create a preferences file in the specified location.}°dONLNdΩp*|∞*A{The initial settings are just those in the app's resource file.}°dONLNd~<ä¬+AFUNCTION DoCreatePrefsFile (myVRefNum: Integer; myDirID: LongInt;°dONLNdMåòå+¥ myName: Str255): Integer;°dONLNdjöN¶`(£NVAR°dONLNdq®`¥ñ+    myResNum:°dONLNd~®®¥ÿ)HInteger;ˇ)H@ˇ ˇˇˇˇ@
  11022. ˇ·ˇ‚7^
  11023. 4H\, Palatino&e.3+ä"    APPENDIX ‡Ò)CD,     Helvetica    ˇˇ—ÚˇÆ(@äResource Code4⁄ä˙
  11024. (‡213
  11025. ˇˇˇˇˇˇˇˇ4l4älòÄ0l@äoMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11026. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11027.  
  11028.  
  11029.  
  11030.  
  11031.  
  11032. ˆ                        ˜¯˘˙˚¸˝˛ˇl@äol@äo$——————————————————————————————òÄ
  11033. l6ä@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11034. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11035.  
  11036.  
  11037.  
  11038.  
  11039.  
  11040. ˆ                        ˜¯˘˙˚¸˝˛ˇl6ä@l6ä@˜˜˜˜˜˜˜˜˜˜˜˜˛˙ˇ˛˙ˇ˛ˇ¸ˇ
  11041. ˛ˇˇ˛ˇˇ˝¸ˇ¸˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  11042. 4è4Ö?òÄ
  11043. è6Ö@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11044. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11045.  
  11046.  
  11047.  
  11048.  
  11049.  
  11050. ˆ                        ˜¯˘˙˚¸˝˛ˇè6Ö@è6Ö@$˛˙ˇ˚ˇˇ˚ˇˇ˚ˇˇ    ˛˛ˇˇˇ˜˝˛ˇ˛
  11051. ˛ˇˇˇˇ
  11052. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜    ˛ˇˇ˛
  11053. ˛ˇˇˇˇ
  11054. ˛ˇˇˇˇ    ˝ˇˇˇ˝˛ˇ˛
  11055. ˛ˇ˛ˇˇ
  11056. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  11057. ˛ˇ˛ˇˇ
  11058. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  11059. ˛ˇˇˇˇ
  11060. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜¸˛ˇˇ    ˝ˇ˛ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ˜˜˝˛ˇ˛
  11061. ˛ˇ˛ˇˇ
  11062. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  11063. ˛ˇ˛ˇˇ
  11064. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  11065. ˛ˇˇˇˇ
  11066. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  11067. Courier.°dONLNd\~h¥(e~    myResult:°dONLNd\ΔhÍ)HOSErr;°dONLNdj~vú(s~myID:°dONLNd jΔvˆ)HInteger;°dONLNd,jv)H+{resource ID of resource in app's res fork}°dONLNd[x~Ñ¥(Å~    myHandle:°dONLNdhxΔÑ)HHandle;°dONLNdsxÑÚ)H&{handle to resource in app's res fork}°dONLNdùÜ~í®(è~myType:°dONLNd®ÜΔíˆ)HResType;°dONLNd¥Üí¬)H{ignored; used for GetResInfo}°dONLNd‘îZ†x(ùZBEGIN°dONLNd‹¢lÆÿ+myResult := noErr;°dONLNdÒ∞lºn*+HCreateResFile(myVRefNum, myDirID, myName);°dONLNdæl ¸*IF ResError = noErr THEN°dONLNd;Ã~ÿú+BEGIN°dONLNdE⁄êÊ+@myResNum := HOpenResFile(myVRefNum, myDirID, myName, fsCurPerm);°dONLNdäËêÙ*IF myResNum <> -1 THEN°dONLNd¶ˆ¢¿+BEGIN°dONLNd≤¥h+UseResFile(gAppsResourceFile);°dONLNd◊¥Ê*3myHandle := Get1Resource(kPrefResType, kPrefResID);°dONLNd ¥,D*IF ResError = noErr THEN°dONLNd1.Δ:‰+BEGIN°dONLNd?<ÿH⁄++GetResInfo(myHandle, myID, myType, myName);°dONLNdsJÿVÏ*.myResult := DoCopyResource(kPrefResType, myID,°dONLNd±XVd
  11068. +~ gAppsResourceFile, myResNum);°dONLNd◊fΔrÿ(oΔEND°dONLNd·t¥ÄÃ(}¥ELSE°dONLNdÌÇΔé‰+BEGIN°dONLNd˚êÿúb+CloseResFile(myResNum);°dONLNdûÿ™¯*0myResult := HDelete(myVRefNum, myDirID, myName);°dONLNdT¨ÿ∏2*myResNum := -1;°dONLNdk∫ΔΔfi(√ΔEND;°dONLNdu»¢‘∫(—¢END;°dONLNd‰êD(ÌêDoCreatePrefsFile := myResNum;°dONLNd°Ú~˛ñ(˚~END;°dONLNdßZ Í(    ZEND; {DoCreatePrefsFile}°dONLNd¡H(ú(%H{DoReadPrefs:}°dONLNd–*H6*M{Open the application's global preferences file and read indicated settings.}°dONLNd8ZDfi+PROCEDURE DoReadPrefs;°dONLNd8FlR~+VAR°dONLNd?T~`∫+
  11069. myVRefNum:°dONLNdMTΔ`ˆ)HInteger;°dONLNdYb~nÆ(k~myDirID:°dONLNdebΔnˆ)HLongInt;°dONLNdqp~|®(y~myName:°dONLNd|pΔ|)HStr255;°dONLNdáp|™)H{name of this application}°dONLNd•~~äÆ(á~myPrefs:°dONLNd±~Δä)HHandle;°dONLNdº~ä‡)H#{handle to actual preferences data}°dONLNd„å~ò¥(ï~    myResNum:°dONLNdåΔòˆ)HInteger;°dONLNd¸åò
  11070. )H*{reference number of opened resource file}°dONLNd*ö~¶¥(£~    myResult:°dONLNd7öΔ¶Í)HOSErr;°dONLNd@®l¥ä(±lCONSTˇ
  11071. ¬@ˇ ˇˇˇˇ@
  11072. ˇ·ˇ‚7^
  11073. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CD,     Helvetica    ˇˇ—ÚˇÆ(@lResource Code4⁄*˙¯
  11074. (‡*2144^*¿¯,
  11075. Courier.°dONLNd\`h∫(e`kNameID = 4000;°dONLNd\hŒ)ê%{resource ID of 'STR#' with filename}°dONLNd>j<vZ(s<BEGIN°dONLNdFxNÑ\+-{Determine the name of the preferences file.}°dONLNdvÜNí*!GetIndString(myName, kNameID, 1);°dONLNdõ¢NÆJ**{Figure out where the preferences file is.°dONLNd≈¢JÆP)¸}°dONLNd…∞NºΔ(πNIF IsFindFolder THEN°dONLNd·æ` Œ+=myResult := FindFolder(kOnSystemDisk, kPreferencesFolderType,°dONLNd*Ãÿ‘+ê& kDontCreateFolder, myVRefNum, myDirID°dONLNdPÑÿ⁄)‰)°dONLNdT⁄NÊf(„NELSE°dONLNd\Ë`Ù∫+myResult := -1;°dONLNdoNfi(NIF myResult <> noErr THE°dONLNdáfi‰)êN°dONLNdå`~(`BEGIN°dONLNdñ r,Ã+myVRefNum := 0;°dONLNd≠ ,z)ê{use default volume}°dONLNdΔ.r:¿(7rmyDirID := 0;°dONLNd€.:å)ê{use default directory}°dONLNdˆ<`Hx(E`END;°dONLNd˛XNd,(aN%{Open the preferences resource file.}°dONLNd&fNrŒ*@myResNum := HOpenResFile(myVRefNum, myDirID, myName, fsCurPerm);°dONLNdlÇNé§*9{If no preferences file successfully opened, create one }°dONLNd®êNú§*9{ by copying default preferences in app's resource file.}°dONLNd‰ûN™Ã*IF myResNum = -1 THEN°dONLNd˝¨`∏º+:myResNum := DoCreatePrefsFile(myVRefNum, myDirID, myName);°dONLNd>»N‘“(—NIF myResNum <> -1 THEN°dONLNd^»‘Ï)¥'{if we successfully opened the file...}°dONLNdâ÷`‚~(fl`BEGIN°dONLNdì‰r+UseResFile(myResNum);°dONLNd∞‰Ú)ê({make the new resource file current one}°dONLNd›Úr˛û(˚r2myPrefs := Get1Resource(kPrefResType, kPrefResID);°dONLNdr *IF myPrefs = NIL THEN°dONLNd/Ñ+exit(DoReadPrefs);°dONLNdFr( (%rWITH MyPrefsHnd(myPrefs)^^ DO°dONLNdi*Ñ6¢+BEGIN°dONLNdu*6º)~{read the preferences settings}°dONLNdõ8ñD&(AñgAutoAdjust := autoDiag;°dONLNd∫FñR *gShowNames := showName;°dONLNdÿTñ`&*gGiveImport := isImport;°dONLNd˜bñn&*gStepRandom := isRandom;°dONLNdpñ|&*gEmptyIndex := emptyInd;°dONLNd5~ñä&*gExistIndex := existInd;°dONLNdSåÑòú(ïÑEND;°dONLNd]®r¥í(±r0{Make sure some preferences globals make sense.}ˇ(º@ˇ ˇˇˇˇ@
  11076. ˇ·ˇ‚7^
  11077. 4H\, Palatino&e.3+ä"    APPENDIX ‡Ò)CD,     Helvetica    ˇˇ—ÚˇÆ(@äResource Code4⁄ä˙
  11078. (‡215
  11079. ˇˇˇˇˇˇˇˇ4l4älòÄ0l@äoMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11080. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11081.  
  11082.  
  11083.  
  11084.  
  11085.  
  11086. ˆ                        ˜¯˘˙˚¸˝˛ˇl@äol@äo$——————————————————————————————òÄ
  11087. l6ä@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11088. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11089.  
  11090.  
  11091.  
  11092.  
  11093.  
  11094. ˆ                        ˜¯˘˙˚¸˝˛ˇl6ä@l6ä@˜˜˜˜˜˜˜˜˜˜˜˜˛˙ˇ˛˙ˇ˛ˇ¸ˇ
  11095. ˛ˇˇ˛ˇˇ˝¸ˇ¸˛ˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  11096. 4è4Ö?òÄ
  11097. è6Ö@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11098. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11099.  
  11100.  
  11101.  
  11102.  
  11103.  
  11104. ˆ                        ˜¯˘˙˚¸˝˛ˇè6Ö@è6Ö@$˛˙ˇ˚ˇˇ˚ˇˇ˚ˇˇ    ˛˛ˇˇˇ˜˝˛ˇ˛
  11105. ˛ˇˇˇˇ
  11106. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜    ˛ˇˇ˛
  11107. ˛ˇˇˇˇ
  11108. ˛ˇˇˇˇ    ˝ˇˇˇ˝˛ˇ˛
  11109. ˛ˇ˛ˇˇ
  11110. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˝ˇˇ˛ˇ˚˝ˇ¸˛¸ˇˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˝˛ˇ˛
  11111. ˛ˇ˛ˇˇ
  11112. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  11113. ˛ˇˇˇˇ
  11114. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜¸˛ˇˇ    ˝ˇ˛ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ˜˜˝˛ˇ˛
  11115. ˛ˇ˛ˇˇ
  11116. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  11117. ˛ˇ˛ˇˇ
  11118. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  11119. ˛ˇˇˇˇ
  11120. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  11121. Courier.°dONLNd\êhb(eê#IF NOT (gExistIndex IN [1..4]) THEN°dONLNd)j¢v+gExistIndex := 1;°dONLNd?xêÑb(Åê#IF NOT (gEmptyIndex IN [1..4]) THEN°dONLNdhÜ¢í+gEmptyIndex := 1;°dONLNd¢êÆò(´ê,{Reinstate the application's resource file.}°dONLNd∞∞êºD*UseResFile(gAppsResourceFile);°dONLNd“æ~ ñ(«~END;°dONLNd⁄⁄lÊ(„lgPreferencesFile := myResNum;°dONLNd⁄VÊÚ)Í{remember its resource ID}°dONLNd ËZÙΔ(ÒZEND; {DoReadPrefs}°dONLNd4Hú(H{DoSavePrefs:}°dONLNdCH2*'{Save the current preference settings.}°dONLNdl Z,fi+PROCEDURE DoSavePrefs;°dONLNdÖ.l:~+VAR°dONLNdå<~H¿+ myPrefData:°dONLNdõ<ΔH)HHandle;°dONLNd¶<Hº)H{handle to new resource data}°dONLNd«J~V¥(S~    myHandle:°dONLNd‘JΔV)HHandle;°dONLNdflJV»)H{handle to resource to replace}°dONLNdX~d®(a~myName:°dONLNdXΔd)HStr255;°dONLNdXd™)H{name of resource to copy}°dONLNd6f~r®(o~myAttr:°dONLNdAfΔrˆ)HInteger;°dONLNdMfrå)H{resource attributes}°dONLNdft~Ä®(}~myType:°dONLNdqtΔĈ)HResType;°dONLNd}tĬ)H{ignored; used for GetResInfo}°dONLNdüÇ~éú(ã~myID:°dONLNd®ÇΔéˆ)HInteger;°dONLNd¥Çé¬)H{ignored; used for GetResInfo}°dONLNd‘êZúx(ôZBEGIN°dONLNd‹ûl™z+-{Make sure we have an open preferences file.}°dONLNd ¨l∏*IF gPreferencesFile = -1 THEN°dONLNd/∫~ΔÍ+exit(DoSavePrefs);°dONLNdE÷l‚í(fll1myPrefData := NewHandleClear(sizeof(MyPrefsRec));°dONLNdy‰lÿ*HLock(myPrefData);°dONLNdéÚl˛,* WITH MyPrefsHnd(myPrefData)^^ DO°dONLNd≤~ ú+BEGIN°dONLNdºê +autoDiag := gAutoAdjust;°dONLNdŸê(*showName := gShowNames;°dONLNdı*ê6 *isImport := gGiveImport;°dONLNd8êD *isRandom := gStepRandom;°dONLNd/FêR *emptyInd := gEmptyIndex;°dONLNdLTê` *existInd := gExistIndex;°dONLNdhb~nñ(k~END;°dONLNdp~lä(álUseResFile(gPreferencesFile);°dONLNdù~åä(áå{use preferences file}°dONLNd∂ålòû(ïl3myHandle := Get1Resource(kPrefResType, kPrefResID);°dONLNdÏöl¶ˆ*IF myHandle <> NIL THEN°dONLNd®~¥ú+BEGINˇº@ˇ ˇˇˇˇ@
  11122. ˇ·ˇ‚7^
  11123. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CD,     Helvetica    ˇˇ—ÚˇÆ(@lResource Code4⁄*˙¯
  11124. (‡*2164^*¿¯,
  11125. Courier.°dONLNd\rht(er+GetResInfo(myHandle, myID, myType, myName);°dONLNd:\Äh‘(eÄ{get res name}°dONLNdMjrv2(sr myAttr := GetResAttrs(myHandle);°dONLNd|jÄv¯(sÄ{get res attributes}°dONLNdïxrѸ(ÅrRmveResource(myHandle);°dONLNd±Ürí*IF ResError = noErr THEN°dONLNdœîц‡+:AddResource(myPrefData, kPrefResType, kPrefResID, myName);°dONLNd¢rÆ(´rIF ResError = noErr THEN°dONLNd,∞Ѻ +WriteResource(myPrefData);°dONLNdJæ` x(«`END;°dONLNdR⁄NÊΔ(„NHUnlock(myPrefData);°dONLNdiËNÙˆ*ReleaseResource(myPrefData);°dONLNdàˆN*UseResFile(gAppsResourceFile);°dONLNd¥ˆJ¯)¸{restore app's resource file}°dONLNd‘<®(<END; {DoSavePrefs}°dONLNdË.*:l(7* END. {UNIT °dONLNdÛ.l:Æ)B Preferences°dONLNd˛.Æ:¥)B}ˇ)@ˇ ˇˇˇˇ@
  11126. ˇ·ˇ‚7^, Palatino    3,. Ã+ä#    APPENDIX Vø)sE
  11127. 4⁄ä˙
  11128. (‡217
  11129. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11130. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11131.  
  11132.  
  11133.  
  11134.  
  11135.  
  11136. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  11137. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11138. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11139.  
  11140.  
  11141.  
  11142.  
  11143.  
  11144. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˛˙ˇ˛˙ˇ
  11145. ˛ˇˇˇ
  11146. ˛ˇˇˇ
  11147. ˛ˇˇˇ
  11148. ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  11149. 4È4fl?òÄ
  11150. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11151. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11152.  
  11153.  
  11154.  
  11155.  
  11156.  
  11157. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˝˚ˇ˛ˇ˚˛ˇ˚˛ˇ˚˝˚ˇ˜    ˛ˇˇ˛
  11158. ˛ˇˇˇˇ
  11159. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  11160. ˛ˇˇˇˇ
  11161. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˜˜˜˛˙ˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝¸ˇ
  11162. ˛ˇ˛ˇˇ˜˝˛ˇ˛
  11163. ˛ˇˇˇˇ
  11164. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˛˚ˇ˙ˇˇ˜˝ˇˇ˛
  11165. ˛ˇˇˇˇ
  11166. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚˝˛ˇ˛
  11167. ˛ˇ˛ˇˇ
  11168. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  11169. ˛ˇˇˇˇ
  11170. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜¸˛ˇˇ    ˝ˇ˛ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ˜˜˝˛ˇ˛
  11171. ˛ˇ˛ˇˇ
  11172. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  11173. ˛ˇ˛ˇˇ
  11174. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  11175. ˛ˇˇˇˇ
  11176. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜
  11177. vH£4vH£ ûHû
  11178. ˇ·ˇ‚7^ˇˇ¬òˇ◊°dONLNd\äuX(näUser Interface Codeˇˇˇˇˇˇh(nE
  11179. °dONLNd£äØ(¨äThis appendix shows the sour◊`°dONLNd0£Ø)Ñ<ce code that manages the basic setup and user interface for °dONLNdl∞亰(πäthe V˘¿°dONLNdq∞†º)enn Diagrammer application®†°dONLNdã∞ º")Ä.,
  11180. Courier.°dONLNdç«H”N(–HP°dONLNdé«N”“)ROGRAM VennDiagrammer;°dONLNd¶’Z·r+ USES°dONLNd≠„lÔ+Global, Utilities, Dialog, °dONLNd»„ÔP)¢ Preferences°dONLNd”„PÔò)B , VennProcs;°dONLNd‚ˇZ l(ZVAR°dONLNdËlê+gDone:°dONLNdÚ¥‰)HBoolean;°dONLNd¸)H5V(2H-{DoInitManagers: initialize Toolbox Managers}°dONLNd+7ZC+PROCEDURE DoInitManagers;°dONLNdFEZQx*BEGIN°dONLNdNSl_¥+ MaxApplZone;°dONLNddS _¬)¥{extend heap zone to limit}°dONLNdÇalm¥(jl MoreMasters;°dONLNdòa mŒ)¥{get 64 more master pointers}°dONLNdπ}lâfi(ÜlInitGraf(@thePort);°dONLNd÷} â§)¥{initialize QuickDraw}°dONLNdÔãló®(îl
  11181. InitFonts;°dONLNdã ó∂)¥{initialize Font Manager}°dONLNdôl•Æ(¢l InitWindows°dONLNd,ôÆ•¥)B;°dONLNd5ô •¬)r{initialize Window Manager}°dONLNdSßl≥®(∞l
  11182. InitMenus;°dONLNdgß ≥∂)¥{initialize Menu Manager}°dONLNdɵl¡ñ(ælTEInit;°dONLNdîµ ¡û)¥{initialize TextEdit}°dONLNd¨√lœ“(ÃlInitDialogs(NIL);°dONLNd«√ œ¬)¥{initialize Dialog Manager}°dONLNdÊfllÎ(ËlFlushEvents(everyEvent, 0);°dONLNd fl Îí)¥{clear event queue}°dONLNd!Ìl˘Æ(ˆl InitCursor;°dONLNd6Ì ˘»)¥{initialize cursor to arrow}°dONLNdT˚Zr(ZEND;°dONLNdZH#( H#{DoSetupMenus: set up the menu bar}°dONLNd%Z1‰+PROCEDURE DoSetupMenus;°dONLNdô3l?~+VAR°dONLNd†A~MÆ+menuBar:°dONLNd¨AΔM)HHandle;°dONLNdµOZ[x(XZBEGIN°dONLNdΩ]li,+ menuBar := GetNewMBar(rMenuBar);°dONLNd‡klwÍ*IF menuBar = NIL THEN°dONLNd˘y~Ö +DoBadError(eCantFindMenus);°dONLNdïl°‰(ûlSetMenuBar(menuBar);°dONLNd/£l؈*DisposeHandle(menuBar);°dONLNdI±lΩÄ*.AppendResMenu(GetMenuHandle(mApple), 'DRVR'); 
  11183. ^ÇH4`}Cˇˇˇˇˇˇ,     Helvetica    .(f
  11184. Figure E-0*     Listing E-0*    T)able E-0ˇ
  11185. f@ˇ ˇˇˇˇ@
  11186. ˇ·ˇ‚7^
  11187. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CE,     Helvetica    ˇˇ—ÚˇÆ(@lUser Interface Code4⁄*˙¯
  11188. (‡*2184^*¿¯,
  11189. Courier.°dONLNd\Nhñ(eN DrawMenuBar;°dONLNdj<vT(s<END;°dONLNdÜ*íÃ(è*{DoUpdate: update a window}°dONLNd1î<†2+)PROCEDURE DoUpdate (myWindow: WindowPtr);°dONLNd]¢NÆ`+VAR°dONLNdd∞`ºñ+    myHandle:°dONLNdq∞®º)H MyDocRecHnd;°dONLNdÅæ` ä(«`myRect:°dONLNdåæ® Δ)HRect;°dONLNdóæ t)l{tool rectangle}°dONLNd´Ã`ÿñ(’`    origPort:°dONLNd∏îÿÿ)HGrafPtr;°dONLNdƒ⁄`Êê(„`origPen:°dONLNd–⁄®Êfi)H    PenState;°dONLNd›Ë`ÙÑ(Ò`count:°dONLNdÁË®Ùÿ)HInteger;°dONLNdÒˆ<Z(ˇ<BEGIN°dONLNd˘N∫+GetPort(origPort);°dONLNd‘)Δ {remember original drawing port}°dONLNd9N∫(NSetPort(myWindow);°dONLNdO.N:¿*BeginUpdate(myWindo°dONLNdb.¿:“)rw);°dONLNdp.:í)T{clear update region}°dONLNdà<NH(ENEraseRect(myWindow^.portRec°dONLNd£<H)¢t);°dONLNd™XNd¸(aNIF IsAppWindow(myWindow) THEN°dONLNdÀf`r~+BEGIN°dONLNd’trÄ∂+6{Draw two lines separating tools area from work area.}°dONLNdÇré*GetPenState(origPen);°dONLNd.Çé¬)¢{remember original pen state}°dONLNdPêrúÆ(ôr
  11190. PenNormal;°dONLNdcêú∂)¢{reset pen to normal state}°dONLNdÉûr™ÿ(ßrWITH myWindow^ DO°dONLNdö¨Ñ∏¢+BEGIN°dONLNd¶∫ñΔ™+.MoveTo(portRect.left, portRect.top + kToolHt);°dONLNd€»ñ‘&*Line(portRect.right, 0);°dONLNd˙÷ñ‚¬*2MoveTo(portRect.left, portRect.top + kToolHt + 2);°dONLNd3‰ñ&*Line(portRect.right, 0);°dONLNdQÚÑ˛ú(˚ÑEND;°dONLNd[rV(r&{Redraw the tools area in the window.}°dONLNdÜr(&*FOR count := 1 TO kNumTools DO°dONLNd™*Ñ6¢+BEGIN°dONLNd∂8ñDÚ+:SetRect(myRect, kToolWd * (count - 1), 0, kToolWd * count,°dONLNd˙FÃR+6
  11191.  kToolHt);°dONLNd Tñ`Ú(]ñ:DoPlotIcon(myRect, gToolsIcons[count], myWindow, srcCopy);°dONLNdKbÑnú(kÑEND;°dONLNdU~rä\(ár'{Redraw the status area in the window.}°dONLNdÅåròÜ*.myHandle := MyDocRecHnd(GetWRefCon(myWindow));°dONLNd¥ör¶Ü*.DoStatusText(myWindow, myHandle^^.statusText);ˇ'Ä@ˇ ˇˇˇˇ@
  11192. ˇ·ˇ‚7^
  11193. 4H\, Palatino&e.3+ä"    APPENDIX ‡Ò)CE,     Helvetica    ˇˇ—ÚˇÆ(@äUser Interface Code4⁄ä˙
  11194. (‡219
  11195. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11196. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11197.  
  11198.  
  11199.  
  11200.  
  11201.  
  11202. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  11203. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11204. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11205.  
  11206.  
  11207.  
  11208.  
  11209.  
  11210. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˛˙ˇ˛˙ˇ
  11211. ˛ˇˇˇ
  11212. ˛ˇˇˇ
  11213. ˛ˇˇˇ
  11214. ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  11215. 4È4fl?òÄ
  11216. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11217. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11218.  
  11219.  
  11220.  
  11221.  
  11222.  
  11223. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˝˚ˇ˛ˇ˚˛ˇ˚˛ˇ˚˝˚ˇ˜    ˛ˇˇ˛
  11224. ˛ˇˇˇˇ
  11225. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  11226. ˛ˇˇˇˇ
  11227. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˜˜˜˛˙ˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝¸ˇ
  11228. ˛ˇ˛ˇˇ˜˝˛ˇ˛
  11229. ˛ˇˇˇˇ
  11230. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˛˚ˇ˙ˇˇ˜˝ˇˇ˛
  11231. ˛ˇˇˇˇ
  11232. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚˝˛ˇ˛
  11233. ˛ˇ˛ˇˇ
  11234. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  11235. ˛ˇˇˇˇ
  11236. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜¸˛ˇˇ    ˝ˇ˛ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ˜˜˝˛ˇ˛
  11237. ˛ˇ˛ˇˇ
  11238. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  11239. ˛ˇ˛ˇˇ
  11240. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  11241. ˛ˇˇˇˇ
  11242. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  11243. Courier.°dONLNd\êht(eê&{Draw the rest of the content region.}°dONLNd+jêv*DoVennDraw(myWindow);°dONLNdMÜêí*SetPenState(origPen)°dONLNdgÜí)x;°dONLNdlÜDíÏ)<{restore previous pen state}°dONLNdåî~†¸(ù~END; {IF IsAppWindow}°dONLNd•∞lº‰(πlEndUpdate(myWindow);°dONLNdºæl ÿ*SetPort(origPort);°dONLNd⁄æD ˛)ÿ{restore original drawing port}°dONLNd˚ÃZÿr(’ZEND;°dONLNdËHÙ&(ÒH%{DoCreateWindow: create a new window}°dONLNd(ˆZ,+#FUNCTION DoCreateWindow: WindowPtr;°dONLNdNl~+VAR°dONLNdU~∫+
  11244. myPointer:°dONLNdcΔfi)HPtr;°dONLNdk ~,¥()~    myWindow:°dONLNdx Δ,)H
  11245. WindowPtr;°dONLNdÜ.~:¥(7~    myHandle:°dONLNdì.Δ:)H MyDocRecHnd;°dONLNd°<ZHx(EZBEGIN°dONLNd©JlVh+*myPointer := NewPtr(sizeof(WindowRecord));°dONLNd÷Xldˆ*IF myPointer = NIL THEN°dONLNdÒf~r¸+exit(DoCreateWindow);°dONLNd
  11246. ÇléŒ(ãl;myWindow := GetNewWindow(rVennD, myPointer, WindowPtr(-1));°dONLNdHêlúˆ*IF myWindow <> NIL THEN°dONLNdcû~™ú+BEGIN°dONLNdm¨ê∏¸+SetPort(myWindow);°dONLNdÑ∫êΔÏ*:myHandle := MyDocRecHnd(NewHandleClear(sizeof(MyDocRec)));°dONLNdƒ÷ê‚*IF myHandle <> NIL THEN°dONLNd·‰¢¿+BEGIN°dONLNdÌÚ¥˛P+HLockHi(Handle(myHandle));°dONLNd2 Ú+~ {lock the data high in the heap}°dONLNd<¥§(¥(SetWRefCon(myWindow, LongInt(myHandle));°dONLNdu2(+~%{attach data handle to window record}°dONLNd¢8¥DP(A¥DoSetWindowTitle(myWindow)°dONLNd¿8PDV)ú;°dONLNd…8åD)<{set the window title}°dONLNdÁT¥`z(]¥!{Define initial window settings.}°dONLNdb¥n *WITH myHandle^^ DO°dONLNd)pΔ|‰+BEGIN°dONLNd7~ÿä + figure := 1;°dONLNdLåÿò&*mood[1] := 1;°dONLNdböÿ¶&*mood[2] := 1;°dONLNdx®ÿ¥&*mood[3] := 1;ˇ    –@ˇ ˇˇˇˇ@
  11247. ˇ·ˇ‚7^
  11248. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CE,     Helvetica    ˇˇ—ÚˇÆ(@lUser Interface Code4⁄*˙¯
  11249. (‡*2204^*¿¯,
  11250. Courier.°dONLNd\∫hP(e∫isAnswerShowing := FALSE;°dONLNd"j∫vh*isExistImport := gGiveImport;°dONLNdGx®Ñ¿(Å®END;°dONLNdRÜñí8(èñDoGetRandomTerms(myWindow);°dONLNdtîñ† *DoCalcAnswer(myWindow);°dONLNdì∞ñºt*%{Position the window and display it.}°dONLNdøæñ 8*DoPositionWindow(myWindow);°dONLNd·Ãñÿ*ShowWindow(myWindow);°dONLNd˝ËÑÙ(ÒÑEND {IF myHandle <> NIL}°dONLNdˆrä(ˇrELSE°dONLNd$Ñ¢+BEGIN°dONLNd38‡)¥{couldn't get a data record}°dONLNdW®,(®CloseWindow(myWindow);°dONLNdy ®,D*DisposePtr(Ptr(myWindow));°dONLNd°.®:*myWindow := NIL;°dONLNdπ.8:§)ê{so pass back NIL}°dONLNd—<ÑHú(EÑEND;°dONLNdŸJ`Vx(S`END;°dONLNd·fNr(oNDoCreateWindow := myWindow;°dONLNd˛t<ÄT(}<END;°dONLNdê*ú‡(ô*I{DoCloseDocWindow: dispose a document window and all its data structures}°dONLNdOû<™b+1PROCEDURE DoCloseDocWindow (myWindow: WindowPtr);°dONLNdɨN∏`+VAR°dONLNdä∫`Δñ+    myHandle:°dONLNdó∫®Δ)H MyDocRecHnd;°dONLNd•»<‘Z(—<BEGIN°dONLNd≠÷N‚“+IF myWindow = NIL THEN°dONLNd«‰`‰+exit(DoCloseDocWindow)°dONLNdȉ8∞)ÿ{ignore NIL windows}°dONLNdÚN˛f(˚NELSE°dONLNd` ~+BEGIN°dONLNdrÜ+.myHandle := MyDocRecHnd(GetWRefCon(myWindow));°dONLNdEr(2* DisposeHandle(Handle(myHandle));°dONLNdj*r6*CloseWindow(myWindow)°dONLNdÉ*6ˆ)~;°dONLNdã*86§)H{close the window}°dONLNd¢8rD(ArDisposePtr(Ptr(myWindow));°dONLNd«88DŒ)Δ{and release the storage}°dONLNd‰F`Rx(O`END;°dONLNdÍT<`T(]<END;°dONLNdp*|‰(y*{DoCloseWindow: close a window}°dONLNd~<äP+.PROCEDURE DoCloseWindow (myWindow: WindowPtr);°dONLNdAå<òZ*BEGIN°dONLNdIöN¶ÿ+IF myWindow <> NIL THEN°dONLNdd®`¥ + IF IsDialogWindow(myWindow) THEN°dONLNdë®J¥‡)Í{this is a dialog window}ˇ) @ˇ ˇˇˇˇ@
  11251. ˇ·ˇ‚7^
  11252. 4H\, Palatino&e.3+ä"    APPENDIX ‡Ò)CE,     Helvetica    ˇˇ—ÚˇÆ(@äUser Interface Code4⁄ä˙
  11253. (‡221
  11254. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11255. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11256.  
  11257.  
  11258.  
  11259.  
  11260.  
  11261. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  11262. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11263. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11264.  
  11265.  
  11266.  
  11267.  
  11268.  
  11269. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˛˙ˇ˛˙ˇ
  11270. ˛ˇˇˇ
  11271. ˛ˇˇˇ
  11272. ˛ˇˇˇ
  11273. ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  11274. 4È4fl?òÄ
  11275. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11276. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11277.  
  11278.  
  11279.  
  11280.  
  11281.  
  11282. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˝˚ˇ˛ˇ˚˛ˇ˚˛ˇ˚˝˚ˇ˜    ˛ˇˇ˛
  11283. ˛ˇˇˇˇ
  11284. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  11285. ˛ˇˇˇˇ
  11286. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˜˜˜˛˙ˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝¸ˇ
  11287. ˛ˇ˛ˇˇ˜˝˛ˇ˛
  11288. ˛ˇˇˇˇ
  11289. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˛˚ˇ˙ˇˇ˜˝ˇˇ˛
  11290. ˛ˇˇˇˇ
  11291. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚˝˛ˇ˛
  11292. ˛ˇ˛ˇˇ
  11293. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  11294. ˛ˇˇˇˇ
  11295. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜¸˛ˇˇ    ˝ˇ˛ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ˜˜˝˛ˇ˛
  11296. ˛ˇ˛ˇˇ
  11297. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  11298. ˛ˇ˛ˇˇ
  11299. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  11300. ˛ˇˇˇˇ
  11301. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  11302. Courier.°dONLNd\êh(eêHideWindow(myWindow)°dONLNdj~vP(s~#ELSE IF IsDAccWindow(myWindow) THEN°dONLNdHjhvÊ)Í{this is a DA window}°dONLNdbxêѧ(Åê.CloseDeskAcc(WindowPeek(myWindow)^.windowKind)°dONLNdîÜ~íJ(è~"ELSE IF IsAppWindow(myWindow) THEN°dONLNd√Ühí
  11303. )Í{this is a document window}°dONLNd„îê†2(ùêDoCloseDocWindow(myWindow);°dONLNd¢ZÆr(´ZEND;°dONLNdæH («H {DoDrag: handle window dragging}°dONLNd(ÃZÿ™+8PROCEDURE DoDrag (myWindow: WindowPtr; mouseloc: Point);°dONLNdc⁄lÊ~+VAR°dONLNdjË~Ù¿+ dragBounds:°dONLNdyËΔÙ‰)HRect;°dONLNdĈZx(ˇZBEGIN°dONLNdàl¿+dragBounds := °dONLNdñ¿Δ)TG°dONLNdóΔ8)etGrayRgn^^.rgnBBox°dONLNd™8>)r;°dONLNdÆln(l+DragWindow(myWindow, mouseloc, dragBounds);°dONLNd€ Z,r()ZEND;°dONLNd·<HHJ(EH+{DoGoAwayBox: process a click in close box}°dONLNdJZV»+=PROCEDURE DoGoAwayBox (myWindow: WindowPtr; mouseloc: Point);°dONLNdMXZdx*BEGIN°dONLNdUflrV+'IF TrackGoAway(myWindow, mouseloc) THEN°dONLNdÄt~Ä+DoCloseWindow(myWindow);°dONLNdöÇZér(ãZEND;°dONLNd†ûH™‰(ßH{DoQuit: quit the program}°dONLNdº¨Z∏¿+PROCEDURE DoQuit;°dONLNd–∫lΔ~+VAR°dONLNd◊»~‘¥+    myWindow:°dONLNd‰»Δ‘)H
  11304. WindowPtr;°dONLNd÷Z‚x(flZBEGIN°dONLNd¯‰l¸+myWindow := FrontWindow;°dONLNd‰D∂)ÿ{close all windows}°dONLNd2Úl˛¸(˚lWHILE myWindow <> NIL DO°dONLNdN~ ú+BEGIN°dONLNdXê+DoUpdate(myWindow);°dONLNduD‘)¥{force redrawing window}°dONLNdíê( (%êDoCloseWindow(myWindow);°dONLNdØ*ê6 *myWindow := FrontWindow;°dONLNdÀ8~Dñ(A~END;°dONLNd“FlR¿(OlgDone := TRUE;°dONLNdÏFDR)ÿ"{set flag to exit main event loop}°dONLNdTZ`r(]ZEND;°dONLNdpH|(yHL{DoActivate: handle activate and deactivate events for the specified window}°dONLNdd~Zä‡+APROCEDURE DoActivate (myWindow: WindowPtr; myModifiers: Integer);°dONLNd®ålò~+VAR°dONLNdØö~¶Æ+myState:°dONLNdªöΔ¶ˆ)HInteger;°dONLNd öD¶∞)~{activation state}°dONLNd‡®~¥∫(±~
  11305. myControl:°dONLNdÓ®Δ¥)HControlHandle;ˇ    ∂@ˇ ˇˇˇˇ@
  11306. ˇ·ˇ‚7^
  11307. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CE,     Helvetica    ˇˇ—ÚˇÆ(@lUser Interface Code4⁄*˙¯
  11308. (‡*2224^*¿¯,
  11309. Courier.°dONLNd\<hZ(e<BEGIN°dONLNdjNvD+)myState := BAnd(myModifiers, activeFlag);°dONLNd5ÜNí* IF IsDialogWindow(myWindow) THEN°dONLNdYî`†~+BEGIN°dONLNdc¢rÆå+/myControl := WindowPeek(myWindow)^.controlList;°dONLNdó∞rº*WHILE myControl <> NIL DO°dONLNd∂æÑ ¢+BEGIN°dONLNd¬Ãñÿ∂+0HiliteControl(myControl, myState + 255 mod 256);°dONLNd˘⁄ñÊt*%myControl := myControl^^.nextControl;°dONLNd$ËÑÙú(ÒÑEND;°dONLNd,ˆ`x(ˇ`END;°dONLNd2<T(<END;°dONLNd8 *,&()**{DoDiskEvent: handle disk-inserted events}°dONLNdd.<:J+-PROCEDURE DoDiskEvent (myEvent: EventRecord);°dONLNdî<NH`+VAR°dONLNdõJ`Vñ+    myResult:°dONLNd®J®Vÿ)HInteger;°dONLNd¥X`dê(a`myPoint:°dONLNd¿X®dÃ)HPoint;°dONLNd»f<rZ(o<BEGIN°dONLNd–tNÄ>+(IF HiWord(myEvent.message) <> noErr THEN°dONLNd¸Ç`é~+BEGIN°dONLNdêrú+SetPt(myPoint, 100, 100);°dONLNd$ûr™ò*1myResult := DIBadMount(myPoint, myEvent.message);°dONLNdY¨`∏x(µ`END;°dONLNd_∫<ΔT(√<END;°dONLNde÷*‚h(fl*5{MyModalFilter: a basic modal dialog filter function}°dONLNdú‰<Ê+GFUNCTION MyModalFilter (myDialog: DialogPtr; VAR myEvent: EventRecord; °dONLNdÓÚfi˛í+¢VAR myItem: Integer): Boolean;°dONLNdN `(    NVAR°dONLNd`ñ+    itemType:°dONLNd#®ÿ)HInteger;°dONLNd/`(ñ(%`    itemHand:°dONLNd<®(“)HHandle;°dONLNdG*`6ñ(3`    itemRect:°dONLNdT*®6Δ)HRect;°dONLNd]8`DÑ(A`myKey:°dONLNdg8®DΔ)HChar;°dONLNdpF`Rñ(O`    myIgnore:°dONLNd}F®Rÿ)HLongInt;°dONLNdáT<`Z(]<BEGIN°dONLNdèbNnÿ+MyModalFilter := FALSE;°dONLNd±bn‡)Δ"{assume we don't handle the event}°dONLNd◊~NäΔ(áNCASE myEvent.what OF°dONLNdÔå`ò¢+ updateEvt: °dONLNdˇör¶ê+BEGIN°dONLNd
  11310. ®Ñ¥ò+.IF WindowPtr(myEvent.message) <> myDialog THENˇ'æ@ˇ ˇˇˇˇ@
  11311. ˇ·ˇ‚7^
  11312. 4H\, Palatino&e.3+ä"    APPENDIX ‡Ò)CE,     Helvetica    ˇˇ—ÚˇÆ(@äUser Interface Code4⁄ä˙
  11313. (‡223
  11314. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11315. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11316.  
  11317.  
  11318.  
  11319.  
  11320.  
  11321. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  11322. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11323. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11324.  
  11325.  
  11326.  
  11327.  
  11328.  
  11329. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˛˙ˇ˛˙ˇ
  11330. ˛ˇˇˇ
  11331. ˛ˇˇˇ
  11332. ˛ˇˇˇ
  11333. ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  11334. 4È4fl?òÄ
  11335. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11336. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11337.  
  11338.  
  11339.  
  11340.  
  11341.  
  11342. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˝˚ˇ˛ˇ˚˛ˇ˚˛ˇ˚˝˚ˇ˜    ˛ˇˇ˛
  11343. ˛ˇˇˇˇ
  11344. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  11345. ˛ˇˇˇˇ
  11346. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˜˜˜˛˙ˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝¸ˇ
  11347. ˛ˇ˛ˇˇ˜˝˛ˇ˛
  11348. ˛ˇˇˇˇ
  11349. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˛˚ˇ˙ˇˇ˜˝ˇˇ˛
  11350. ˛ˇˇˇˇ
  11351. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚˝˛ˇ˛
  11352. ˛ˇ˛ˇˇ
  11353. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  11354. ˛ˇˇˇˇ
  11355. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜¸˛ˇˇ    ˝ˇ˛ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ˜˜˝˛ˇ˛
  11356. ˛ˇ˛ˇˇ
  11357. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  11358. ˛ˇ˛ˇˇ
  11359. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  11360. ˛ˇˇˇˇ
  11361. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  11362. Courier.°dONLNd\¥hí(e¥%DoUpdate(WindowPtr(myEvent.message));°dONLNd6j2vŒ+~{update the window behind}°dONLNdUxêÑ®(ÅêEND;°dONLNd]Ü~íÍ(è~keyDown, autoKey: °dONLNdtîê†Æ+BEGIN°dONLNd¢¢ÆŒ+2myKey := char(And(myEvent.message, charCodeMask));°dONLNd∏梠º*/{if Return or Enter pressed, do default button}°dONLNdÌâÿ∞*-IF (myKey = kReturn) OR (myKey = kEnter) THEN°dONLNd!⁄¥Ê“+BEGIN°dONLNd.ËΔÙ
  11363. +6GetDItem(myDialog, iOK, itemType, itemHand, itemRect);°dONLNdlˆΔ¬**HiliteControl(ControlHandle(itemHand), 1);°dONLNd¢+H){make button appear to have been pressed}°dONLNd”Δz(ΔDelay(kVisualDelay, myIgnore);°dONLNd˘ Δ,¬**HiliteControl(ControlHandle(itemHand), 0);°dONLNd+.Δ:J*MyModalFilter := TRUE;°dONLNdO<ΔH*myItem := iOK;°dONLNddJ¥VÃ(S¥END;°dONLNdof¢r∂(o¢.{if Escape or Cmd-. pressed, do Cancel button}°dONLNd£t¢Ä *IF (myKey = kEscape) °dONLNdøÇ¥é8+OR ((myKey = kPeriod) °dONLNd›êΔúÊ+0AND (BAnd(myEvent.modifiers, CmdKey) <> 0)) THEN°dONLNdû¥™“(ߥBEGIN°dONLNd!¨Δ∏Ê+0GetDItem(myDialog, iCancel, itemType, itemHand, °dONLNdQ∫HΔÑ(√H
  11364. itemRect);°dONLNdc»Δ‘¬+~*HiliteControl(ControlHandle(itemHand), 1);°dONLNdö÷‚+H){make button appear to have been pressed}°dONLNdÀ‰Δz(ÌΔDelay(kVisualDelay, myIgnore);°dONLNdÒÚΔ˛¬**HiliteControl(ControlHandle(itemHand), 0);°dONLNd#Δ J*MyModalFilter := TRUE;°dONLNdGΔ2*myItem := iCancel;°dONLNd`¥(Ã(%¥END;°dONLNdi*ê6®(3êEND;°dONLNdq8~D¥(A~    diskEvt: °dONLNdFêRÆ+BEGIN°dONLNdäT¢` +DoDiskEvent(myEvent);°dONLNd•b¢n&*MyModalFilter := TRUE;°dONLNd≈bVn
  11365. )¥{show we've handled the event}°dONLNdËpê|®(yêEND;°dONLNd~~ä¥(á~    OTHERWISE°dONLNd˛åêòñ+;°dONLNdöl¶Æ(£l END; {CASE}°dONLNd®Z¥r(±ZEND;ˇˆ@ˇ ˇˇˇˇ@
  11366. ˇ·ˇ‚7^
  11367. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CE,     Helvetica    ˇˇ—ÚˇÆ(@lUser Interface Code4⁄*˙¯
  11368. (‡*2244^*¿¯,
  11369. Courier.°dONLNdj*v(s*({DoAboutBox: handle About... selections}°dONLNd*x<Ñ>++PROCEDURE DoAboutBox (myWindow: WindowPtr);°dONLNdXÜNí`+VAR°dONLNd_î`†ñ+    myWindow:°dONLNdl‰)H
  11370. WindowPtr;°dONLNdz¢`Æñ(´`    myDialog:°dONLNd᢮Ɖ)H
  11371. DialogPtr;°dONLNdï∞`ºä(π`myItem:°dONLNd†∞®ºÿ)HInteger;°dONLNd™æ< Z(«<BEGIN°dONLNd≤ÃNÿfi+myWindow := FrontWindow;°dONLNdÕ⁄NÊÿ*IF myWindow <> NIL THEN°dONLNdËË`Ù>+%DoActivate(myWindow, 1 - activeFlag);°dONLNdN§(N9myDialog := GetNewDialog(rAboutDial, NIL, WindowPtr(-1));°dONLNdRNÿ*IF myDialog <> NIL THEN°dONLNdm `,~+BEGIN°dONLNdw.r:fi+SetPort(myDialog);°dONLNdé<rH*DoDefaultButton(myDialog);°dONLNdÆXrdñ*REPEAT°dONLNd∫fÑr\+$ModalDialog(@MyModalFilter, myItem);°dONLNd„trĉ(}rUNTIL myItem = iOK;°dONLNd¸êrú*DisposeDialog(myDialog);°dONLNdûr™fi*SetPort(myWindow);°dONLNd/¨`∏x(µ`END;°dONLNd5∫<ΔT(√<END;°dONLNd;÷*‚í(fl*<{DoMenuAdjust: adjust menus by enabling and disabling items}°dONLNdy‰<Δ+PROCEDURE DoMenuAdjust;°dONLNdìÚN˛`+VAR°dONLNdö` ñ+    myWindow:°dONLNdß® ‰)H
  11372. WindowPtr;°dONLNdµ`ä(`myMenu:°dONLNd¿®Í)H MenuHandle;°dONLNdœ`(Ñ(%`count:°dONLNdŸ®(ÿ)HInteger;°dONLNd„*<6Z(3<BEGIN°dONLNdÎ8NDÿ+myWindow := FrontWindow°dONLNd8ÿDfi)ä;°dONLNdTN`“(]NIF myWindow = NIL THEN°dONLNd!b`nn+-DisableMenuItem(GetMenuHandle(mFile), iClose)°dONLNdQpN|f(yNELSE°dONLNdY~`än+-EnableMenuItem(GetMenuHandle(mFile), iClose);°dONLNdäöN¶(£N myMenu := GetMenuHandle(mVennD);°dONLNd≠®N¥¸*IF IsAppWindow(myWindow) THENˇ'H@ˇ ˇˇˇˇ@
  11373. ˇ·ˇ‚7^
  11374. 4H\, Palatino&e.3+ä"    APPENDIX ‡Ò)CE,     Helvetica    ˇˇ—ÚˇÆ(@äUser Interface Code4⁄ä˙
  11375. (‡225
  11376. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11377. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11378.  
  11379.  
  11380.  
  11381.  
  11382.  
  11383. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  11384. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11385. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11386.  
  11387.  
  11388.  
  11389.  
  11390.  
  11391. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˛˙ˇ˛˙ˇ
  11392. ˛ˇˇˇ
  11393. ˛ˇˇˇ
  11394. ˛ˇˇˇ
  11395. ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  11396. 4È4fl?òÄ
  11397. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11398. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11399.  
  11400.  
  11401.  
  11402.  
  11403.  
  11404. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˝˚ˇ˛ˇ˚˛ˇ˚˛ˇ˚˝˚ˇ˜    ˛ˇˇ˛
  11405. ˛ˇˇˇˇ
  11406. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  11407. ˛ˇˇˇˇ
  11408. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˜˜˜˛˙ˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝¸ˇ
  11409. ˛ˇ˛ˇˇ˜˝˛ˇ˛
  11410. ˛ˇˇˇˇ
  11411. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˛˚ˇ˙ˇˇ˜˝ˇˇ˛
  11412. ˛ˇˇˇˇ
  11413. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚˝˛ˇ˛
  11414. ˛ˇ˛ˇˇ
  11415. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  11416. ˛ˇˇˇˇ
  11417. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜¸˛ˇˇ    ˝ˇ˛ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ˜˜˝˛ˇ˛
  11418. ˛ˇ˛ˇˇ
  11419. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  11420. ˛ˇ˛ˇˇ
  11421. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  11422. ˛ˇˇˇˇ
  11423. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  11424. Courier.°dONLNd\~h2(e~FOR count := 1 TO kNumTools DO°dONLNd#jêv>+EnableMenuItem(myMenu, count)°dONLNdCxlÑÑ(ÅlELSE°dONLNdKÜ~í2+FOR count := 1 TO kNumTools DO°dONLNdnîê†J+DisableMenuItem(myMenu, count);°dONLNdë∞lº (πlIF IsDAccWindow(myWindow) THEN°dONLNd≥æ~ h+'EnableMenuItem(GetMenuHandle(mEdit), 0)°dONLNd›ÃlÿÑ(’lELSE°dONLNdÂ⁄~Êt+)DisableMenuItem(GetMenuHandle(mEdit), 0);°dONLNdËlÙÆ(Òl DrawMenuBar°dONLNdËÆÙ¥)B;°dONLNdˆZ`(ˇZE°dONLNd ˆ`r)ND;°dONLNd%HÜ(H5{DoMenuCommand: interpret and act on menu selections}°dONLNd\ Z,t+/PROCEDURE DoMenuCommand (menuAndItem: LongInt);°dONLNdé.l:~+VAR°dONLNdï<~H∫+
  11425. myMenuNum:°dONLNd£<ΔHˆ)HInteger;°dONLNdØJ~V∫(S~
  11426. myItemNum:°dONLNdΩJΔVˆ)HInteger;°dONLNd…X~d¥(a~    myResult:°dONLNd÷XΔdˆ)HInteger;°dONLNd‚f~r¥(o~    myDAName:°dONLNdÔfΔr)HStr255;°dONLNd˙t~Ä¥(}~    myWindow:°dONLNdtΔÄ)H
  11427. WindowPtr;°dONLNdÇZéx(ãZBEGIN°dONLNdêlú2+!myMenuNum := HiWord(menuAndItem);°dONLNd?ûl™2*!myItemNum := LoWord(menuAndItem);°dONLNdc¨l∏ÿ*GetPort(myWindow);°dONLNdy»l‘“*CASE myMenuNum OF°dONLNdé÷~‚Æ+mApple: °dONLNdõ‰êˆ+CASE myItemNum OF°dONLNd≤Ú¢˛“+iAbout: °dONLNd¡¥ “+BEGIN°dONLNdŒΔ+ DoAboutBox;°dONLNd‡¥(Ã(%¥END;°dONLNdÍ*¢6ÿ(3¢    OTHERWISE°dONLNd˙8¥D“+BEGIN°dONLNdFΔRÏ+1GetMenuItemText(GetMenuHandle(mApple), myItemNum,°dONLNdFT2`t+l  myDAName);°dONLNdYbΔní(kΔ"myResult := OpenDeskAcc(myDAName);°dONLNdÇp¥|Ã(y¥END;°dONLNdã~êä®(áêEND;°dONLNdìå~ò®(ï~mFile: °dONLNdüöê¶Æ+BEGIN°dONLNd™®¢¥+CASE myItemNum OFˇÏ@ˇ ˇˇˇˇ@
  11428. ˇ·ˇ‚7^
  11429. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CE,     Helvetica    ˇˇ—ÚˇÆ(@lUser Interface Code4⁄*˙¯
  11430. (‡*2264^*¿¯,
  11431. Courier.°dONLNd\ñh∫(eñiNew: °dONLNdj®vJ+myWindow := DoCreateWindow;°dONLNd0xñÑΔ(ÅñiClose: °dONLNd@Ü®íJ+DoCloseWindow(FrontWindow);°dONLNdbîñ†¿(ùñiQuit: °dONLNdq¢®Æ“+DoQuit;°dONLNd∞ñºÃ(πñ    OTHERWISE°dONLNdêæ® Æ+;°dONLNdóÃÑÿú(’ÑEND;°dONLNd†⁄rÊä(„rEND;°dONLNd®Ë`Ùä(Ò`mEdit: °dONLNd¥ˆrê+BEGIN°dONLNdøÑb+%IF NOT SystemEdit(myItemNum - 1) THEN°dONLNdÎñú+;°dONLNdÒ r,ä()rEND;°dONLNd˘.`:ê(7`mVennD: °dONLNd<rHê+BEGIN°dONLNdJÑV+myWindow := FrontWindow;°dONLNd/XÑdÍ*CASE myItemNum OF°dONLNdGfñrfi+ iCheckVenn: °dONLNd[t®Ä,+DoVennCheck(myWindow);°dONLNdxÇñéÃ(ãñ    iDoVenn: °dONLNdâê®ú2+DoVennAnswer(myWindow);°dONLNdßûñ™fi(ßñ iClearVenn: °dONLNdª¨®∏,+DoVennClear(myWindow);°dONLNdÿ∫ñΔÿ(√ñ iNextTask: °dONLNdλ®‘&+DoVennNext(myWindow);°dONLNd÷ñ‚ÿ(flñ iCheckArg: °dONLNd‰®2+DoVennAssess(myWindow);°dONLNd8Úñ˛(˚ñiGetVennPrefs: °dONLNdO® »+0DoModelessDialog(rVennDPrefsDial, gPrefsDialog);°dONLNdÜñÃ(ñ    OTHERWISE°dONLNdó®(Æ+;°dONLNdû*Ñ6ú(3ÑEND;°dONLNdß8rDä(ArEND;°dONLNd∞T``ñ(]`    OTHERWISE°dONLNdæbrnx+;°dONLNd¬pN|f(yNEND;°dONLNd…~Nä¢*HiliteMenu(0);°dONLNdŸå<ò¥(ï<END; {DoMenuCommand}°dONLNdÔ®*¥Œ(±*F{DoContentClick: handle a mouse click in the content area of a window}ˇ(⁄@ˇ ˇˇˇˇ@
  11432. ˇ·ˇ‚7^
  11433. 4H\, Palatino&e.3+ä"    APPENDIX ‡Ò)CE,     Helvetica    ˇˇ—ÚˇÆ(@äUser Interface Code4⁄ä˙
  11434. (‡227
  11435. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11436. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11437.  
  11438.  
  11439.  
  11440.  
  11441.  
  11442. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  11443. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11444. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11445.  
  11446.  
  11447.  
  11448.  
  11449.  
  11450. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˛˙ˇ˛˙ˇ
  11451. ˛ˇˇˇ
  11452. ˛ˇˇˇ
  11453. ˛ˇˇˇ
  11454. ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  11455. 4È4fl?òÄ
  11456. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11457. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11458.  
  11459.  
  11460.  
  11461.  
  11462.  
  11463. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˝˚ˇ˛ˇ˚˛ˇ˚˛ˇ˚˝˚ˇ˜    ˛ˇˇ˛
  11464. ˛ˇˇˇˇ
  11465. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  11466. ˛ˇˇˇˇ
  11467. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˜˜˜˛˙ˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝¸ˇ
  11468. ˛ˇ˛ˇˇ˜˝˛ˇ˛
  11469. ˛ˇˇˇˇ
  11470. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˛˚ˇ˙ˇˇ˜˝ˇˇ˛
  11471. ˛ˇˇˇˇ
  11472. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚˝˛ˇ˛
  11473. ˛ˇ˛ˇˇ
  11474. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  11475. ˛ˇˇˇˇ
  11476. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜¸˛ˇˇ    ˝ˇ˛ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ˜˜˝˛ˇ˛
  11477. ˛ˇ˛ˇˇ
  11478. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  11479. ˛ˇ˛ˇˇ
  11480. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  11481. ˛ˇˇˇˇ
  11482. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  11483. Courier.°dONLNd\Zh¯(eZEPROCEDURE DoContentClick (myWindow: WindowPtr; myEvent: EventRecord);°dONLNdHjlv~+VAR°dONLNdOx~Ñ®+myRect:°dONLNdZxΔщ)HRect;°dONLNdgxVÑ‘)ê{temporary rectangle}°dONLNdÄÜ~í¢(è~count:°dONLNdäÜΔíˆ)HInteger;°dONLNdîîZ†x(ùZBEGIN°dONLNdú¢lÆ2+!IF NOT IsAppWindow(myWindow) THEN°dONLNd¡∞~º¸+exit(DoContentClick);°dONLNd·∞Dº)Δ"{make sure it's a document window}°dONLNdÃlÿÿ(’lSetPort(myWindow);°dONLNd%ÃDÿ‘)ÿ{set port to our window}°dONLNd@⁄lÊ(„lGlobalToLocal(myEvent.where);°dONLNd`ˆZJ(ˇZ({See if the click is in the tools area.}°dONLNdãl§+4SetRect(myRect, 0, 0, kToolWd * kNumTools, kToolHt);°dONLNd¬lV*'IF PtInRect(myEvent.where, myRect) THEN°dONLNdÌ ~,ú+BEGIN°dONLNd˙ ,)ê){if so, determine which tool was clicked}°dONLNd(.ê:D(7êFOR count := 1 TO kNumTools DO°dONLNdL<¢H¿+BEGIN°dONLNdXJ¥V∞+*SetRect(myRect, (count - 1) * kToolWd, 0, °dONLNdçX¸dò+Hcount * kToolWd, kToolHt);°dONLNdÆf¥rû(o¥'IF PtInRect(myEvent.where, myRect) THEN°dONLNd›tΔÄÍ+Leave;°dONLNdÁtÄ
  11484. )H*{we found the right tool, so stop looking}°dONLNdÇ¢é∫(ã¢END;°dONLNd êêún(ôê%IF DoTrackRect(myWindow, myRect) THEN°dONLNdRû¢™Ä+%DoMenuCommand(BitShift(mVennD, 16) + °dONLNdĨÿ∏z+6((kNumTools + 1) - count));°dONLNdú¨z∏)¢{handle tools selections}°dONLNd∫∫êΔ(√êexit(DoContentClick);°dONLNd”»~‘ñ(—~END;°dONLNd⁄‰ZP(ÌZ){See if the click is in the status area.}°dONLNdÚl˛\+(SetRect(myRect, kToolWd * kNumTools, 0, °dONLNd6Δ ò+Z#myWindow^.portRect.right, kToolHt);°dONLNd\lV(l'IF PtInRect(myEvent.where, myRect) THEN°dONLNdá~(ú+BEGIN°dONLNdë*ê6+exit(DoContentClick);°dONLNd±8~Dñ(A~END;°dONLNd∏TZ`º(]Z;{The click must be in somewhere in the rest of the window.}°dONLNdˆblnJ+%DoVennClick(myWindow, myEvent.where);°dONLNdpZ|r(yZEND;°dONLNd#åHò2(ïH'{DoMouseDown: process mouseDown events}°dONLNdLöZ¶h+-PROCEDURE DoMouseDown (myEvent: EventRecord);°dONLNd|®l¥~+VARˇ    @ˇ ˇˇˇˇ@
  11485. ˇ·ˇ‚7^
  11486. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CE,     Helvetica    ˇˇ—ÚˇÆ(@lUser Interface Code4⁄*˙¯
  11487. (‡*2284^*¿¯,
  11488. Courier.°dONLNd\`hä(e`myPart:°dONLNd \®hÿ)HInteger;°dONLNdj`vñ(s`    myWindow:°dONLNd$j®v‰)H
  11489. WindowPtr;°dONLNd0x<ÑZ(Å<BEGIN°dONLNd8ÜNíb+.myPart := FindWindow(myEvent.where, myWindow);°dONLNdiîN†¢*CASE myPart OF°dONLNd{¢`Æ¢+ inMenuBar: °dONLNdã∞rºê+BEGIN°dONLNdñæÑ “+DoMenuAdjust;°dONLNd©ÃÑÿz*)DoMenuCommand(MenuSelect(myEvent.where));°dONLNd◊⁄rÊä(„rEND;°dONLNdflË`ÙÆ(Ò`InSysWindow: °dONLNdÒˆr,+SystemClick(myEvent, myWindow);°dONLNd`ê(`inDrag: °dONLNd!r2+ DoDrag(myWindow, myEvent.where);°dONLNdE `,ú()`
  11490. inGoAway: °dONLNdT.r:P+%DoGoAwayBox(myWindow, myEvent.where);°dONLNd}<`H¢(E` inContent: °dONLNdçJrVê+BEGIN°dONLNdòXÑd>+IF myWindow <> FrontWindow THEN°dONLNdæfñr+SelectWindow(myWindow)°dONLNd⁄tÑÄú(}ÑELSE°dONLNdÂÇñéb+"DoContentClick(myWindow, myEvent);°dONLNd êrúä(ôrEND;°dONLNdû`™ñ(ß`    OTHERWISE°dONLNd"¨r∏x+;°dONLNd&∫NΔf(√NEND;°dONLNd,»<‘T(—<END;°dONLNd2‰*(Ì*&{DoKeyDown: respond to keyDown events}°dONLNdZÚ<˛>++PROCEDURE DoKeyDown (myEvent: EventRecord);°dONLNdàN `+VAR°dONLNdè`Ñ+myKey:°dONLNdô®Δ)Hchar;°dONLNd†<(Z(%<BEGIN°dONLNd®*N6z+2myKey := chr(BAnd(myEvent.message, charCodeMask));°dONLNd›8NDb*.IF (BAnd(myEvent.modifiers, CmdKey) <> 0) THEN°dONLNdF`R~+BEGIN°dONLNdTr`¿+DoMenuAdjust;°dONLNd+brn&*DoMenuCommand(MenuKey(myKey));°dONLNdMp`|x(y`END;°dONLNdS~<äT(á<END;°dONLNdYö*¶“(£*{DoIdle: handle null events}°dONLNdv®*¥º*C{currently we use this for auto-processing in Venn diagram windows}ˇ'Ù@ˇ ˇˇˇˇ@
  11491. ˇ·ˇ‚7^
  11492. 4H\, Palatino&e.3+ä"    APPENDIX ‡Ò)CE,     Helvetica    ˇˇ—ÚˇÆ(@äUser Interface Code4⁄ä˙
  11493. (‡229
  11494. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11495. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11496.  
  11497.  
  11498.  
  11499.  
  11500.  
  11501. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  11502. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11503. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11504.  
  11505.  
  11506.  
  11507.  
  11508.  
  11509. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˛˙ˇ˛˙ˇ
  11510. ˛ˇˇˇ
  11511. ˛ˇˇˇ
  11512. ˛ˇˇˇ
  11513. ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  11514. 4È4fl?òÄ
  11515. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11516. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11517.  
  11518.  
  11519.  
  11520.  
  11521.  
  11522. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˝˚ˇ˛ˇ˚˛ˇ˚˛ˇ˚˝˚ˇ˜    ˛ˇˇ˛
  11523. ˛ˇˇˇˇ
  11524. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  11525. ˛ˇˇˇˇ
  11526. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˜˜˜˛˙ˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝¸ˇ
  11527. ˛ˇ˛ˇˇ˜˝˛ˇ˛
  11528. ˛ˇˇˇˇ
  11529. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˛˚ˇ˙ˇˇ˜˝ˇˇ˛
  11530. ˛ˇˇˇˇ
  11531. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚˝˛ˇ˛
  11532. ˛ˇ˛ˇˇ
  11533. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  11534. ˛ˇˇˇˇ
  11535. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜¸˛ˇˇ    ˝ˇ˛ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ˜˜˝˛ˇ˛
  11536. ˛ˇ˛ˇˇ
  11537. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  11538. ˛ˇ˛ˇˇ
  11539. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  11540. ˛ˇˇˇˇ
  11541. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  11542. Courier.°dONLNd\ZhJ(eZ(PROCEDURE DoIdle (myEvent: EventRecord);°dONLNd+jlv~+VAR°dONLNd2x~Ñ¥+    myWindow:°dONLNd?xΔÑ)H
  11543. WindowPtr;°dONLNdMÜ~í¥(è~    myHandle:°dONLNdZÜΔí)H MyDocRecHnd;°dONLNdhîZ†x(ùZBEGIN°dONLNdp¢lƸ+myWindow := FrontWindow;°dONLNdã∞lº*IF IsAppWindow(myWindow) THEN°dONLNd¨æ~ +IF gAutoAdjust THEN°dONLNdƒÃêÿÆ+BEGIN°dONLNdœ⁄¢Ê∂+.myHandle := MyDocRecHnd(GetWRefCon(myWindow));°dONLNdË¢Ùh*!IF myHandle^^.needsAdjusting THEN°dONLNd+ˆ¥2+DoVennIdle(myWindow);°dONLNdEê®(êEND;°dONLNdKZ®(ZEND; {DoIdle}°dONLNdZ.H:ˆ(7H{DoOSEvent: handle OS events}°dONLNdy<ZH\++PROCEDURE DoOSEvent (myEvent: EventRecord);°dONLNdßJlV~+VAR°dONLNdÆX~d¥+    myWindow:°dONLNdªXΔd)H
  11544. WindowPtr;°dONLNd«fZrx(oZBEGIN°dONLNdœtlÄ,+ CASE BSR(myEvent.message, 24) OF°dONLNdÛÇ~é+mouseMovedMessage: °dONLNd êêúÆ+BEGIN°dONLNdû¢™+DoIdle(myEvent);°dONLNd-û ™™)~{right now, do nothing}°dONLNdI¨ê∏®(µêEND;°dONLNdQ∫~Δ(√~suspendResumeMessage: °dONLNdl»ê‘Æ+BEGIN°dONLNdw÷¢‚2+myWindow := FrontWindow;°dONLNd¬*0IF (BAnd(myEvent.message, resumeFlag) <> 0) THEN°dONLNdÃÚ¥˛t+ DoActivate(myWindow, activeFlag)°dONLNd˘Úû˛)Í{activate window}°dONLNd¢ ∫(    ¢ELSE°dONLNd¥í+%DoActivate(myWindow, 1 - activeFlag);°dONLNdMû)Í{deactivate window}°dONLNdeê(®(%êEND;°dONLNdm*~6¥(3~    OTHERWISE°dONLNd{8êDñ+;°dONLNdFlRÑ(OlEND;°dONLNdÖTZ`r(]ZEND;°dONLNdãpH|,(yH&{DoMainEventLoop: the main event loop}°dONLNd≥~Zäˆ+PROCEDURE DoMainEventLoop;°dONLNd–ålò~+VAR°dONLNd◊ö~¶Æ+myEvent:°dONLNd„öΔ¶)H EventRecord;°dONLNdÛ®~¥¥(±~    gotEvent:°dONLNd®Δ¥ˆ)HBoolean;°dONLNd®V¥¯)ê{is returned event for me?}ˇ    ‰@ˇ ˇˇˇˇ@
  11545. ˇ·ˇ‚7^
  11546. 4*\¯, Palatino&e.3+l"    APPENDIX ‡Ò)CE,     Helvetica    ˇˇ—ÚˇÆ(@lUser Interface Code4⁄*˙¯
  11547. (‡*2304^*¿¯,
  11548. Courier.°dONLNd\<hZ(e<BEGIN°dONLNdjNvr+REPEAT°dONLNdx`Ñ∞+8gotEvent := WaitNextEvent(everyEvent, myEvent, 15, NIL);°dONLNdNÜ`íP*(IF NOT DoHandleDialogEvent(myEvent) THEN°dONLNd{îr†“+IF gotEvent THEN°dONLNdë¢ÑÆ¢+BEGIN°dONLNdù∞ñº+CASE myEvent.what OF°dONLNdπæ® Í+ mouseDown: °dONLNdÕÃ∫ÿ8+DoMouseDown(myEvent);°dONLNdÍ⁄®Ê(„®keyDown, autoKey: °dONLNdË∫Ù,+DoKeyDown(myEvent);°dONLNd ˆ®Í(ˇ® updateEvt: °dONLNd4∫ò+%DoUpdate(WindowPtr(myEvent.message));°dONLNda®fi(®    diskEvt: °dONLNds ∫,8+DoDiskEvent(myEvent);°dONLNdê.®:ˆ(7®activateEvt: °dONLNd¶<∫Hû+&DoActivate(WindowPtr(myEvent.message),°dONLNdŸJVz+H myEvent.modifiers);°dONLNdıX®dÃ(a®osEvt:°dONLNdf∫r,+DoOSEvent(myEvent);°dONLNdt®Ä(}®keyUp, mouseUp: °dONLNd8Ç∫é¿+;°dONLNdAê®úÍ(ô® nullEvent: °dONLNdUû∫™+DoIdle(myEvent);°dONLNdm¨®∏fi(µ®    OTHERWISE°dONLNd∫∫Δ¿+;°dONLNdá»ñ‘ÿ(—ñ END; {CASE}°dONLNdò÷Ñ‚ñ(flÑEND°dONLNd†‰rä(ÌrELSE°dONLNd™ÚÑ˛‰+DoIdle(myEvent);°dONLNdΩN ñ(    N UNTIL gDone;°dONLNd” å)¥{loop until user quits}°dONLNdÏ<T(<END;°dONLNdÚ**6H(3*BEGIN°dONLNd˘8<Dñ+DoInitManagers;°dONLNd8D∞)Δ{initialize Toolbox managers}°dONLNd2F<Rä(O<DoSetupMenus;°dONLNdJFRn)Δ{initialize menus}°dONLNd_b<nñ(k<gDone := FALSE;°dONLNdybn∞)Δ{initialize global variables}°dONLNdòp<|¥(y<gNumDocWindows := 0;°dONLNd∑p|Ê)Δ&{initialize count of open doc windows}°dONLNdfl~<ä¥(á<gPrefsDialog := NIL;°dONLNd˛~äÊ)Δ&{initialize ptr to Preferences dialog}°dONLNd'ö<¶¸(£< gAppsResourceFile := CurResFile;°dONLNdRö¶Ï)Δ'{get refnum of the app's resource file}°dONLNd{®<¥Δ(±<gPreferencesFile := -1;°dONLNdù®¥Ï)Δ'{initialize res ID of preferences file}ˇ f@ˇ ˇˇˇˇ@
  11549. ˇ·ˇ‚7^
  11550. 4H\, Palatino&e.3+ä"    APPENDIX ‡Ò)CE,     Helvetica    ˇˇ—ÚˇÆ(@äUser Interface Code4⁄ä˙
  11551. (‡231
  11552. ˇˇˇˇˇˇˇˇ4Δ4‰lòÄ0Δ@‰oMM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11553. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11554.  
  11555.  
  11556.  
  11557.  
  11558.  
  11559. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ@‰oΔ@‰o$——————————————————————————————òÄ
  11560. Δ6‰@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11561. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11562.  
  11563.  
  11564.  
  11565.  
  11566.  
  11567. ˆ                        ˜¯˘˙˚¸˝˛ˇΔ6‰@Δ6‰@˜˜˜˜˜˜˜˜˜˜˜˜˛˙ˇ˛˙ˇ
  11568. ˛ˇˇˇ
  11569. ˛ˇˇˇ
  11570. ˛ˇˇˇ
  11571. ˛ˇˇˇ˜˜˜˜˜˜˜˜˜˜˜˜
  11572. 4È4fl?òÄ
  11573. È6fl@MM! (ġˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  11574. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛ Ù ı
  11575.  
  11576.  
  11577.  
  11578.  
  11579.  
  11580. ˆ                        ˜¯˘˙˚¸˝˛ˇÈ6fl@È6fl@$˝˚ˇ˛ˇ˚˛ˇ˚˛ˇ˚˝˚ˇ˜    ˛ˇˇ˛
  11581. ˛ˇˇˇˇ
  11582. ˛ˇˇˇˇ    ˝ˇˇˇ˜˝˛ˇ˛
  11583. ˛ˇˇˇˇ
  11584. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˙ˇˇ˜˜˜˛˙ˇ˜˛¸ˇˇ˚ˇ˛˙ˇˇ˛˝ˇ˛˜˝¸ˇ
  11585. ˛ˇ˛ˇˇ˜˝˛ˇ˛
  11586. ˛ˇˇˇˇ
  11587. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˛¸ˇˇ˚ˇ˛˛˚ˇ˙ˇˇ˜˝ˇˇ˛
  11588. ˛ˇˇˇˇ
  11589. ˛ˇˇˇˇ˝˛ˇ˛˛ˇ˚˝˛ˇ˛
  11590. ˛ˇ˛ˇˇ
  11591. ˛ˇ˛ˇˇ˝ˇˇ˛˜˝˛ˇ˛
  11592. ˛ˇˇˇˇ
  11593. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜¸˛ˇˇ    ˝ˇ˛ˇ˛ˇ¸ˇ˛ˇ¸ˇ    ˝ˇ˛ˇ˜˜˝˛ˇ˛
  11594. ˛ˇ˛ˇˇ
  11595. ˛ˇ˛ˇˇ˝˛ˇ˛˜˝˛ˇ˛
  11596. ˛ˇ˛ˇˇ
  11597. ˛ˇ˛ˇˇ˛˙ˇ˜˝˛ˇ˛
  11598. ˛ˇˇˇˇ
  11599. ˛ˇˇˇˇ    ˛ˇˇˇ˛˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜4^H¿,
  11600. Courier.°dONLNdjZv`(sZD°dONLNdj`v¢) oReadPrefs;°dONLNdj v˛)¿%{read the user's preference settings}°dONLNd?ÜZíú(èZ DoVennInit;°dONLNdLîZ†∫*DoMainEventLoop;°dONLNdgî †º)Δ{and then loop forever...}°dONLNdÇ¢HÆ`(´HEND.ˇJ@ˇ ˇˇˇˇ@
  11601. ˇ·ˇ‚7^
  11602. 4^*¿¯ˇ$
  11603. @ˇ ˇˇˇˇ@
  11604. ˇ·ˇ‚7^
  11605. 4⁄∫˙, Palatino
  11606. .(‡2334®H¡&°dONLNd    ¶H≤r(ØHA5 world˝Ä°dONLNd¶|≤ï)4An ar€ °dONLNd¶ï≤Ì)ea of memory in an °dONLNd*≤Hæ˜(ªH*application’s partition that contains the °dONLNdTæH * ,QuickDraw global variables, the application °dONLNdÄ H÷!* 2global variables, the application parameters, and °dONLNd≤÷H‚–* the jump table—all of which ar>‡°dONLNd–÷—‚)â e accessed °dONLNd€‚HÓU(ÎHthrX¿°dONLNdfi‚UÓ~)    ough the ¥‡°dONLNdÁ‚~Óë))A5 r¡ °dONLNd΂ëÓÆ)egisterÄÄ°dONLNdÚ‚ÆÓ∞).°dONLNdÙÙHî(˝Haction procedure‹¿°dONLNdÙû•)VA`°dONLNdÙ¶≤) pr^Ä°dONLNd    Ù≤–) ocedurı¿°dONLNdÙ–#)e that performs an °dONLNd"H t(    H action in r‡†°dONLNd-t  ),&esponse to the user holding the mouse °dONLNdS H(H*button down while the cursor is in a contr‡‡°dONLNd}  )πol.°dONLNdÅH*Ü('Hactivate event˘¿°dONLNdêê*)HAn event indicating that a °dONLNd´*H6(3H,window is becoming active or inactive. Each °dONLNd◊6HB§* activate event specifià†°dONLNdÌ6§Bˇ)\es the window to be °dONLNdBHN†(KHchanged and the dir °dONLNdB°N)Yection of the change (that is, °dONLNd3NHZ(WH)whether it’s becoming active or becoming °dONLNd\ZHfp*
  11607. inactive).°dONLNdglHxò*active applicationI@°dONLNdzl£x¸)[The application curr͇°dONLNdél¸x)Yently °dONLNdîxHÑ¥(ÅHinteracting with the user'`°dONLNd≠x¥Ñ)l. Its icon appears on the °dONLNd«ÑHê∫(çHright side of the menu barb`°dONLNd·Ñ∫ê‰)r . See also –@°dONLNdÏщê)*current °dONLNdÙêHú…(ôHprocess, foreground process.°dONLNd¢HÆÖ*active control‹¿°dONLNd ¢èÆñ)GA`°dONLNd!¢óÆ∞) contrU‡°dONLNd'¢∞Æ)ol in which the ContrÄ°dONLNd<¢Æ)^ol °dONLNd?ÆH∫v(∑H    Manager rW°dONLNdHÆv∫¬).esponds to a userı°dONLNdYÆ√∫)M’s mouse actions by °dONLNdm∫HΔQ(√HprG °dONLNdo∫RΔ¿)
  11608. oviding visual feedback. °dONLNdâÃHÿä(’Hactive windowi`°dONLNdóÃïÿØ)MThe fræ°dONLNdùÃØÿ)ontmost window on the °dONLNd≥ÿH‰˛(·H*desktop, the one in which the user is curró†°dONLNd›ÿ˛‰)∂ently °dONLNd„‰H(ÌH,working. The active window is designated by °dONLNdH¸√* racing stripes in the title barÇ°dONLNd.√¸˚){, active contrÀ`°dONLNd<˚¸ )8    ols, and °dONLNdE¸H´(Hhighlighted selections.°dONLNd]Hj*address{†°dONLNdeu|)-A∂@°dONLNdf|‘) number that specifi͇°dONLNdz‘ )Xes the location of °dONLNdçH&ï(#Ha byte in memory)†°dONLNdùï&ó)M.°dONLNdü,H8\(5Halert `°dONLNd•,g8 )'An alert sound, an alert box, or both. °dONLNdÃ8HD"(AH2Alerts warn the user of an unusual or potentially °dONLNd˛DHP* *undesirable situation occurring within an °dONLNd(PH\§* application. See also §¿°dONLNd>P§\Œ)\
  11609. alert box.°dONLNdIbHno(kH    alert box6@°dONLNdSbznÅ)2Ap‡°dONLNdTbÅn) window that an application °dONLNdpnHzö(wHdisplays on the scré@°dONLNdÉnöz)Reen to warn the user or to °dONLNdûzHÜK(ÉHrE°dONLNdüzLÜ) eport an err‡°dONLNd´zÄÜ∫)4or to the userŒ@°dONLNdπzπÜæ)9. o‡°dONLNdªzæÜ )An alert box typically °dONLNd“ÜHí    (èH.consists of text describing the situation and °dONLNdíHûÉ* buttons that r2Ä°dONLNdíÑûõ)<equirI¿°dONLNdíõû)e the user to acknowledge or °dONLNd0ûH™K(ßHrE°dONLNd1ûL™Å)ectify the pr1 °dONLNd>ûÅ™°)5oblem. U‡°dONLNdEû°™") An alert box may or may not °dONLNda™H∂·(≥H!be accompanied by an alert sound.4®8¡.°dONLNdɶ8≤u(Ø8alert resource°dONLNdí¶≤á)GAÛ`°dONLNdì¶Ü≤å) r≈¿°dONLNdï¶å≤£)esourò °dONLNdö¶£≤‘) ce (of type ,
  11610. Courierò °dONLNd¶¶‘≤¯)1'ALRT'ò °dONLNd¨¶¯≤)$) that .°dONLNd≥≤8æT(ª8specifiÓ °dONLNd∫≤Tæ…)es alert sounds, a display r?@°dONLNd÷≤ æ)vectangle, and an °dONLNdÁæ8 £(«8item list for an alert box.°dONLNd–8‹k* alert soundfi°dONLNd–u‹Õ)=An audible signal fr¬†°dONLNd#–Õ‹Ó)Xom the °dONLNd*‹8Ë˝(Â8,Macintosh speaker that warns the user of an °dONLNdVË8Ù¸* -unusual or potentially undesirable situation °dONLNdÉÙ8»* !occurring within an application. ¬°dONLNd§Ù» )êAn alert sound °dONLNd≥8 (    8.may or may not be accompanied by an alert box.°dONLNd‚8z*Alias Managerm¿°dONLNdÖ˙)M The part of the Operating °dONLNd 8*‡('8&System that helps you to locate specifiê`°dONLNd2‡*Û)®ed fiÄ°dONLNd7Ù*)les, °dONLNd<*86D(38dirI °dONLNd?*E6Ù)*ectories, or volumes at a later time. The π†°dONLNdi*Ù6)ØAlias °dONLNdo68Bj(?8
  11611. Manager cr«@°dONLNdy6jBô)2 eates and rå°dONLNdÑ6öB◊)0esolves alias rp °dONLNdì6◊BÈ)=ecor‰Ä°dONLNdó6ÈBı)ds.°dONLNdõH8Tl(Q8 alias record˙`°dONLNd®HvT})>A5°dONLNd©H~T°)     data strÒ °dONLNd≤H°T∏)#ucturw°dONLNd∑HπT»)e crı‡°dONLNdªH»T)eated by the °dONLNd»T8`π(]8Alias Manager to identify a fiÿÄ°dONLNdÊTπ`“)Åle, dirS†°dONLNdÌT”`Ó)ectory´`°dONLNdÛTÌ`˝), or °dONLNd¯`8l\(i8volume.°dONLNd    r8~Z*allocate{°dONLNd        re~k)-T∞¿°dONLNd    
  11612. rj~¶)o assign an arˇÄ°dONLNd    r¶~)<ea of memory for use.°dONLNd    .Ñ8êo(ç8 Apple eventQ`°dONLNd    :ÑzêÅ)BAå°dONLNd    ;ÑÅêÏ) high-level event whose °dONLNd    Sê8úC(ô8strfi°dONLNd    VêCúZ) ucturc‡°dONLNd    [ê[úî)e and interprö °dONLNd    hêîúΩ)9
  11613. etation ar\¿°dONLNd    rêæú)*e determined by °dONLNd    Çú8®H(•8the °dONLNd    ÜúH®°)Apple Event InterprëÄ°dONLNd    ôú°®ˆ)Yocess Messaging Pr`°dONLNd    ´ú˜®)Votocol.°dONLNd    ≥Æ8∫õ(∑8Apple Event Manager{†°dONLNd    «Æ¶∫È)nThe part of the °dONLNd    ◊∫8Δ´(√8Macintosh system softwar3`°dONLNd    Ô∫¨ΔÊ)te that allows °dONLNd    ˝Δ8“™(œ8applications to send and r—†°dONLNd
  11614. Δ™“ÿ)r
  11615. espond to ñÄ°dONLNd
  11616. !Δÿ“).Apple events.°dONLNd
  11617. /ÿ8‰¨(·8Apple Menu Items folder€Ä°dONLNd
  11618. Gÿ∂‰Ω)~A °dONLNd
  11619. Hÿæ‰Õ) dir_@°dONLNd
  11620. LÿÕ‰)ectory located °dONLNd
  11621. [‰8(Ì83in the System Folder for storing desk accessories, °dONLNd
  11622. é8¸* 1applications, folders, and aliases that the user °dONLNd
  11623. ø¸8«* !wants to display in and access fr~@°dONLNd
  11624. ‡¸«Ë)èom the F¿°dONLNd
  11625. Á¸Ë)!Apple °dONLNd
  11626. Ì8S(8menu.°dONLNd
  11627. Û8&∑*application global variables™`°dONLNd ¡&»)âA°dONLNd »&) set of variables °dONLNd #&82H(/8stor9‡°dONLNd '&I2≠)ed in the application’s  °dONLNd ?&≠2ˆ)dA5 world that ar8¿°dONLNd O&ˆ2˝)Ie °dONLNd Q28>•(;8global to the application.°dONLNd lD8PÑ*application heapŸ†°dONLNd }DéPß)VAn ar∑@°dONLNd ÇDßP)ea of memory in the °dONLNd ñP8\ˆ(Y8)application heap zone in which memory is °dONLNd ø\8h≥* dynamically allocated and rô °dONLNd ⁄\≥h){eleased on demand. .°dONLNd Ìh8tfi(q8$The heap contains the application’s °dONLNd hfit)¶'CODE'°dONLNd ht)$ .°dONLNd t8Äã(}8segment 1, data strÉ@°dONLNd +tãÄ¢)Suctur     °dONLNd 0t£Ä¥)es, r‘¿°dONLNd 5t¥ÄÃ)esour°dONLNd :tÕÄ) ce map, and °dONLNd FÄ8å√(â8other code segments as needed.4^H°
  11628. vH†4vH† üHü
  11629. ˇ·ˇ‚7^ˇˇ¬òˇ◊°dONLNd\∫u(n∫Glossaryˇ(Δ@ˇ ˇˇˇˇ@
  11630. ˇ·ˇ‚7^
  11631. 4*I¯, Palatino&e.3+ú"GLOSSARb)9Y4⁄*˙¯
  11632. (‡*2344^*¿°dONLNd\*hí(e*application parameters,‡°dONLNd\ùhÙ)sThirty-two bytes of °dONLNd+h*tÁ(q*+memory in the application partition that ar„ °dONLNdVhÁtÓ)Ωe °dONLNdXt*Ä-(}*rE°dONLNdYt.Ä∞)eserved for system use. The fi‡°dONLNdwt±ÄÊ)É rst long wor–¿°dONLNdÉtÊį)5d is °dONLNdàÄ*åO(â*the addrŸ‡°dONLNdêÄOåÄ)% ess of the fiQ°dONLNdùÄÅå„)2rst QuickDraw global °dONLNd≤å*òP(ï*    variable.°dONLNdºû*™à*application partitionõ‡°dONLNd“ûí™ô)hA÷Ä°dONLNd”ûô™˜) partition of memory °dONLNdË™*∂-(≥*rE°dONLNdÈ™.∂ÿ)'eserved for use by an application. The °dONLNd∂*¬æ(ø*$application partition consists of frC °dONLNd4∂ø¬¯)ïee space, the °dONLNdB¬*Œ(À*3application heap, the application’s stack, and the °dONLNduŒ*⁄e* application’s \¿°dONLNdÉŒe⁄ë);    A5 world.°dONLNdç‡*Ïm(È*auto-key event¸@°dONLNdú‡wÏ˛)MAn event indicating that a key °dONLNdªÏ*¯˘(ı*1is still down after a certain amount of time has °dONLNdϯ*N* elapsed.°dONLNdı
  11633. *Ø*background-only applicationÄ¿°dONLNd
  11634. π˝)èAn application °dONLNd *"√(*$that does not have a user interface.°dONLNdE(*4Ö*background process‹ °dONLNdX(è4ñ)eA¿°dONLNdY(ó4£) pr]‡°dONLNd\(£4Â) ocess that isn’t °dONLNdm4*@<(=*currØ°dONLNdq4<@¡)ently interacting with the user+@°dONLNdê4¡@Í)Ö. ComparR‡°dONLNdò4Í@Ò))e °dONLNdö@*LÑ(I*foreground process.°dONLNdÆR*^J*bitmapB‡°dONLNdµRU^\)+A}Ä°dONLNd∂R\^¢) set of bits that r`°dONLNd…R£^±)Gepr´ °dONLNdÃR±^fi) esents the °dONLNd◊^*j®(g*positions and states of a corrg‡°dONLNdı^®jÛ)~esponding set of °dONLNdj*vÜ(s*items, such as pixels.°dONLNd|*àC*block
  11635. ¿°dONLNd#|Nà_)$See ]¿°dONLNd'|_à£)memory block.°dONLNd5é*öH(ó*button
  11636.  °dONLNd<éSöZ))AD¿°dONLNd=éZös) contrÉ@°dONLNdCésö·)ol that appears on the scrK@°dONLNd]é‚ö)o    een as a °dONLNdfö*¶-(£*rE°dONLNdgö.¶V)ounded rŸ °dONLNdoöV¶ )(ectangle with a title center∂`°dONLNdãö ¶˜)t ed inside. °dONLNdñ¶*≤ˆ(Ø*/When the user clicks a button, the application °dONLNd≈≤*æÙ* .performs the action described by the button’s °dONLNdÛæ* ã* title. Button actions arqÄ°dONLNd æã Á)ae usually performed °dONLNd *÷p(”*instantaneously}@°dONLNd. o÷˘)E. Examples include completing °dONLNdL÷*‚l(fl*operations defi‘†°dONLNd[÷l‚ÿ)Bned by a dialog box and °dONLNds‚*Óä(Î*acknowledging an err†°dONLNdá‚ãÓ)aor message in an alert box.°dONLNd£Ù*T(˝*checkboxB‡°dONLNd¨Ù_f)5A}Ä°dONLNd≠Ùf) contrº°dONLNd≥Ù€)ol that appears onscr¶†°dONLNd»Ù€)\    een as a °dONLNd—* ](    * small squarÑ°dONLNd‹] ·)3e with an accompanying title. `°dONLNd˙‚ È)ÖAC°dONLNd˚È Î) °dONLNd¸ *„(**checkbox displays one of two settings: on °dONLNd&*$’* ((indicated by an X inside the box) or of‹¿°dONLNdN’$˙)´f. When °dONLNdV$*0Â(-*,the user clicks a checkbox, the application °dONLNdÇ0*<-* rE°dONLNdÉ0.<¶)everses its setting. See also ^†°dONLNd°0¶<·)xradio button.°dONLNdØB*NS(K*    close boxn`°dONLNdπB^N˝)4%The small white box on the left side °dONLNdfiN*Zƒ(W*$of the title bar of an active windowÛ¿°dONLNdN√Z¯)ô. Clicking it °dONLNdZ*f{(c*closes the window} °dONLNd!Z{f})Q.°dONLNd#l*x°(u*Command-key equivalent¢¿°dONLNd:l´xÂ)ÅRefers specifiU†°dONLNdHlÊx˝);cally °dONLNdNx*Ñ`(Å* to a keyboar·‡°dONLNdZx`Ñ)6&d equivalent that the user invokes by °dONLNdÄÑ*ê›(ç*#holding down the Command key and prh†°dONLNd£Ñ›ê˚)≥essing °dONLNd™ê*úπ(ô*another key (other than a modifi◊†°dONLNd êπúı)èer key) at the °dONLNdŸú*®Y(•*
  11637. same time.4^¿¯°dONLNd‰\hq(eCommunications T‹¿°dONLNdÙ\phè)Voolbox˘¿°dONLNd˚\ôh†))A4`°dONLNd¸\°h”) part of the °dONLNd    htç(qMacintosh system softwar3`°dONLNd!hétÎ)te that you can use to °dONLNd7tÄ#(}prG °dONLNd9t$Ä)
  11638. -ovide your application with basic networking °dONLNdfÄåû(âand communications services.°dONLNdÉíû?*compactB‡°dONLNdãíJû[)0See dONLNdèí[û™)heap compaction.°dONLNd†§∞W(≠compatibility ‡°dONLNdƧb∞Î)H!The ability of an application to °dONLNdœ∞ºG(π
  11639. execute pr`°dONLNdŸ∞Hº~).operly in difdONLNdÊ∞~ºä)6ferx`°dONLNdÈ∞享) ent operating °dONLNd˜º»1(≈envirn†°dONLNd¸º1»Y)onments.°dONLNdŒ⁄[(◊content regionP °dONLNdŒf⁄Ò)LThe part of a window in which °dONLNd2⁄ÊÛ(„2the contents of a document, the size box, and the °dONLNddÊÚX* window contr∑Ä°dONLNdpÊXÚ¥)>ols (including the scrÙ°dONLNdÜÊ¥Ú„)\ oll bars) ar
  11640. `°dONLNdíʉÚÎ)0e °dONLNdîÚ˛H(˚
  11641. displayed.°dONLNdü:*contextB‡°dONLNdßEº)+The information about a pr«¿°dONLNd¡º’)wocess °dONLNd«v(maintained by the Pr2°dONLNd€w∏)]ocess Manager∞°dONLNdË∑—)@. This °dONLNdÔ(õ(%information includes the curr†°dONLNd     ú(fl)Çent state of the °dONLNd    (4#(1prG °dONLNd    ($4e)
  11642. ocess, the addr `°dONLNd    .(e4Ï)A#ess and size of its partition, its °dONLNd    Q4@G(= type, its cr:@°dONLNd    ]4H@^).eatorÒ°dONLNd    b4]@’), a copy of its low-memory .°dONLNd    }@L°(Iglobals, information about its ,
  11643. Courier°dONLNd    ú@°L≈)á'SIZE'°dONLNd    ¢@≈LÀ)$ rR`°dONLNd    §@ÀL‚)esour$¿°dONLNd    ©@‚L)ce, .°dONLNd    ≠LX>(Uand a pr4@°dONLNd    µL?Xï)%ocess serial numberZ†°dONLNd    »LïXó)V.°dONLNd     ^j[(gcontext switch∫¿°dONLNd    Ÿ^ejl)KAı`°dONLNd    ⁄^lj”) major or minor switch.°dONLNd    Úp|:(ycontrolµ†°dONLNd    ˙pD|k)*An onscrá`°dONLNd
  11644. pl|Â)(een object that the user can °dONLNd
  11645. |àÏ(Ö-manipulate with the mouse. By manipulating a °dONLNd
  11646. Làî0* contr>Ä°dONLNd
  11647. Qà1îÛ)-ol, the user can take an immediate action or °dONLNd
  11648. ~î†Ø(ù"change a setting to modify a futur°dONLNd
  11649. †î∞†‘)ñ    e action.°dONLNd
  11650. ™¶≤M(Ø control defim °dONLNd
  11651. ∂¶N≤ì)4nition functionç`°dONLNd
  11652. Δ¶ù≤§)OA»°dONLNd
  11653. «¶§≤·) function that °dONLNd
  11654. ÷≤æ*(ªdefir °dONLNd
  11655. ⁄≤+æË)*nes the appearance and behavior of a contr†°dONLNd ≤Èæˆ)æol. °dONLNd æ !(«A∫†°dONLNd     æ! :) contr˘ °dONLNd æ: U)ol defi… °dONLNd æV Ù)$nition function, for example, draws °dONLNd : ÷A(”    the contrõ‡°dONLNd C A÷s)'ol. See also g†°dONLNd P t÷“)3standard control defiœ¿°dONLNd e “÷)^nition °dONLNd l÷‚G(fl
  11656. functions.°dONLNd wËÙM* control defim °dONLNd ÉËNÙx)4    nition IDʇ°dONLNd çËÇÙâ)4A!Ä°dONLNd éËäÙfi) number passed to °dONLNd †Ù0(˝contr>Ä°dONLNd •Ù1E)ol-cr%Ä°dONLNd ™ÙEf)eation r•¿°dONLNd ≤ÙfÎ)! outines to indicate the type of °dONLNd “ 0(    contr>Ä°dONLNd ◊1 ü)ol. It consists of the contr;`°dONLNd Ûü ∫)nol defi `°dONLNd ˙ª ◊)nition °dONLNd  L( function’s r◊Ä°dONLNd  Ld)2esour¿°dONLNd  e€)ce ID and a variation code.°dONLNd .*K(' control list°Ä°dONLNd ;U*\);A‹ °dONLNd <\*È)# series of entries pointing to the °dONLNd _*6Ö(3descriptions of the contrɆ°dONLNd x*Ö6Î)kols associated with the °dONLNd ê6B>(?windowé°dONLNd ñ6>B@)$.°dONLNd òHTh(QControl Managerå°dONLNd ®HrTy)XAΔ†°dONLNd ©HyT∑) collection of r7°dONLNd πH∏TÓ)?outines that °dONLNd ΔT`w(]applications use to crÓ¿°dONLNd ‹Tw`”)]eate and manipulate °dONLNd `l0(icontr>Ä°dONLNd ı`1l¡)!ols, especially those in windows.°dONLNdr~Y({control record°dONLNd&rd~k)JAR†°dONLNd'rk~é)     data str¿°dONLNd0rè~¶)$ucturdONLNd5r¶~Œ)
  11657. e of type .°dONLNd?~äh(áControlRecord°dONLNdL~hä∏)N, which the ContrR`°dONLNd]~∏äÌ)P ol Manager .°dONLNdhäñK(ì uses to stor<Ä°dONLNdtäLñÈ)2'e all the information it needs for its °dONLNdõñ¢w(üoperations on a contrÁ‡°dONLNd∞ñw¢Å)]ol.ˇ)|@ˇ ˇˇˇˇ@
  11658. ˇ·ˇ‚7^
  11659. 4HF, Palatino&e.3+∫"GLOSSARb)9Y4⁄∫˙
  11660. (‡2354^H¿&°dONLNd\Hh˜(eH$cooperative multitasking environment˛‡°dONLNd%\h)πA9Ä°dONLNd&\    h ) °dONLNd'hHtô(qHmultitasking envir4@°dONLNd9höt)Ronment in which applications °dONLNdVtHÄø(}Hexplicitly cooperate to sharàÄ°dONLNdrtøÄ")we the available system °dONLNdâÄHåK(âHrE°dONLNdäÄLåd)esourç@°dONLNdèÄdåô)ces. See alsoÚ°dONLNdúÄôå)5 multitasking environment.°dONLNd∑íHûî(õHcurrent directory‹ °dONLNd…íûû¿)V The dira°dONLNd—í¡û%)#ectory whose contents °dONLNdÁûH™P(ßHarE°dONLNdÈûQ™ )    ,e listed in the dialog box displayed by the °dONLNd™H∂j(≥HStandar¥@°dONLNd™j∂‘)"d File Package. See also … °dONLNd5™‘∂ )jdefault directory:@°dONLNdF™ ∂")L.°dONLNdHºH»ñ(≈Hcurrent menu list…‡°dONLNdZº†»ß)XAÄ°dONLNd[º®»À)     data str¿†°dONLNddºÀ»‚)#ucturFÄ°dONLNdiº„»%)e that contains °dONLNdy»H‘®(—Hhandles to the menu r˝‡°dONLNdé»®‘∫)`ecorr@°dONLNdí»ª‘)ds of all menus in the °dONLNd©‘H‡Z(›HcurrØ°dONLNd≠‘Z‡€)ent menu bar and the menu rÇ`°dONLNd»‘€‡Ì)Åecorˆ¿°dONLNdÑ̇)
  11661. ds of any °dONLNd÷‡HÏ(ÈH-submenus or pop-up menus that an application °dONLNdÏH¯õ* inserts into the list.°dONLNd˛H
  11662. ç*current process¢ °dONLNd*˛ó
  11663. ¥)OThe pr•°dONLNd0˛¥
  11664. ˝)ocess that is curr¯‡°dONLNdB˛˝
  11665. )Iently °dONLNdH
  11666. Hß(Hexecuting and whose Ò¿°dONLNd\
  11667. ß )_A5 world is valid; this °dONLNdtH"Q(HprG °dONLNdvR"√)
  11668. ocess can be in the backgrı†°dONLNdê√"˘)q ound or the °dONLNdú"H.T(+Hfor`°dONLNdü"U.c)egr, °dONLNd¢"c.|)ound.°dONLNd®4H@d(=Hcursor“†°dONLNdØ4n@’)&Any 256-bit image, defi‡°dONLNdΔ4÷@˛)h    ned by a °dONLNdœ@HLò(IH16-by-16-bit squarg°dONLNd·@òL)Pe. The mouse driver displays °dONLNd˛LHXj(UHthe curr `°dONLNdLkX%)#(ent cursor and maps the movement of the °dONLNd.XHdw(aH
  11669. mouse to rT °dONLNd8XwdÎ)/elative locations on the scr¥°dONLNdTXÎd)t een as the °dONLNd_dHp≠(mHuser moves the mouse.°dONLNduvHÇî*dangling pointerk@°dONLNdÜvüǶ)WA•‡°dONLNdáv¶Ç) copy of a master pointer °dONLNd°ÇHé‘(ãH!that no longer points to the corr{°dONLNd¬Ç‘é
  11670. )å ect memory °dONLNdÕéHö](óHaddr|Ä°dONLNd—é]öl)ess.°dONLNd÷†H¨q(©H    data fork·¿°dONLNd‡†{¨ª)3The part of a fi™¿°dONLNd†º¨)Ale that contains data °dONLNd¨H∏÷(µHaccessed using the File ManagerÚ°dONLNd%¨’∏)ç . The data °dONLNd0∏Hƒ|(¡H usually corrHÄ°dONLNd<∏}ƒ€)5esponds to data enterÚ‡°dONLNdQ∏€ƒ)^ed by the user; °dONLNdaƒH–î(ÕHthe application crIÄ°dONLNdsƒï–¿)M
  11671. eating a fi´ °dONLNd~ƒ¿–Ï)+ le can storX†°dONLNdâƒÌ–)-e and °dONLNdè–H‹f(ŸHinterprˇÄ°dONLNdñ–f‹))et the data in the data fork in whatever °dONLNdø‹HËã(ÂHmanner is appr°†°dONLNdÕ‹ã˨)Copriate.°dONLNd÷ÓH˙â(˜Hdefault buttonM°dONLNdÂÓî˙)L!In an alert box or a dialog box, °dONLNd˙H(H,the button whose action is invoked when the °dONLNd2Hg* user pr«Ä°dONLNd9g
  11672. )%esses the Return key or the Enter keyŸÄ°dONLNd^    !)¢. The °dONLNddH(H*Dialog Manager automatically draws a bold °dONLNdéH*r*
  11673. outline arÔ¿°dONLNdòr*)*(ound the default button in alert boxes; °dONLNd¿*H6(3H*applications should draw a bold outline arY`°dONLNdÍ*6)ºound °dONLNdÔ6HB(?H0the default button in dialog boxes. The default °dONLNdBHN√* button should invoke the pr<@°dONLNd:BƒNÿ)|eferr€°dONLNd?BÿN#)ed action which, °dONLNdPNHZ(WH-whenever possible, should be a “safe” action—°dONLNd}ZHf* -that is, one that doesn’t cause loss of data.°dONLNd´lHxî*default directory‹ °dONLNdΩlûx¿)V The dira°dONLNd≈l¡x)#ectory used in File °dONLNdŸxHÑv(ÅH    Manager rW°dONLNd‚xvÑ ).&outines whenever you don’t explicitly °dONLNdÑHêê(çHspecify some dir›†°dONLNdÑêê´)Hectory5`°dONLNdÑ´ê’) . See also £@°dONLNd)Ñ’ê!)*current directory`°dONLNd:Ñ!ê#)L.°dONLNd<ñH¢ç(üHdefault volume4`°dONLNdKñò¢)P The volume that contains the °dONLNdi¢HÆv(´H default dir4@°dONLNdt¢wÆí)/ectoryå°dONLNdz¢ëÆì).4^8¿°dONLNd|\8hz(e8desk accessoryj†°dONLNdã\Öhå)MA•@°dONLNdå\åh) “mini-application” that is °dONLNd®h8ti(q8 available fr…Ä°dONLNd¥hitä)1om the í°dONLNdªhät«)! Apple menu rJ†°dONLNd«h»t€)>egarh`°dONLNdÀh€tˇ)    dless of °dONLNd‘t8Ä°(}8which application you’r!@°dONLNdÎt¢Ä)je using—for example, the °dONLNdÄ8åf(â8
  11674. CalculatorÃ@°dONLNdÄeåò)- , Note Pad, „†°dONLNdÄòå¯)3Alarm Clock, Puzzle, °dONLNd/å8ò”(ï8 Scrapbook, Key Caps, and Chooser‡°dONLNdOå”ò’)õ.°dONLNdQû8™\(ß8desktop&Ä°dONLNdYûg™π)/The working envirh°dONLNdjûπ™ )Ronment displayed °dONLNd{™8∂˚(≥8*on the Macintosh computer: the gray backgr¿°dONLNd•™¸∂)ƒound °dONLNd™∂8¬@(ø8arE°dONLNd¨∂A¬x)    ea on the scr% °dONLNdπ∂x¬â)7een.°dONLNdæ»8‘Ç(—8Device Manager5†°dONLNdÕ»ç‘)UThe part of the Macintosh °dONLNdÁ‘8‡˙(›8*Operating System that supports device I/O.°dONLNd    Ê8Úh*
  11675. dialog box冰dONLNd    ÊrÚy):A«@°dONLNd    ÊyÚ˛) window that’s used for some °dONLNd    ;Ú8˛˙(˚8/special or limited purpose, such as to solicit °dONLNd    j˛8
  11676. v* information fr‘@°dONLNd    x˛v
  11677. √)>om the user befor[ °dONLNd    â˛ƒ
  11678. )Ne the application °dONLNd    õ
  11679. 8å(8carries out the userû†°dONLNd    Ø
  11680. çÌ)U’s command. See also  †°dONLNd    ƒ
  11681. Ó)amodal °dONLNd     8"Ã(8 dialog box, modeless dialog box,\ °dONLNd    ÍÕ"‚)ï and I@°dONLNd    Ô„" )movable °dONLNd    ˜"8.â(+8modal dialog box.°dONLNd
  11682.     48@Ç*Dialog Manager®`°dONLNd
  11683. 4å@)TThe part of the Macintosh °dONLNd
  11684. 2@8L>(I8Tµ¿°dONLNd
  11685. 3@=L{)oolbox that prà°dONLNd
  11686. A@{Lû)>ovides r7†°dONLNd
  11687. I@üLŸ)$outines for cr®@°dONLNd
  11688. W@ŸL
  11689. ): eating and °dONLNd
  11690. bL8Xfi(U8%manipulating alerts and dialog boxes.°dONLNd
  11691. à^8jt*dialog recordƒ °dONLNd
  11692. ñ^~jÖ)FA˛¿°dONLNd
  11693. ó^Öj®)     data str∫‡°dONLNd
  11694. †^©j¿)$uctur@¿°dONLNd
  11695. •^¡jÈ)
  11696. e of type ,
  11697. Courier.°dONLNd
  11698. Øj8vÄ(s8 DialogRecord°dONLNd
  11699. ªjÄv)H! that the Dialog Manager uses to .°dONLNd
  11700. ‹v8Ç@(8crµ@°dONLNd
  11701. fiv@Ǻ)eate dialog boxes and alerts..°dONLNd
  11702. ¸à8î|(ë8dialog resource°dONLNd àÜîé)NAÛ`°dONLNd àçîì) r≈¿°dONLNd àìî™)esourò °dONLNd à™î€) ce (of type ò °dONLNd  à€îˇ)1'DLOG'ò °dONLNd &àˇî)$) .°dONLNd (î8†h(ù8 that specifiƒ@°dONLNd 4îh†Î)0es the window type, display ræ@°dONLNd QîΆ)É
  11703. ectangle, °dONLNd [†8¨π(©8and item list for a dialog box.°dONLNd {≤8æa*    directoryô@°dONLNd Ö≤kæm)3 ∫‡°dONLNd Ü≤mæt)AıÄ°dONLNd á≤tæ)$ subdivision of a volume, available °dONLNd ´æ8 m(«8in the hierarR °dONLNd ∏æn ê)6chical fiaÄ°dONLNd ¡æê æ)" le system. @°dONLNd Ãææ ≈).AX‡°dONLNd Õæ≈ ‘) dir¢°dONLNd —æ‘ ) ectory can °dONLNd ‹ 8÷a(”8    contain fi¿°dONLNd Ê a÷©))les and other dir*¿°dONLNd ˜ ™÷˛)Iectories (known as °dONLNd
  11704. ÷8‚T(fl8subdir‡°dONLNd ÷U‚|)
  11705. ectories).°dONLNd Ë8Ùv(Ò8disabled itemˆ†°dONLNd )ËÄÙ    )H!In an alert box or a dialog box, °dONLNd JÙ8 (˝8.an item for which the Dialog Manager does not °dONLNd x8 ;* rE°dONLNd y< ç)eport user events. ÁÄ°dONLNd åå )PAn example of a disabled item °dONLNd ™ 8„(8*is static text, which typically does not r˚`°dONLNd ‘ „)´
  11706. espond to °dONLNd fi8$R(!8clicks.°dONLNd Ê*86K*disk{†°dONLNd Î*V6])A∂@°dONLNd Ï*]6)$ physical medium capable of storing °dONLNd68Bo(?8 information.°dONLNdH8Tâ*disk initializationa@°dONLNd1HîT±)\The prd °dONLNd7H±T)ocess of making a °dONLNdIT8`(]8.disk usable by the Macintosh Operating System.°dONLNdxf8r∑*Disk Initialization Manager7†°dONLNdîf¬r)äThe part of the °dONLNd§r8~({8,Macintosh Operating System that manages the °dONLNd–~8äA* prG °dONLNd“~Bä≤)
  11707. ocess of initializing disks.°dONLNdÔê8úê(ô8disk-inserted eventÅ`°dONLNdêöú)bAn event indicating that a °dONLNdú8®Á(•8)disk has been inserted into a disk drive.ˇ*&@ˇ ˇˇˇˇ@
  11708. ˇ·ˇ‚7^
  11709. 4*I¯, Palatino&e.3+ú"GLOSSARb)9Y4⁄*˙¯
  11710. (‡*2364^*¿°dONLNd\*hx(e*display rectangleÖ °dONLNd\Çhâ)XAø¿°dONLNd\âhè) r¿°dONLNd\êh€)ectangle that defi€¿°dONLNd'\€h¸)Knes the °dONLNd/h*t˙(q*2size and location of an item in an alert box or a °dONLNdat*Äò* dialog box. The display rR`°dONLNdztòÄÂ)nectangle is specifit†°dONLNdçtÂÄ˝)Med in °dONLNdìÄ*åô(â*an item list and uses coorB°dONLNd≠Äöå)pdinates local to the alert °dONLNd»å*òÅ(ï*box or a dialog box.°dONLNd›û*™u*disposed handleΩ‡°dONLNdÌû™Ü)UA¯Ä°dONLNdÓûÜ™¯) handle whose associated °dONLNd™*∂-(≥*rE°dONLNd™.∂’)&elocatable block has been disposed of.°dONLNd/º*»K(≈*divider“°dONLNd7ºU»\)+A †°dONLNd8º]»˛)% gray line used in menus to separate °dONLNd]»*‘3(—*gr‘ °dONLNd_»3‘ç)    oups of menu items.°dONLNds⁄*ÊW(„*document
  11711.  °dONLNd|⁄bÊr)8 (1) SÄ°dONLNdÅ⁄rÊy)Aé °dONLNdÇ⁄yÊÅ) fi‡°dONLNdÖ⁄ÇÊ◊)    le that a user can cr@°dONLNdö⁄◊Ê˛)U    eate and °dONLNd£Ê*Ú@(Ô*edit. 1¿°dONLNd©Ê@ÚG)Al`°dONLNd™ÊGÚÛ)' document is usually associated with a °dONLNd—Ú*˛¸(˚*1single application, which the user expects to be °dONLNd˛*
  11712. ˝* /able to open by double-clicking the document’s °dONLNd1
  11713. *w* icon in the Finderö °dONLNdC
  11714. wä)M. (2) cÄ°dONLNdI
  11715. ä◊)Any collection of °dONLNd[*"Ó(*,information that is displayed in a document °dONLNdá"*.N* windowé°dONLNdç"N.P)$.°dONLNdè4*@v(=*document recordlÄ°dONLNdü4Å@É)W é °dONLNd†4É@Ÿ)An application-defi£†°dONLNd≥4Ÿ@)V    ned data °dONLNdº@*L5(I*strfi°dONLNdø@5LL) ucturc‡°dONLNdƒ@MLÚ)&e that contains information about the °dONLNdÍL*XN(U*windowé°dONLNdLNX|)$ , any contr-°dONLNd˚L}Xı)/ols in the window (such as °dONLNdX*d6(a*scrÚ@°dONLNdX6dà) oll bars), and the fiö‡°dONLNd.Xâd¸)Sle (if any) whose contents °dONLNdId*p2(m*arE°dONLNdKd3p®)    e displayed in the windowS‡°dONLNddd®p™)u.°dONLNdfv*Ç(*document windowL`°dONLNdvväÇë)`Aá°dONLNdwvëÇÙ) window in which the °dONLNdåÇ*éı(ã*/user enters text, draws graphics, or otherwise °dONLNdªé*ö§* enters or manipulates data. °dONLNdÿ†*¨*double indirectionº°dONLNdΆ⨘)_The means by which the °dONLNd¨*∏(µ*.Memory Manager or an application accesses the °dONLNd0∏*ƒ’* 'data associated with a handle variable.°dONLNdX *÷^* drag region°dONLNdd i÷Ö)?The ar¿°dONLNdj Ö÷ˇ)ea occupied by a window’s °dONLNdÑ÷*‚L(fl*    title bar‹°dONLNdç÷K‚˝)!), except for the close box and zoom box. °dONLNd∂‚*Ó(Î*-The user can move a window on the desktop by °dONLNd„Ó*˙Ä* dragging the drag rµ`°dONLNdˆÓÄ˙ù)Vegion. °dONLNd˛* J(    *editionB@°dONLNdU )+)The data written to an edition container °dONLNd/ *i(*by a publisher†°dONLNd= in)?. ß@°dONLNd? mt)A·‡°dONLNd@ tÔ) publisher writes data to an °dONLNd]*$¸(!*.edition whenever a user saves a document that °dONLNdã$*0É* contains a publisherfl °dONLNdü$Ç0Û)X, and subscribers in other °dONLNd∫0*<w(9*documents may rü °dONLNd…0w<∂)Mead the data frX‡°dONLNdÿ0∑<˘)@om the edition °dONLNdÁ<*Hï(E*whenever it is updated. °dONLNdN*Zv*Edition ManagerlÄ°dONLNdNÅZı)WThe part of the Macintosh °dONLNd*Z*fl(c*system softwarM‡°dONLNd8ZmfÎ)Ce that allows applications to °dONLNdVf*rÙ(o*+automate copy and paste operations between °dONLNdÅr*~Ã* &applications, so that data can be shar¿‡°dONLNdßrÃ~Ÿ)¢ed °dONLNd™~*äa(á* dynamicallym°dONLNdµ~`äe)6. °dONLNd∏ê*úi(ô* empty handleâÄ°dONLNd≈êsúz)IAƒ °dONLNdΔêzúˇ) handle whose master pointer .°dONLNd„ú*®k(•*has the value ,
  11716. Courier°dONLNdÒúk®})ANIL!†°dONLNdÙú}®) (possibly indicating that the .°dONLNd®*¥a(±* underlying r5‡°dONLNd®b¥„)8elocatable block has been pur˜`°dONLNd<®„¥˘)Åged).4^¿¯°dONLNdB\hU(e enabled item2Ä°dONLNdO\`hb)F ≤Ä°dONLNdP\bhÎ)!In an alert box or a dialog box, °dONLNdqht…(q&an item for which the Dialog Manager ro °dONLNdóh…tÁ)Øeports °dONLNdûtÄÁ(}-user events. For example, the Dialog Manager °dONLNdÀÄå* rE°dONLNdÃÄå…)'eports clicks in an enabled OK button. °dONLNdÙíû2(õevent~¿°dONLNd˙í=ûÒ)#%The means by which the Event Manager °dONLNdû™È(ß-communicates information about user actions, °dONLNdL™∂e* changes in the pr°dONLNd]™f∂Δ)Locessing status of the °dONLNdt∂¬ö(øapplication, and other occurr~@°dONLNdë∂ö¬Ã)Ä ences that r´@°dONLNdù∂ì„)2equir¬Ä°dONLNd¢∂„¬Ò)e a °dONLNd¶¬Œ(ÀrE°dONLNd߬ŒK)
  11717. esponse fr4 °dONLNd±¬KŒ†)-om the application.°dONLNd≈‘‡ï(›event-driven programming°dONLNdfi‘†‡ß)ÜAR†°dONLNdfl‘߇ ) way of °dONLNdÁ‡Ï%(Èstrfi°dONLNd͇%Ï) 0ucturing an application so that it is guided by °dONLNd    Ï¯<(ıevents rO@°dONLNd    "Ï=¯)#eporting a userà°dONLNd    1Ïįÿ)C’s actions and other °dONLNd    F¯6(occurrî¿°dONLNd    L¯6ñ)ences in the computer¬°dONLNd    a¯ñõ)`. °dONLNd    d
  11718. ;(event fiÄ°dONLNd    l
  11719. <t)"lter function‡°dONLNd    z
  11720. ’)CAn application-defi`°dONLNd    ç
  11721. ’Ë)Vned °dONLNd    ë"(rE°dONLNd    í"‰)*outine that supplements the Dialog Manager†°dONLNd    ºÂ"Ó)«’s °dONLNd    ø".Ì(+/ability to handle events—for example, an event °dONLNd    Ó.: * fiå¿°dONLNd    . :Á)0lter function can test for disk-inserted events °dONLNd
  11722.  :Fx(Cand can allow backgrß °dONLNd
  11723. 4:xFŸ)^ound applications to r†°dONLNd
  11724. J:⁄F˜)beceive °dONLNd
  11725. QFR](Oupdate events. °dONLNd
  11726. aXdJ*
  11727. event loop冰dONLNd
  11728. lXTd[):A«@°dONLNd
  11729. mX[dπ) section of code that rfl`°dONLNd
  11730. ÑXπdÍ)^ epetitively °dONLNd
  11731. êdp(mrE°dONLNd
  11732. ëdpi)etrieves events frE†°dONLNd
  11733. £dip„)Kom the Event Manager and °dONLNd
  11734. ºp|{(ydispatches to the appr,`°dONLNd
  11735. “p||€)bopriate event-handlerQ‡°dONLNd
  11736. Áp€|‡)_. °dONLNd
  11737. ÍÇé_(ãEvent Manager©°dONLNd
  11738. ¯Çié∏)OThe collection of r’ °dONLNd Ç∏éÓ)Ooutines that °dONLNd éöé(óan application can use to rTÄ°dONLNd 3ééö„)teceive information °dONLNd Fö¶∫(£#about actions performed by the user–`°dONLNd iöπ¶Õ)ü, to rÕ@°dONLNd oöÕ¶Í)eceive °dONLNd v¶≤é(Ønotice of changes in the pr{‡°dONLNd ë¶é≤Ó)tocessing status of the °dONLNd ®≤æfi(ª+application, and to communicate with other °dONLNd ”æ T* applications. °dONLNd ‚–‹X*event priority˚†°dONLNd Ò–b‹~)HThe orq‡°dONLNd ˜–‹Ù)der in which an event of a °dONLNd ‹Ëk(Âparticular type is r˘Ä°dONLNd &‹kËfl)Qeturned to an application. °dONLNd BÓ˙R(˜ event record· °dONLNd OÓ\˙c)BA¿°dONLNd PÓd˙á)     data str◊‡°dONLNd YÓá˙û)#uctur]¿°dONLNd ^Óü˙«)
  11739. e of type .°dONLNd h˙\( EventRecord°dONLNd s˙\Ú)B! that your application uses when .°dONLNd î(rE°dONLNd ïı)0etrieving information about an event. The Event °dONLNd ≈H(    Manager rW°dONLNd ŒH†).eturns, in an event ràÄ°dONLNd „†≤)Xecor¸‡°dONLNd Á≤Ù)d, information °dONLNd ˆ*ß('about what type of event occurrz°dONLNdß*ı)çed (a mouse click °dONLNd'*6?(3or keypr °dONLNd/*@6–)&!ess, for example) and additional °dONLNdP6B≈(?'information associated with the event. °dONLNdxHTE*    extension^†°dONLNdÇHPTa)6See ±†°dONLNdÜHaT±)system extension.°dONLNdòZfi(cExtensions folder0†°dONLNd™Ztf{)ZAk@°dONLNd´Z{fä) dir¥`°dONLNdØZäfÊ)ectory located in the °dONLNd≈fr‡(o,System Folder for storing system extension fiO°dONLNdÚf·rÔ)«les °dONLNdˆr~‘({)such as printer and network drivers and fi¿°dONLNd r’~Ó)ªles of .°dONLNd'~ä5(átypes °dONLNd-~5äY)'INIT'°dONLNd3~Yä^)$, °dONLNd5~^äÇ)'scri'°dONLNd;~Çäö)$, and °dONLNdA~öäæ)'appe'°dONLNdG~æä√)$. .°dONLNdJêú (ôfiõ¿°dONLNdLê ú()leÔ†°dONLNdOê2ú9)A*@°dONLNdPê:úi)
  11740.  named, oroÄ°dONLNdZêiúw)/der‡°dONLNd]êxúÊ)ed sequence of bytes stor^°dONLNdvêÊúÛ)ned °dONLNdyú®Ú(•0on a Macintosh volume, divided into a data fork °dONLNd©®¥8* and a r2 °dONLNd∞®9¥Q)esourz`°dONLNdµ®Q¥t)    ce fork. ˇ)Ã@ˇ ˇˇˇˇ@
  11741. ˇ·ˇ‚7^
  11742. 4HF, Palatino&e.3+∫"GLOSSARb)9Y4⁄∫˙
  11743. (‡2374^H¿&°dONLNd\HhN(eHfiõ¿°dONLNd\Nhl)le fork·¿°dONLNd
  11744. \vhÓ)( One of the two parts of a fiXÄ°dONLNd'\Ôh!)yle. See also °dONLNd4hHtq(qH    data fork·¿°dONLNd=hqtÜ)) and Œ‡°dONLNdBhát≈)resource fork.°dONLNdQzHÜÑ(ÉH File Manager≈`°dONLNd^zéÜ)F The part of the Macintosh °dONLNdyÜHíÒ(èH$Operating System that manages the or∫Ä°dONLNdùÜÒí$)© ganization, °dONLNd©íHûK(õHrE°dONLNd™íLû)0eading, and writing of data located on physical °dONLNd⁄ûH™˙(ßH)data storage devices such as disk drives.°dONLNd∞HºN*fiõ¿°dONLNd∞Nºx)    le system¿°dONLNd∞ɺÖ)5 8`°dONLNd∞Öºå)As°dONLNd∞庫) method of or9Ä°dONLNd∞»º˜)<
  11745. ganizing fiX°dONLNd*∞˜º)/les and °dONLNd2ºH»T(≈HdirI °dONLNd5ºU»≤)ectories on a volume.°dONLNdKŒH⁄e(◊HFinder~ °dONLNdRŒp⁄)(#An application that works with the °dONLNdu⁄HÊä(„Hsystem softwarM‡°dONLNdÉ⁄ãÊfl)Ce to keep track of fi~`°dONLNdò⁄flÊ)Tles and °dONLNd†ÊHÚê(ÔHmanage the user@°dONLNdØÊíÚ‚)J’s desktop display(°dONLNd¡Ê·Ú„)O.°dONLNd√¯Hë(HFinder Interfaceà‡°dONLNd‘¯õ¢)SA√Ä°dONLNd’¯¢¬)     set of r‡°dONLNdfi¯√˛)!outines, data °dONLNdÏHS(Hstrfi°dONLNdÔSj) ucturc‡°dONLNdÙkê)    es, and rú†°dONLNd˝ê®)%esour‰‡°dONLNd®)ces that you can use to °dONLNdH[(Hcoor†@°dONLNd[    )'dinate your application with the FinderK°dONLNdE     )Æ.°dONLNdG"H.c(+HfolderF°dONLNdN"n.p)& g†°dONLNdO"p.w)A¢@°dONLNdP"w.Ü) dirÎ`°dONLNdT"Ü.°)ectoryC °dONLNdZ"°.∑). See ñ °dONLNd`"∑.‡)    directoryƒ`°dONLNdi"fl.·)(.°dONLNdk4H@(=H Fonts folderƒ °dONLNdx4â@ê)AA˛¿°dONLNdy4ê@ü) dirG‡°dONLNd}4†@)ectory located in the System °dONLNdö@HL∞(IHFolder for storing fonts.°dONLNd¥RH^†*foreground processä¿°dONLNd«R™^«)bThe pr熰dONLNdÕR«^Û)
  11746. ocess currf°dONLNd◊RÛ^ ),ently °dONLNd›^Hj$(gH5interacting with the user; it appears to the user as °dONLNdjHvÀ* the active application. The forÈ@°dONLNd1jÀvŸ)Éegr°dONLNd4j⁄v˝)ound pr∑‡°dONLNd;j˝v)#ocess °dONLNdAvHǶ(Hdisplays its menu baríÄ°dONLNdVv¶ǡ)^, and its windows arb`°dONLNdjvÇ)Ze in °dONLNdoÇHéO(ãHfrò‡°dONLNdqÇOé)*ont of the windows of other applications. °dONLNdõéHöl(óHCompar߆°dONLNd°élös)$e Ò@°dONLNd£ésö–)background process.°dONLNd∑†H¨[(©HforkÚ °dONLNdº†e¨x) See ≈ °dONLNd¡†y¨)fi‡‡°dONLNd√†¨ü)le fork.°dONLNdÃ≤Hæà(ªHfragmentation|@°dONLNd⁄≤ìæ§)KSee œ@°dONLNdfi≤§æ)heap fragmentation.°dONLNdÚƒH–b(ÕHframe*‡°dONLNd¯ƒm–Ó)%The part of a window drawn °dONLNd–H‹Ø(ŸHautomatically by the Wı`°dONLNd)–Æ‹Ù)findow ManagerÏ°dONLNd6–Ù‹)F, namely∂¿°dONLNd>–‹)%, °dONLNd@‹HËz(ÂHthe title bar9`°dONLNdM‹zË)2#, including the close box and zoom °dONLNdpËHÙ—(ÒHbox, and the window’s outline.°dONLNdè˙Hu*
  11747. free blockR°dONLNdö˙Äá)8A冰dONLNdõ˙á) memory block containing space °dONLNd∫HØ(Havailable for allocation.°dONLNd‘H$π*global coordinate systemZ@°dONLNd̃$Í)|The coor∂@°dONLNdıÍ$)&dinate °dONLNd¸$H0Å(-Hsystem that rÑ@°dONLNd    $Å0è)9epr°dONLNd $ê0)esents all potential QuickDraw °dONLNd+0H<˜(9H(drawing space. The origin of the global °dONLNdS<HH[* coor†@°dONLNdW<[H)-dinate system—that is, the point (0,0)—is at °dONLNdÑHHTs(QH    the upperw`°dONLNdçHsTÁ)+-left corner of the main scr†@°dONLNd©HÁT˚)teen. °dONLNdÆTH`l(]HCompar߆°dONLNd¥Tl`s)$e Ò@°dONLNd∂Ts`‡)local coordinate system.°dONLNdœfHrë(oHglobal variablesà@°dONLNd‡fõr¨)SSee €@°dONLNd‰f¨r)application global °dONLNd˜rH~‰({H#variables, system global variables,’‡°dONLNdr‰~˘)ú and °dONLNd~HäÀ(áHQuickDraw global variables.°dONLNd;êHú* glue routineP¿°dONLNdHêäúë)BAã`°dONLNdIêëúó) r–`°dONLNdKêóú    )outine, usually written in °dONLNdfúH® (•H,assembly-language, that allows a high-level °dONLNdí®H¥«* language to call a low-level ry†°dONLNd∞®«¥Ë)outine. ]†°dONLNd∏®Ë¥)!
  11748. Also, any °dONLNd¬¥H¿(ΩH)short special-purpose assembly-language r©°dONLNdÎ¥¿#)Ωoutine.4^8¿°dONLNdÛ\8ht(e8graphics port¡°dONLNd\~hÖ)FA˚†°dONLNd\Öh) complete, individual drawing °dONLNd h8tO(q8envirn†°dONLNd%hOtÂ)onment with an independent coor·°dONLNdDhÂt)ñdinate ˇˇ◊t°dONLNdKt8Ä(}81system. Each window is drawn in a graphics port. °dONLNd}Ü8íW*handle' °dONLNdÑÜbíi)*Aa¿°dONLNdÖÜiíË) variable containing the addrÚ†°dONLNd¢ÜËí
  11749. )    ess of a °dONLNd´í8ûx(õ8master pointerÇ@°dONLNdπíxû»)@, used to access a rL¿°dONLNdÕí…û)Qelocatable block. °dONLNdflû8™](ß8    See also ̇°dONLNdËû]™~)%pointer≥@°dONLNdÔû~™Ä)!.°dONLNdÒ∞8ºN(π8heap∑Ä°dONLNdˆ∞Xºq) An arï °dONLNd˚∞qº˛)ea of memory in which space is °dONLNdº8»≥(≈8dynamically allocated and rô °dONLNd5º≥»){eleased on demand, °dONLNdH»8‘≥(—8using the Memory ManagerI °dONLNd`»≥‘›){ . See also ∑°dONLNdk»›‘)* application °dONLNdw‘8‡P(›8heap.°dONLNd}Ê8ÚÖ*heap compaction˘ °dONLNdçÊèÚ¨)WThe pr¸°dONLNdìʨÚı)ocess of moving °dONLNd£Ú8˛(˚80allocated blocks within a heap to collect the fr °dONLNd”Ú˛) ee °dONLNd÷˛8
  11750. •(8space into a single block.°dONLNdÒ8ë*heap fragmentation3¿°dONLNd    ú )dThe state of a heap when °dONLNd    8(y(%8the available fr&‡°dONLNd    -z(«)Bee space is scatterô °dONLNd    @«(·)Med thr◊@°dONLNd    F·(    )oughout °dONLNd    N(84â(18the heap in numero`°dONLNd    _(â4›)Qous unused blocks.°dONLNd    r:8Fr(C8 help balloonà‡°dONLNd    :|FÉ)DA√Ä°dONLNd    Ä:ÉFâ) rÄ°dONLNd    Ç:äF≥)ounded-rpÄ°dONLNd    ä:≥F))ectangle window that °dONLNd    üF8R(O8-contains explanatory information for the usero¿°dONLNd    ÃFR)». °dONLNd    ŒR8^B([8WÛ`°dONLNd    œRA^)    0ith tips pointing at the objects they annotate, °dONLNd    ˇ^8j(g83help balloons look like bubbles used for dialog in °dONLNd
  11751. 2j8vª* comic strips. Help balloons ar» °dONLNd
  11752. Pjªv)Ée turned on by the °dONLNd
  11753. cv8ÇT(8user fr@°dONLNd
  11754. jvUÇ)$om the Help menu; when Balloon Help °dONLNd
  11755. éÇ8é(ã82assistance is on, a help balloon appears whenever °dONLNd
  11756. ¿é8öÿ* $the user moves the cursor over an ar/°dONLNd
  11757. ‰éŸö)° ea that is °dONLNd
  11758. Ôö8¶á(£8associated with it.°dONLNd ¨8∏ä*hierarchical menuˆ°dONLNd ¨î∏õ)\A0†°dONLNd ¨ú∏Î) menu to which a °dONLNd '∏8ƒï(¡8submenu is attached.°dONLNd < 8÷Ç*high-level event§°dONLNd M å÷“)TAn event sent fr= °dONLNd ] ”÷ˆ)Gom one °dONLNd d÷8‚ü(fl8application to another rJ†°dONLNd |÷†‚˝)hequesting transfer of °dONLNd í‚8Ó¯(Î8*information or performance of some action.°dONLNd ΩÙ8†*high-level event queuew@°dONLNd ‘Ù´≤)sA±‡°dONLNd ’Ù≤) separate queue that °dONLNd Í8 ÿ(    8#the Event Manager maintains to storG`°dONLNd Ÿ )°e high-level °dONLNd  8 (80events transmitted to an application. The Event °dONLNd J8$* /Manager maintains a high-level event queue for °dONLNd y$80Œ* "each open application capable of r °dONLNd õ$œ0ˆ)ó    eceiving °dONLNd §08<Ü(98high-level events.°dONLNd ∑B8NK*iconÔ°dONLNd ºBUNö)An image that r7‡°dONLNd ÀBõN©)Fepr»†°dONLNd ŒB©N˙)esents an object, a °dONLNd ‚N8Zö(W8concept, or a message.°dONLNd ˘`8l~*inactive controlL`°dONLNd
  11759. `âlê)QAá°dONLNd `êl©) contr≈Ä°dONLNd`©l)ol that has no meaning °dONLNd(l8xL(u8or efX°dONLNd-lLxå)fect in the currn@°dONLNd=låx)@ent context—for example, the °dONLNdZx8ÑD(Å8scrÚ@°dONLNd]xDÑ√) oll bars in an empty windowz °dONLNdxx√ÑÙ) . The Contr °dONLNdÉxıÑˇ)2ol °dONLNdÜÑ8ê∂(ç8Manager dims inactive contr*@°dONLNd°Ñ∑ê)ols or otherwise °dONLNd≤ê8ú€(ô8(visually indicates their inactive state.°dONLNd€¢8ÆÑ*inactive windowŸ°dONLNd΢éÆï)VA†°dONLNdÏ¢ñÆ) window in which the user °dONLNdÆ8∫z(∑8is not working.ˇ(¸@ˇ ˇˇˇˇ@
  11760. ˇ·ˇ‚7^
  11761. 4*I¯, Palatino&e.3+ú"GLOSSARb)9Y4⁄*˙¯
  11762. (‡*2384^*¿°dONLNd\*hfl(e*&interapplication communications (IAC) °dONLNd&h*t_* architectureZ‡°dONLNd3hjtq)@AïÄ°dONLNd4hqtî) standarG°dONLNd<hïtfl)$d and extensible °dONLNdMt*Ä◊(}*"mechanism for communicating among °dONLNdoÄ*åï* Macintosh applications. .°dONLNdàí*ûQ*    item list°dONLNdíí[ûc)1AÛ`°dONLNdìíbûh) r≈¿°dONLNdïíhû)esourò °dONLNdöíû∞) ce (of type ,
  11763. Courierò °dONLNd¶í∞û‘)1'DITL'ò °dONLNd¨í‘ûÒ)$) that .°dONLNd≥û*™F(ß*specifiÓ °dONLNd∫ûF™˜)(es the items—such as buttons and static °dONLNd‚™*∂˚(≥*1text—to display in an alert box or a dialog box. °dONLNdº*»e* item number•‡°dONLNd ºo»‘)EAn integer that identifi¸`°dONLNd8º‘»)e es an item °dONLNdC»*‘Ù(—*-in either a menu or dialog box. Menu items ar톰dONLNdp»Ù‘˚) e °dONLNdr‘*‡ı(›*.assigned item numbers starting with 1 for the °dONLNd†‡*Ï0* fiå¿°dONLNd¢‡0ÏÚ),rst menu item in the menu, 2 for the second °dONLNdŒÏ*¯(ı*,menu item in the menu, and so on, up to the °dONLNd˙¯*È* *number of the last menu item in the menu. °dONLNd$*m* Dialog items ar›°dONLNd3m⁄)Ce assigned numbers that °dONLNdK*;(*corr`°dONLNdO<ˇ)0espond to the item’s position in its item list. °dONLNd*(|(%*For example, the fi€¿°dONLNdí|()R!rst item listed in a dialog item °dONLNd≥(*4â(1*list is item number 1. °dONLNdÀ:*F[*
  11764. jump table2Ä°dONLNd÷:fF)<An ar °dONLNd€:F◊)ea of memory in an °dONLNdÓF*Re(O*application’s \¿°dONLNd¸FeR˘);!A5 world that contains one entry °dONLNdR*^á([*for every externally r^`°dONLNd3Rá^ó)]efer
  11765. Ä°dONLNd7Rò^∏)enced r@ °dONLNd>R∏^˝) outine in every °dONLNdN^*j(g*0code segment of the application. The jump table °dONLNd~j*v* 0is the means by which the loading and unloading °dONLNdÆv*Ç®* of segments is implemented.°dONLNd à*îà*keyboard equivalent3 °dONLNdfiàìîö)iAm¿°dONLNdflàöî¿) keyboaró¿°dONLNdÁà¿î)&d combination °dONLNdıî*†e(ù*of one or morPÄ°dONLNdîf†ä)<e modifiÙÄ°dONLNd
  11766. î䆈)$er keys and another key °dONLNd"†*¨|(©*that invokes a corr^¿°dONLNd5†|¨¯)Responding menu command °dONLNdL¨*∏O(µ*when präÄ°dONLNdS¨O∏ö)%essed by the userj†°dONLNdd¨ö∏ƒ)K . See also °dONLNdo∏*ƒ£(¡*Command-key equivalent.°dONLNdá *÷s*key-down event°dONLNdñ ~÷¸)TAn event indicating that the °dONLNd≥÷*‚I(fl*user pr«Ä°dONLNd∫÷I‚ø)essed a key on the keyboar&†°dONLNd‘÷¿‚»)wd.°dONLNd◊Ë*Ùe(Ò* key-up event5°dONLNd‰ËpÙ)F"An event indicating that the user °dONLNdÙ*-(˝*rE°dONLNdÙ.≠)eleased a key on the keyboar °dONLNd#Ù≠µ)d.°dONLNd&*î(*local coordinate system†°dONLNd>ü≈)uThe coor{†°dONLNdF≈)&dinate system °dONLNdT*:(*defir °dONLNdX;Ö)ned by the port r醰dONLNdiÖ˛)Jectangle of a graphics port. °dONLNdÜ**∞('*When the window manager crË¿°dONLNd†∞*ı)Üeates a window    `°dONLNdÆı*)E, it °dONLNd≥**6ª(3*#places the origin of the local coor’†°dONLNd÷*ª6)ëdinate system at °dONLNdÁ6*BU(?*    the upperw`°dONLNd6UBÁ)+"-left corner of the window’s port °dONLNdB*N-(K*rE°dONLNdB.N{)ectangle. Compar˚`°dONLNd#B{NÇ)Me E°dONLNd%BÉN˜)global coordinate system.°dONLNd?T*`_(]* localizationÕ†°dONLNdLTi`Ü)?The pr–Ä°dONLNdRTÜ`‚)ocess of adapting an °dONLNdg`*lç(i*application to a specifi‹‡°dONLNd`çl‹)cc language, cultur‰ °dONLNdë`‹l˘)Oe, and °dONLNdòl*x-(u*rE°dONLNdôl.xI)egion.°dONLNd†~*ä=(á*lockÔ°dONLNd•~GäO) T§¿°dONLNdß~Oäò)o temporarily pr~ °dONLNd∑~òäæ)I    event a rê`°dONLNd¿~æä)&elocatable block °dONLNd—ä*ñ1(ì*frò‡°dONLNd”ä1ñÌ)&om being moved during heap compaction.°dONLNd˙ú*®t(•*low-level events0†°dONLNd ú®“)UThe type of event re@°dONLNdú“®)S eturned by °dONLNd)®*¥è(±*the Event Manager to r †°dONLNd?®ê¥Î)feport very low level °dONLNdT¥*¿8(Ω*har`°dONLNdW¥9¿P)dwarN °dONLNd[¥P¿å)e and softwari†°dONLNdh¥å¿Ø)<e occurr»°dONLNdp¥Ø¿˙)#ences. Low-level 4^¿¯°dONLNdÅ\h<(eevents rO@°dONLNdâ\=h©)#eport actions by the userÄ°dONLNd¢\©hfl)l, changes in °dONLNdØhtp(qwindows on the scrÃÄ°dONLNd¡hptÿ)Veen, and that the Event °dONLNdŸtÄ´(} Manager has no other events to r≥‡°dONLNd˘t´ÄÎ)ëeport. ComparQ¿°dONLNdtÏÄÛ)Ae °dONLNdÄå·(â,high-level events, operating-system events. °dONLNd5íû¬*"low-memory system global variablesÉ@°dONLNdXíÃû⁄)≤SeeV@°dONLNd[í€û›) °dONLNd\û™á(ßsystem global variables.°dONLNdu∞ºü*Macintosh Operating System«`°dONLNdê∞©º‹)è The part of °dONLNdúº»ç(≈Macintosh system softwar3`°dONLNd¥ºé»Î)te that manages basic °dONLNd…»‘ü(—low-level operations such as fiE°dONLNdË»†‘Æ)Üle r<°dONLNdϻƑ‚) eading and °dONLNd˜‘‡„(›-writing, memory allocation and deallocation, °dONLNd    $‡Ï#* prG °dONLNd    &‡$Ïô)
  11767. ocess execution, and interrôÄ°dONLNd    A‡ôÏ’)uupt handling.°dONLNd    OÚ˛≈(˚"Macintosh script management system_`°dONLNd    rÚ–˛„)∂The °dONLNd    v˛
  11768. ](Script Manager§ °dONLNd    Ñ˛]
  11769. î)C, script-awar‡¿°dONLNd    ë˛î
  11770. Ï)7e parts of other text °dONLNd    ß
  11771. d(managers, the W  °dONLNd    ∂
  11772. d¯)J"orldScript extensions, and one or °dONLNd    ÿ",(moréÄ°dONLNd    €,"t)e script systems.°dONLNd    Ì(4ñ(1Macintosh system software‰`°dONLNd
  11773. (†4¢)Ü °dONLNd
  11774. (£4™)A@†°dONLNd
  11775.     (™4‰) collection of °dONLNd
  11776. 4@(=rE°dONLNd
  11777. 4@’)*outines that you can use to simplify your °dONLNd
  11778. C@LÛ(I0development of Macintosh applications. See also °dONLNd
  11779. sLXS* Macintosh Tfi†°dONLNd
  11780. ~LRXq)8oolbox˚†°dONLNd
  11781. ÑLqXÜ) and Ë¿°dONLNd
  11782. âLáXÍ)Macintosh Operating °dONLNd
  11783. ùXd=(aSystem.°dONLNd
  11784. •jvS* Macintosh Tfi†°dONLNd
  11785. ∞jRvq)8oolbox˚†°dONLNd
  11786. ∑j{vÔ))The part of the Macintosh °dONLNd
  11787. —vÇ\(system softwarM‡°dONLNd
  11788. flv]ÇË)Ce that allows you to implement °dONLNd
  11789. ˛ÇéK(ã the standar‡°dONLNd     ÇLéÊ)2#d Macintosh user interface in your °dONLNd ,éöN(ó application.°dONLNd 9†¨ñ*Macintosh User Interface TÑÄ°dONLNd S†ï¨¥){oolbox°Ä°dONLNd Z†æ¨—)) See °dONLNd _¨∏S(µ Macintosh Tfi†°dONLNd j¨R∏q)8oolbox˚†°dONLNd p¨q∏s).°dONLNd ræ U(« major switch¢ °dONLNd æ_ f)EA‹¿°dONLNd Äæf ≤) change of the for}†°dONLNd íæ≥ ¡)Megrõ`°dONLNd ïæ¡ ⁄)ound °dONLNd ö ÷#(”prG °dONLNd ú $÷])
  11790. ocess. The Prz‡°dONLNd © ]÷Ÿ)9ocess Manager switches the °dONLNd ƒ÷‚e(flcontext of the forc@°dONLNd ÷÷e‚s)KegrÅ°dONLNd Ÿ÷s‚ñ)ound pr1‡°dONLNd ‡÷ó‚◊)$ocess with the °dONLNd Ô‚Óm(Îcontext of a backgr“†°dONLNd ‚mÓê)Sound prÉÄ°dONLNd     ‚ëÓÎ)$ocess (including the °dONLNd Ó˙Ò(˜-A5 worlds and low-memory globals) and brings °dONLNd K˙H*
  11791. the backgr∏Ä°dONLNd U˙Hk).ound pri`°dONLNd \˙l®)$ocess to the fr¿‡°dONLNd k˙®Ò)<ont, sending the °dONLNd |#(prG °dONLNd ~$P)
  11792.  
  11793. evious forg`°dONLNd àP^),egrÖ °dONLNd ã^Å)ound pr6°dONLNd íÇ’)$ocess to the backgrO¿°dONLNd •’Ò)Sound. °dONLNd ´?(    See also ̇°dONLNd ¥?£)%context, minor switch.°dONLNd À$0A(-managerÚ °dONLNd ”$K0R)1A,¿°dONLNd ‘$S0ÿ) part of the Macintosh system °dONLNd Ú0<;(9softwar‰¿°dONLNd ˘0;<B)!e.°dONLNd ¸BN\(Kmaster pointer›`°dONLNd BfNm)LA°dONLNd BnN©) pointer to a rƒ‡°dONLNdB©NÙ);elocatable block, °dONLNd-NZ“(W%maintained by the Memory Manager and °dONLNdRZfÿ* (updated whenever the block is moved, pur«@°dONLNdzZÿfÌ)æged, °dONLNdfr)(oor r- °dONLNdÉf*r[) eallocated. v†°dONLNdèf[r¶)1All handles to a r9°dONLNd°fßrÔ)Lelocatable block °dONLNd≤r~({rE°dONLNd≥r~â)efer to it by double indirÌ°dONLNdÕrâ~≥)k
  11794. ection thrÒ@°dONLNd◊r≥~‹)*    ough the °dONLNd‡~äZ(ámaster pointerÇ@°dONLNdÓ~Zä\)@.ˇ'Ù@ˇ ˇˇˇˇ@
  11795. ˇ·ˇ‚7^
  11796. 4HF, Palatino&e.3+∫"GLOSSARb)9Y4⁄∫˙
  11797. (‡2394^H¿&°dONLNd\Hh¶(eHmaster pointer blockË °dONLNd\∞h∑)hA"¿°dONLNd\∏hœ) nonr°dONLNd\œh#)elocatable block of °dONLNd/hHtı(qH&memory that contains master pointers. MÄ°dONLNdUhıt¸)≠Aà °dONLNdVh¸t) master °dONLNd^tHÄ(}H0pointer block in your application heap contains °dONLNdéÄHå"* 264 master pointers, and a master pointer block in °dONLNd¿åHò* ,the system heap contains 32 master pointers.°dONLNdÌûH™â* memory blockS‡°dONLNd˙ûî™≠)LAn ar1Ä°dONLNdˇû≠™ )ea of contiguous memory °dONLNd™H∂á(≥Hwithin a heap.°dONLNd&ºH»ô*Memory Managert°dONLNd5º§»)\The part of the Operating °dONLNdO»H‘˜(—H'System that dynamically allocates and r¸`°dONLNdv»˜‘)Øeleases °dONLNd~‘H‡æ(›Hmemory space in the heap.°dONLNdòÊHÚb*menuõ °dONLNdùÊlÚs)$A’¿°dONLNdûÊsÚ)' user interface element you can use in °dONLNd≈ÚH˛(˚H.your application to allow the user to view or °dONLNdÛ˛H
  11798. ì* choose an item fr‡°dONLNd˛ì
  11799. ¸)Kom a list of choices and °dONLNd
  11800. H‰(H!commands that your application pr
  11801. `°dONLNd>
  11802. Â)ù ovides. See °dONLNdJH"\(Halso ö‡°dONLNdO\")#hierarchical menu, pull-down menu, °dONLNdr"H.à(+H pop-up menu,Ì °dONLNd~"à.ù)@ and ⁄@°dONLNdÉ"û.À)submenu.°dONLNdå4H@s(=Hmenu barÄ°dONLNdï4~@Ö)6AU °dONLNdñ4Ö@ß) white r6‡°dONLNdû4ß@ )"ectangle that is tall enough °dONLNdª@HL!(IH3to display menu titles in the height of the system °dONLNdÓLHX#* 2font and system font size, and with a black lower °dONLNd XHdV* borB °dONLNd#XWd))der that is one pixel tall. The menu bar °dONLNdLdHpz(mH extends acr]†°dONLNdWdzpˆ)2oss the top of the startup scrª °dONLNdudˆp)|een and °dONLNd}pH|(yH/contains the title of each available pull-down °dONLNd¨|Hàc* menu.°dONLNd≤éHöá* menu bar defi“°dONLNdøéáöÃ)?nition functionÚ@°dONLNdœé÷ö›)OA,‡°dONLNd–éfiö) function that °dONLNdflöH¶(£H,draws the menu bar and performs most of the °dONLNd ¶H≤ù* drawing activities rN@°dONLNd¶û≤%)Velated to the display of menus °dONLNd>≤Hæ"(ªH.when the user moves the cursor between menus. °dONLNdlæH  * ,This function, in conjunction with the menu °dONLNdò H÷X* defir °dONLNdú Y÷)    nition pr‰†°dONLNd• ÷ù)&ocedur{‡°dONLNd´ û÷∏)e, defi7†°dONLNd≤ π÷˛)nes the general °dONLNd¬÷H‚Â(flH!appearance and behavior of menus.°dONLNd‰ËHÙú*menu bar resourceÌ °dONLNdˆ˶Ù≠)^A'¿°dONLNd˜ËÆÙ¥) rl¿°dONLNd˘Ë¥ÙÃ)esourµ°dONLNd˛ËÃÙ¸) ce (of type ,
  11803. Courier.°dONLNd
  11804. ÙHl(˝H'MBAR'°dONLNdÙl§)$) that specifPÄ°dONLNdÙ§Œ)8
  11805. ies the or"‡°dONLNd'ÙŒˆ)*    der and rı@°dONLNd0Ùı )'esour«†°dONLNd5Ù %)ce ID .°dONLNd;H ¬(    Hof each menu in a menu bar∑Ä°dONLNdU¬ ƒ)z.°dONLNdWHu(Hmenu defiR†°dONLNd`v¬).nition procedureÆ¿°dONLNdqÔ)VAÈ`°dONLNdr”fl) pr0Ä°dONLNdu‡˛)ocedur«¿°dONLNd{˛)e that °dONLNdÇH*!('H0performs all the drawing of menu items within a °dONLNd≤*H6d* specifiÓ °dONLNdπ*d6®)c menu. This pr≥ °dONLNd»*©6«)EocedurJ`°dONLNdŒ*»6)e, in conjunction °dONLNd‡6HB≠(?Hwith the menu bar defiì°dONLNdˆ6≠B)enition function, defi>¿°dONLNd 6B)Xnes °dONLNdBHN(KH-the general appearance and behavior of menus.°dONLNd=TH`p*menu IDR†°dONLNdET{`Ç)3Aç@°dONLNdFTÇ`)" number that you assign to a menu °dONLNdh`Hl˜(iH'in your application. Each menu in your °dONLNdèlHxˇ* 'application must have a unique menu ID.°dONLNd∑~Häy*    menu item¶Ä°dONLNd¡~Éä¿);In a menu, a rëÄ°dONLNdœ~¿ä$)=ectangle with text and °dONLNdÊäHñ (ìH1other characteristics identifying a command that °dONLNdñH¢†* the user can choose.4^8¿°dONLNd,\8hc(e8    menu listá°dONLNd6\mht)5A¡†°dONLNd7\thó)     data str}¿°dONLNd@\òhØ)$uctur†°dONLNdE\∞hÚ)e that contains °dONLNdUh8tò(q8handles to the menu r˝‡°dONLNdjhòt™)`ecorr@°dONLNdnh´tÛ)ds of one or morÄ°dONLNd~hÙt˚)Ie °dONLNdÄt8ĸ(}8+menus (although a menu list can be empty). °dONLNd´Ä8å\* Compar߆°dONLNd±Ä\åc)$e Ò@°dONLNd≥Äcå≥)current menu list.°dONLNdΔí8û~(õ8 Menu ManagerΔ°dONLNd”íàû◊)PThe collection of rÚ °dONLNdÊí◊û)Ooutines that °dONLNdÛû8™∞(ß8an application can use to crƒ¿°dONLNdû∞™Á)xeate, display9`°dONLNdûÁ™ˇ)7, and °dONLNd"™8∂ä(≥8manage its menus.°dONLNd4º8»q* menu record˝Ä°dONLNd@º{»Ç)CA8 °dONLNdAºÉ»¶)     data strÙ@°dONLNdJº¶»Ω)#ucturz °dONLNdOºæ»Ê)
  11806. e of type .°dONLNdY»8‘h(—8MenuInfo°dONLNda»h‘ˆ)0 that the Menu Manager uses to .°dONLNdÄ‘8‡ÿ(›8"maintain information about a menu..°dONLNd£Ê8Úu*menu resource°dONLNd±ÊÚá)GAÛ`°dONLNd≤ÊÜÚå) r≈¿°dONLNd¥ÊåÚ£)esourò °dONLNdπÊ£Ú‘) ce (of type ò °dONLNd≈Ê‘Ú¯)1'MENU'ò °dONLNdÀÊ¯Ú˛)$) .°dONLNdÕÚ8˛h(˚8 that specifiƒ@°dONLNdŸÚh˛)0%es the menu title and the individual °dONLNd˛˛8
  11807. Õ(8#characteristics of items in a menu.°dONLNd    "8f*
  11808. menu titlej†°dONLNd    -qï)9The wor7‡°dONLNd    4ñ)%d or icon in the menu bar or °dONLNd    Q8(    (%8.in a window that shows the location of a menu.°dONLNd    Ä.8:§*minimum partition size»°dONLNd    ó.Æ:)vThe actual partition °dONLNd    ¨:8F(C8.size limit below which an application cannot rH¿°dONLNd    ⁄:F)Ãun.°dONLNd    fiL8Xt(U8 minor switchΩ‡°dONLNd    ÎL~XÖ)FA¯Ä°dONLNd    ÏLÖX˙) change in the context of a °dONLNd
  11809. X8dA(a8prG °dONLNd
  11810.  
  11811. XBd{)
  11812. ocess. The Prz‡°dONLNd
  11813. X{d˜)9ocess Manager switches the °dONLNd
  11814. 2d8pw(m8context of a pr憰dONLNd
  11815. Adwp¯)?ocess to give time to a backgr‚†°dONLNd
  11816. _d¯p)Åound °dONLNd
  11817. dp8|A(y8prG °dONLNd
  11818. fpB|ÿ)
  11819. !ocess without bringing the backgrG °dONLNd
  11820. ápÿ|˚)ñound pr¯°dONLNd
  11821. ép˚|)#ocess °dONLNd
  11822. î|8àZ(Ö8    to the fr. °dONLNd
  11823. ù|[àì)#ont. See also %@°dONLNd
  11824. ´|îà˜)9context, major switch.°dONLNd
  11825. ¬é8öá(ó8modal dialog boxÔ°dONLNd
  11826. ”éëöò)YA)†°dONLNd
  11827. ‘éôö) dialog box that puts the °dONLNd
  11828. Óö8¶(£82user in the state or “mode” of being able to work °dONLNd  ¶8≤Ø* only inside the dialog box. ò¿°dONLNd <¶Ø≤∂)wA”`°dONLNd =¶∂≤) modal dialog box °dONLNd O≤8æ;(ª8rE°dONLNd P≤<æ ).esembles an alert box. The user cannot move a °dONLNd ~æ8 ˝(«8,modal dialog box and can dismiss it only by °dONLNd ™ 8÷µ* clicking its buttons. See also v@°dONLNd … ∂÷)~modeless dialog box≈¿°dONLNd ‹ ÷)] °dONLNd ›÷8‚K(fl8and Ì °dONLNd ·÷K‚Δ)movable modal dialog box.°dONLNd ˚Ë8Ù|(Ò8modal dialog fi_‡°dONLNd
  11829. Ë}Ùµ)Elter functionI@°dONLNd Ë¿Ù–)CAn °dONLNd Ù8}(˝8application-defi|‡°dONLNd +Ù~“)Fned function that fi$¿°dONLNd ?Ù”)Ulters events °dONLNd L8 `(    8    passed frz`°dONLNd U` Í)(om the Event Manager to your °dONLNd r 8(82application when one of its modal dialog boxes is °dONLNd §8$Å* being displayed.°dONLNd µ*86ï*modeless dialog boxœÄ°dONLNd …*ü6¶)gA
  11830.  °dONLNd  *ß6) dialog box that looks °dONLNd ·68B(?8-like a document window without a size box or °dONLNdB8ND* scrÚ@°dONLNdBDN) .oll bars. The user can move a modeless dialog °dONLNd?N8Z(W82box, make it inactive and active again, and close °dONLNdqZ8f∫* it like any document window¸¿°dONLNdåZπf„)Å . See also j†°dONLNdóZ‰f)+modal °dONLNdùf8rh(o8
  11831. dialog box冰dONLNdßfhr})0 and y¿°dONLNd¨f~r˘)movable modal dialog box.°dONLNdΔx8ÑU(Å8modifi~ °dONLNdÃxVÑv)er keys¸‡°dONLNd‘xÄÑ)*The Shift, Option, Command, °dONLNdÑ8êQ(ç8ContrÂ@°dONLNdıÑQêπ)ol, and Caps Lock keys.°dONLNdñ8¢é(ü8mouse-down eventk‡°dONLNdñô¢)aAn event indicating that °dONLNd7¢8Æg(´8 the user pr$‡°dONLNdB¢hÆ“)0essed the mouse button.ˇ&v@ˇ ˇˇˇˇ@
  11832. ˇ·ˇ‚7^
  11833. 4*I¯, Palatino&e.3+ú"GLOSSARb)9Y4⁄*˙¯
  11834. (‡*2404^*¿°dONLNd\*ho(e*mouse location§†°dONLNd\yh)O"The location of the cursor at the °dONLNd1h*tÑ(q*time an event occurr˚¿°dONLNdEhÑtë)Zed.°dONLNdIz*ÜÖ(É*mouse-moved evento°dONLNd[zêÜ˝)fAn event indicating that °dONLNdtÜ*íµ(è*!the cursor is outside of a specifiì °dONLNdñܵíΔ)ãed rΩÄ°dONLNdöÜΔí·)egion.°dONLNd°ò*§s(°*mouse-up eventà‡°dONLNd∞ò}§˚)SAn event indicating that the °dONLNdÕ§*∞C(≠*user r≈`°dONLNd”§C∞∂)eleased the mouse button.°dONLNdÌ∂*¬£(ø*movable modal dialog box‡Ä°dONLNd∂≠¬¥)ÉA °dONLNd∂µ¬) modal dialog box °dONLNd¬*Œ˝(À*2that has a title bar (with no close box) by which °dONLNdKŒ*⁄‚* +the user can drag the dialog box. See also ü°dONLNdvŒ‚⁄)∏dialog ˇˇ≈.°dONLNd}⁄*Êê(„*box, modal dialog box,ij°dONLNdì⁄ëʶ)g and ‡Ê°dONLNdò⁄¶Ê)modeless dialog box. °dONLNdÆÏ*¯¢(ı*multitasking environment∫ °dONLNd«Ï¨¯”)ÇAn envir¡`°dONLNdœÏ”¯)'
  11835. onment in °dONLNdŸ¯*(*0which several independent applications or other °dONLNd    *3* prG °dONLNd 4◊)
  11836. &ocesses can be open at once. See also °dONLNd1*€(*%cooperative multitasking environment.°dONLNdW"*.â*nonrelocatable blockK¿°dONLNdl"î.õ)jAÜ`°dONLNdm"õ.¸) block whose location °dONLNdÉ.*:m(7*in the heap is fiÊ`°dONLNdî.m:˜)Cxed. This block can’t be moved °dONLNd≥:*FÊ(C*'during heap compaction or other memory °dONLNd⁄F*R[* operations.°dONLNdÊX*dX*
  11837. null eventfi°dONLNdÒXbd¸)8#An event indicating that no events °dONLNdd*pI(m*of the rο°dONLNddIp˚)*equested types exist in the application’s °dONLNdFp*|P(y*    event str놰dONLNdOpP|e)&eam.°dONLNdTÇ*év(ã*open applicationh¿°dONLNdeÇÅé)WAn application that is loaded °dONLNdÉé*öc(ó* into memoryæ¿°dONLNdééböd)8.°dONLNdê†*¨|(©*Operating System¯Ä°dONLNd°†Ü¨ó)\See KÄ°dONLNd•†ò¨˚)Macintosh Operating °dONLNdπ¨*∏M(µ*System.°dONLNd¡æ* î*operating-system event⁄‡°dONLNdÿæû Ã)t
  11838. An event rÖ¿°dONLNd‚æÕ ˇ)/ eturned by °dONLNdÌ *÷(”*-the Event Manager to communicate information °dONLNd÷*‚‹* )about changes in the operating status of °dONLNdC‚*Ó§* applications (suspend and r3‡°dONLNd^‚•Ó){esume events) and to °dONLNdsÓ*˙-(˜*rE°dONLNdtÓ.˙)0eport that the user has moved the mouse outside °dONLNd§˙*K(*of an arfl¿°dONLNd¨˙Ks)!    ea specifióÄ°dONLNd∂˙t”))ed by the application °dONLNdÃ*∏(*(mouse-moved events). ComparŸ‡°dONLNdË∏ø)ée #Ä°dONLNdÍ¿Ì)
  11839. low-level °dONLNdÙ*ù(*events, high-level events.°dONLNd$*0ƒ*Operating System Event Manager°Ä°dONLNd.$Œ0·)§The °dONLNd20*<ë(9*collection of low-level r`°dONLNdK0í<˛)houtines that manage the °dONLNdc<*H¥(E*Operating System event queue.°dONLNdÅN*Z∂*Operating System event queueJÄ°dONLNdûN¡Z»)óAÖ °dONLNdüN»Z¸)  queue that °dONLNd´Z*f€(c*%the Operating System Event Manager crU`°dONLNd–Z€f)±
  11840. eates and °dONLNd⁄f*r(o*.maintains. The Operating System Event Manager °dONLNdr*~b* detects and r °dONLNdrc~ª)9eports low-level haro¿°dONLNd)rª~“)XdwarßÄ°dONLNd-r“~fi)e-rä°dONLNd0rfi~˚) elated °dONLNd7~*ä¬(á*"events such as mouse clicks, keyprP†°dONLNdY~√ä)ôesses, and disk °dONLNdiä*ñ›(ì**insertions and places these events in the °dONLNdìñ*¢¥* Operating System event queue.4^¿¯°dONLNd±\h?(epackage∂‡°dONLNdπ\IhP)/AÒÄ°dONLNd∫\PhÕ) collection of system softwarj¿°dONLNd◊\Œh’)~e °dONLNdŸht(qrE°dONLNd⁄htl)outines that’s storÿ†°dONLNdÌhltê)N    ed as a r@°dONLNdˆhët©)%esourà@°dONLNd˚h©t—)    ce and br˚‡°dONLNdh—tÌ)(ought °dONLNd
  11841. tÄ“(}'into memory only when needed. See also °dONLNd1ÄåA* managereÄ°dONLNd8ÄAåC)'.°dONLNd:íûC(õ    part coden`°dONLNdDíNûÁ)4"An integer between 1 and 253 that °dONLNdfû™º(ß'stands for a particular part of a contrñ`°dONLNdçûº™‹)¢ol. The ,
  11842. Courier.°dONLNdï™∂\(≥ FindControl°dONLNd†™\∂q)B and °dONLNd•™q∂π) TrackControl°dONLNd±™π∂Â)H  functions .°dONLNdº∂¬(ørE°dONLNdΩ∂¬Ó)2eturn a part code to indicate the location of the °dONLNdÔ¬ŒÉ(Àcursor when the user pr˜`°dONLNd¬ÉŒÎ)iesses the mouse button.°dONLNd‘‡A(›    partitiony¿°dONLNd(‘L‡S)2A¥`°dONLNd)‘S‡÷) contiguous block of memory °dONLNdE‡Ï(ÈrE°dONLNdF‡ÏÌ).eserved for use by the Operating System or by °dONLNdtϯÉ(ıan application. See also ˆ °dONLNdçÏɯ·)iapplication partition°dONLNd¢Ï‚¯˜)_ and °dONLNd߯f(system partition.°dONLNdπ
  11843. 2*patch{†°dONLNdø
  11844. =C)#T±`°dONLNd¿
  11845. BM)o rk‡°dONLNd√
  11846. N·)  eplace a piece of ROM code with °dONLNd„"Î(-other RAM-based code (by storing a new entry °dONLNd    ".ô* into the trap dispatch table). >‡°dONLNd    /"ô.Ω)    Also, a rÊ°dONLNd    8"Ω.’)$esour.@°dONLNd    ="÷.ı)ce that °dONLNd    E.:~(7contains the new code.°dONLNd    \@L0*pixelCÄ°dONLNd    b@;L„)!%The smallest dot you can draw on the °dONLNd    áLX&(UscrÚ@°dONLNd    äL&X7) een.°dONLNd    è^j2(gpointÓ`°dONLNd    ï^<j)"+The intersection of a horizontal grid line °dONLNd    ¿jvØ(s$and a vertical grid line in the coor|°dONLNd    ‰jØvÍ)ïdinate plane. .°dONLNd    ÚvÇ.(Defi°dONLNd    ˆv.Ç_) ned by the °dONLNd
  11847. v_Ç})1Point°dONLNd
  11848. v}ÇØ)  data type..°dONLNd
  11849. àî;(ëpointer“°dONLNd
  11850. àEîL)+A †°dONLNd
  11851. àMîÃ) variable containing the addrùÄ°dONLNd
  11852. 8àÃîÓ)    ess of a °dONLNd
  11853. Aî†`(ùbyte in memory©†°dONLNd
  11854. Oî_†â)E . See also Ä°dONLNd
  11855. Zî䆨)+handle.°dONLNd
  11856. b¶≤W(Ø pop-up menum °dONLNd
  11857. n¶b≤i)HAß¿°dONLNd
  11858. o¶i≤Ë) menu that appears elsewher· °dONLNd
  11859. ä¶Ë≤Ô)e °dONLNd
  11860. å≤æk(ªthan the menu barıÄ°dONLNd
  11861. ù≤jæõ)P . The ContrñÄ°dONLNd
  11862. ®≤úæ–)2 ol Manager °dONLNd
  11863. ≥æ #(«prG °dONLNd
  11864. µæ$ b)
  11865. ovides a contr, °dONLNd
  11866. √æb })>ol defi¸ °dONLNd
  11867.  æ} –)nition function for °dONLNd
  11868. fi ÷Ó(”-applications to use when implementing pop-up °dONLNd ÷‚:* menus.°dONLNd ËÙ6*PPC Tˇ`°dONLNd Ë5ÙT)oolbox`°dONLNd Ë_Ùp)*See o`°dONLNd "ËpÙœ)Program-to-Program °dONLNd 5Ùé(˝Communications (PPC) Tt °dONLNd KÙçÆ)soolbox.°dONLNd SW(preferences fifi†°dONLNd aW_)=le2Ä°dONLNd djq)Am °dONLNd eqy) fi˘‡°dONLNd hyÊ)le, usually located in the °dONLNd É#(PrN†°dONLNd Ö$4)
  11869. efer˙¿°dONLNd â4i) ences folderY°dONLNd ïiÖ)5, that rÙ °dONLNd ùÖó)ecorhÄ°dONLNd °òø)    ds a user°dONLNd ™¿…)(’s °dONLNd ≠*/('confiC‡°dONLNd ≤0*Õ)%guration settings for an application.°dONLNd ÿ0<m(9Preferences folderà‡°dONLNd Î0w<~)]A√Ä°dONLNd Ï0~<ç) dir †°dONLNd 0é<Í)ectory located in the °dONLNd <Hñ(ESystem Folder for holding fiçÄ°dONLNd "<ñHº)|
  11870. les that ró†°dONLNd ,<ºHŒ)&ecor °dONLNd 0<œHÙ)    d users’ °dONLNd 9HT/(QconfiC‡°dONLNd >H0T⁄)(guration settings for applications on a °dONLNd fT`£(]particular Macintosh computer[†°dONLNd ÉT£`•)â.°dONLNd ÖfrÉ(opreferred partition size‡°dONLNd ûférË)tThe partition size at °dONLNd ¥r~è({which an application can rz‡°dONLNd Œrè~Ω)u
  11871. un most ef  °dONLNd ÿræ~„)/    fectivelyê@°dONLNd ·r‚~Á)$. °dONLNd „~äÀ(á&The Operating System attempts to securk‡°dONLNd    ~ÀäÂ)±e this °dONLNdäñ‡(ì.partition size upon launch of the application.ˇ."@ˇ ˇˇˇˇ@
  11872. ˇ·ˇ‚7^
  11873. 4HF, Palatino&e.3+∫"GLOSSARb)9Y4⁄∫˙
  11874. (‡2414^H¿&°dONLNd\Hhi(eHprocess_@°dONLNd\th‹),An open application, orl °dONLNd\‹h!)h, in some cases, °dONLNd0hHtØ(qHan open desk accessoryï °dONLNdFhÆt)f. (Only desk accessories °dONLNd_tHÄd(}Hthat ar °dONLNdfteÄ)'e not opened in the context of another °dONLNdçÄHåÖ(âHapplication ar{‡°dONLNdõÄÖå±)=
  11875. e considerL`°dONLNd•Ä≤å…)-ed prx‡°dONLNd™Ä…åÔ)    ocesses.)°dONLNd¥íHûî(õHProcess Managerm¿°dONLNdƒíüû)WThe part of the Macintosh °dONLNdfiûH™∑(ßHOperating System that pr.†°dONLNdˆû∏™)povides a cooperative °dONLNd ™H∂ô(≥Hmultitasking envir4@°dONLNd™ö∂‚)Ronment by contr¿°dONLNd,™„∂)Iolling access °dONLNd:∂H¬f(øHto sharã@°dONLNdA∂f¬w)ed rµ†°dONLNdE∂w¬è)esour˝‡°dONLNdJ∂è¬Ò)ces and managing the °dONLNd_¬HŒ(ÀH*scheduling, execution, and termination of °dONLNdâŒH⁄Ä* applications.°dONLNdó‡HÏ´*process serial numberu`°dONLNd≠‡∂ÏΩ)nA∞°dONLNdƇΩÏ) number assigned by °dONLNd¬ÏH¯b(ıHthe Pr¨°dONLNd»Ïb¯ )'ocess Manager to identify a particular °dONLNdÔ¯H"(H3instance of an application during a single boot of °dONLNd"Hó* the local machine.°dONLNd5H"*(Program-to-Program Communications (PPC) °dONLNd]"H.N* T¿°dONLNd^"N.m)oolbox,¿°dONLNde"w. ))!The part of the Macintosh system °dONLNdÜ.H:i(7Hsoftwar‰¿°dONLNdç.i:)!'e that allows applications to exchange °dONLNd¥:HF‡(CH#blocks of data with each other by r…°dONLNd◊:‡F)ò eading and °dONLNd‚FHR›(OH!writing low-level message blocks.°dONLNdXHdî*pull-down menuh¿°dONLNdXüd¶)WA£`°dONLNdX¶d) menu that is identifik†°dONLNd*Xd$)\ed by a °dONLNd2dHpî(mHmenu title (a worz†°dONLNdCdîp)Ld or an icon) in the menu bar`°dONLNd`dp)Ä. °dONLNdcvHÇb(Hpurge*@°dONLNdivmÇs)%T`°dONLNdjvrÇ})o rÄ°dONLNdmv~Ç©)     emove a rbÄ°dONLNdvv©Ǣ)+elocatable block frt°dONLNdâv˘Ç)Pom the °dONLNdêÇHé (ãH3heap, leaving its master pointer allocated but set .°dONLNd√éHöS* to ,
  11876. Courier°dONLNdΔéSöe) NIL°dONLNd…éeöh)..°dONLNdÀ†H¨í(©Hpurgeable block§†°dONLNd€†ú¨£)TAfl@°dONLNd‹†£¨©) r$@°dONLNdfi†™¨%)elocatable block that can be °dONLNd˚¨H∏W(µHpurN@°dONLNd˛¨X∏r)ged fr[†°dONLNd¨r∏´) om the heap.°dONLNdæH }(«H    QuickDrawZ‡°dONLNdæà )@The part of the Macintosh T¿°dONLNd6æ ")zoolbox °dONLNd= H÷ (”H-that performs all graphics operations on the °dONLNdj÷H‚Ö* Macintosh scr◊¿°dONLNdw÷Ö‚ô)=een. °dONLNd}ËHÙ…(ÒHQuickDraw global variables„ °dONLNdòË”Ù⁄)ãA¿°dONLNdôË€Ù") set of variables °dONLNd´ÙHX(˝Hstor9‡°dONLNdØÙYΩ)ed in the application’s  °dONLNd«ÙΩ )dA5 world that contain °dONLNd›H ÿ(    Hinformation used by QuickDraw‚@°dONLNd˙◊ Ÿ)è.°dONLNd¸Hj(HQuickTÓ`°dONLNdj{)"ime%‡°dONLNdÜç)A`Ä°dONLNdç")" collection of managers and other °dONLNd)H*ä('Hsystem softwarM‡°dONLNd7ã*)Ce components that allow your °dONLNdT*H6û(3Happlication to contr≠@°dONLNdh*û6Ú)Vol time-based data.°dONLNd|<HHÄ(EH radio buttonlÄ°dONLNdâ<ãHí)CAß °dONLNdä<íH´) contr†°dONLNdê<´H    )ol that appears on scrP@°dONLNd¶<
  11877. H)_een °dONLNd™HHTÄ(QHas a small cir<`°dONLNd∏HÅTí)9cle. @°dONLNdΩHíTô)A:‡°dONLNdæHôT) radio button displays one of °dONLNd‹TH`(]H2two settings: on (indicated by a black dot inside °dONLNd`Hlc* the cir˚°dONLNd`clâ)
  11878. cle) or ofu°dONLNd`älí)'f. jÄ°dONLNd"`ílô)A• °dONLNd#`ôl) radio button is always a part °dONLNdBlHxd(uHof a grùÄ°dONLNdIldxá)oup of r™†°dONLNdQláx!)##elated radio buttons in which only °dONLNdtxHÑ(ÅH.one button can be on at a time. When the user °dONLNd¢ÑHê!* 1clicks an unmarked radio button, the application °dONLNd”êHú* 1turns that button on and turns the other buttons °dONLNdúH®i*     in its grı†°dONLNdúi®Ö)!oup ofê °dONLNdúÜ®ã)f.°dONLNdÆH∫`(∑HRAM`°dONLNdÆk∫|)#See “`°dONLNdÆ|∫Ê)random-access memory”@°dONLNd2ÆÊ∫Ë)j.4^8¿°dONLNd4\8hg(e8RAM disk˚°dONLNd=\qhx)9A5†°dONLNd>\yhˇ) portion of the available RAM °dONLNd\h8t;(q8rE°dONLNd]h<t
  11879. )/eserved for use as a temporary storage device. v°dONLNdåh
  11880. t)ŒA∞†°dONLNdçht) °dONLNdét8Äu(}8user can confiÖ‡°dONLNdútuÄÑ)=gur· °dONLNdütÑĢ)e a RAM disk or disable it °dONLNd∫Ä8åô(â8altogether using contrîÄ°dONLNd–Äôå)aols in the Memory contrè °dONLNdÁÄå)jol °dONLNdÍå8òS(ï8panel.°dONLNdÒû8™≈*random-access memory (RAM)ì°dONLNd ûœ™˜)óMemory °dONLNd™8∂(≥8,whose contents can be changed. The RAM in a °dONLNd?∂8¬* /Macintosh computer contains exception vectors, °dONLNdn¬8ŒF* buf5°dONLNdq¬GŒç)fers used by harÿ¿°dONLNdŬ猧)FdwarÄ°dONLNdÖ¬•Œ)e devices, the system °dONLNdõŒ8⁄˜(◊8,and application heaps, the stack, and other °dONLNd«⁄8ÊÃ* !information used by applications.°dONLNdÈÏ8¯Æ*read-only memory (ROM)^°dONLNd    Ïπ¯)ÅMemory whose °dONLNd    ¯8h(8 contents arÿ‡°dONLNd    ¯h‰)0e permanent. The ROM in a °dONLNd    28¡(8Macintosh computer contains r‹`°dONLNd    O¡)âoutines for the °dONLNd    _8>(8Tµ¿°dONLNd    `=˘))oolbox and the Operating System, and the °dONLNd    â8(ñ(%8various system traps.°dONLNd    ü.8:c*
  11881. reallocate^†°dONLNd    ™.n:t)6Tî`°dONLNd    ´.s:)%o allocate new space in the heap for °dONLNd    –:8FO(C8a purŒ@°dONLNd    ’:OF)+ged block and to update the block’s master °dONLNd
  11882. F8R”(O8%pointer to point to its new location.°dONLNd
  11883. &X8da*    rectangle&Ä°dONLNd
  11884. 0Xldà)4The ar'@°dONLNd
  11885. 6Xàd)ea picked by intersecting the °dONLNd
  11886. Td8p‚(m8(grid lines of any two points in the coorOÄ°dONLNd
  11887. |d„p)´dinate °dONLNd
  11888. Ép8|S(y8plane.°dONLNd
  11889. äÇ8éW*release'¿°dONLNd
  11890. íÇbév)*(1) TÖ@°dONLNd
  11891. óÇuéÑ)o fr솰dONLNd
  11892. õÇÑé–)ee an allocated arÄ°dONLNd
  11893. ≠Ç—é)M ea of memory˚†°dONLNd
  11894. πÇ é);, °dONLNd
  11895. ªé8ö¢(ó8making it available for rà`°dONLNd
  11896. ‘é¢öœ)j euse. (2) TΩ@°dONLNd
  11897. fléŒö¯),
  11898. o allow a °dONLNd
  11899. Èö8¶A(£8prG °dONLNd
  11900. ÎöB¶)
  11901. .eviously held range of pages to be movable in °dONLNd ¶8≤Ñ(Ø8physical memory-¿°dONLNd (¶Ñ≤Ü)L.°dONLNd *∏8ƒÜ(¡8relocatable blockÖ °dONLNd <∏êƒó)XAø¿°dONLNd =∏óƒ) block that can be moved °dONLNd Vƒ8–◊(Õ8"within the heap during compaction.°dONLNd y÷8‚^*resource“†°dONLNd Ç÷h‚§)0Any data stor`°dONLNd è÷•‚…)=ed accorí¿°dONLNd ó÷…‚Ú)$
  11902. ding to a °dONLNd °‚8ÓH(Î8defir °dONLNd •‚IÓg)ned str‡°dONLNd ¨‚hÓ)ucturå¿°dONLNd ±‚Óú)e in a rU °dONLNd π‚ùÓµ)esourù`°dONLNd 悵ÓÓ)ce fork of a fi¯Ä°dONLNd Õ‚ÓÓ )9le; the °dONLNd ’Ó8˙d(˜8 data in a r‹‡°dONLNd ‡Ód˙|),esour% °dONLNd ÂÓ}˙±)ce is interpr‡°dONLNd ÚÓ±˙›)4
  11903. eted accorê@°dONLNd ¸Ó›˙ ), ding to its °dONLNd ˙8;(8rE°dONLNd     ˙<T)esourç@°dONLNd ˙Tu)ce type.°dONLNd  8f(8
  11904. resource fin`°dONLNd " go)/le¬@°dONLNd % yê)The r√°dONLNd * ê®)esour @°dONLNd / ©‚)ce fork of a fif`°dONLNd > ‚Ï)9le.°dONLNd B8*t('8resource forkƒ¿°dONLNd P~*æ)FThe part of a fiç¿°dONLNd `ø*)Ale that contains the °dONLNd u*86>(38fiå¿°dONLNd w*>6S)les’ rà°dONLNd }*S6k)esour–@°dONLNd Ç*k6})ces. Ë¿°dONLNd á*}6Ñ)A#`°dONLNd à*Ö6ã) rh`°dONLNd ä*ã6£)esour∞†°dONLNd è*£6˚)ce fork consists of a °dONLNd •68B;(?8rE°dONLNd ¶6<BT)esourç@°dONLNd ´6TBç) ce map and rœ`°dONLNd ∑6çB•)9esour†°dONLNd º6¶Bµ)ces.°dONLNd ¡H8Tm(Q8 resource IDä °dONLNd ÕHwT~)?Aƒ¿°dONLNd ŒH~TŸ) number that identifia‡°dONLNd „H⁄T    )\ es a specifi÷†°dONLNd ÔH    T)/c °dONLNd ÒT8`;(]8rE°dONLNd ÚT<`T)esourç@°dONLNd ˜TT`ë)ce of a given r@°dONLNdTí`™)>esourVÄ°dONLNd T™`À)ce type.°dONLNdf8rt(o8 resource mapR°dONLNd!frñ)GIn a rF‡°dONLNd'fñrÆ)esourè °dONLNd,fÆrø)ce fiU¿°dONLNd1f¿r)le, data that is °dONLNdBr8~;({8rE°dONLNdCr<~ª)ead into memory when the fi2`°dONLNd^rº~)Äle is opened and °dONLNdo~8äu(á8that, given a rS‡°dONLNd~~uäç)=esourú °dONLNdÉ~çäµ)    ce specifiƒ °dONLNdç~µä
  11905. )(cation, leads to the °dONLNd¢ä8ñI(ì8corr`°dONLNd¶äJñ) esponding r†°dONLNd±äñó)5esour^‡°dONLNd∂äóñ∏)ce data.°dONLNdøú8®y(•8resource nameR°dONLNdÕúÑ®ã)LA冰dONLNdŒúã®)  string that, together with the °dONLNdÓ®8¥;(±8rE°dONLNdÔ®<¥T)esourç@°dONLNdÙ®T¥ò)ce type, identifiª°dONLNd®ò¥Æ)Des a r܆°dONLNd ®Ø¥«)esourŒ‡°dONLNd®«¥È)    ce in a rÄ°dONLNd®Í¥)#esourO¿°dONLNd®¥)ce °dONLNd!¥8¿>(Ω8fiå¿°dONLNd#¥>¿J)le. ‡`°dONLNd'¥J¿Q) A°dONLNd(¥R¿X) r`°dONLNd*¥X¿p)esour®@°dONLNd/¥p¿˛)ce may or may not have a name.ˇ,|@ˇ ˇˇˇˇ@
  11906. ˇ·ˇ‚7^
  11907. 4*I¯, Palatino&e.3+ú"GLOSSARb)9Y4⁄*˙¯
  11908. (‡*2424^*¿°dONLNd\*hp(e*resource specifiæÄ°dONLNd\phã)FcationÅ`°dONLNd\ñhù)&Aº°dONLNd\ùh£) r°dONLNd\§hº)esourI@°dONLNd\ºhÒ) ce type and °dONLNd+h*tQ(q*
  11909. either a r«°dONLNd5hQti)'esour@°dONLNd:hjtö) ce ID or a rí°dONLNdFhöt≤)0esour⁄@°dONLNdKh≤tÿ)ce name.°dONLNdTz*Üf(É*resource typeQ`°dONLNdbzqÜx)GAå°dONLNdczxÜı) sequence of four characters °dONLNdÄÜ*íá(è*that uniquely identifiO°dONLNdñÜàí∑)^ es a specifi√¿°dONLNd¢Ü∑í„)/ c type of rfl†°dONLNd≠Ü„í˚),esour'‡°dONLNd≤ܸí)ce.°dONLNd∂ò*§f(°* resume eventR°dONLNd√òq§Ï)GAn event indicating that an °dONLNdfl§*∞Ï(≠*,application has been switched back into the °dONLNd ∞*º6* for`°dONLNd∞7ºE)egr, °dONLNd∞Eºà)ound and can r    †°dONLNd∞àº)Cesume interacting with the °dONLNd:º*»=(≈*user√°dONLNd>º<»f) . See also 0‡°dONLNdIºg»´)+suspend event.°dONLNdXŒ*⁄g(◊*return receiptj°dONLNdgŒr⁄y)HA§†°dONLNdhŒy⁄)! high-level event that indicates °dONLNdâ⁄*ÊÈ(„*+whether the other application accepted the °dONLNd¥Ê*Úı* 0high-level event sent to it by your application.°dONLNd¯*C*ROM °dONLNdȯN_)$See _°dONLNd̯_≥)read-only memoryû@°dONLNd˝¯≤¥)S.°dONLNdˇ
  11910. *C(*script†°dONLNd
  11911. NU)$AB@°dONLNd
  11912. U)% writing system for a human language.°dONLNd-*(p(%*Script Manager¡†°dONLNd<z(Ó)PThe part of the Macintosh °dONLNdV(*4l(1*system softwarM‡°dONLNdd(m4Ú)Ce that manages script systems.°dONLNdÉ:*Fe(C*script system.¿°dONLNdë:pFw)FAi`°dONLNdí:wF”) collection of softwaryÄ°dONLNd®:”F)\e facilities °dONLNdµF*RG(O*that pr@°dONLNdºFHRã)ovides for the r" °dONLNdÃFãRô)Cepr≤‡°dONLNdœFôR¯)esentation of a specifi¿°dONLNdÊF¯R˛)_c °dONLNdËR*^Œ([*&writing system. It consists of keyboar”Ä°dONLNdRŒ^⁄)§d r4@°dONLNdR€^Û)esour|Ä°dONLNdRÛ^)ces, °dONLNd^*jä(g*a set of international r; °dONLNd3^ãj£)aesourÉ`°dONLNd8^£jÊ)ces, one or morÅ`°dONLNdG^ÊjÌ)Ce °dONLNdIj*v(s*.fonts, and possibly a script system extension.°dONLNdx|*àR*segment R†°dONLNdÅ|]à)3(One of several logical divisions of the °dONLNd©à*î(ë*1code of an application. Not all segments need to °dONLNd⁄î*†¥* be in memory at the same time.°dONLNd˘¶*≤*Segment Manager  †°dONLNd
  11913. ¶ä≤˛)`The part of the Macintosh °dONLNd$≤*æ˚(ª*-Operating System that loads and unloads your °dONLNdQæ* Ï* ,application’s code segments into and out of °dONLNd} *÷O* memoryÕ °dONLNdÉ N÷P)$.°dONLNdÖ‹*ËT(Â*    signatureB@°dONLNdè‹_Ëf)5A|‡°dONLNdê‹fËl) r¡‡°dONLNdí‹lËÑ)esour
  11914.  °dONLNdó‹Öˇ)ce whose type is defiù@°dONLNd¨‹‡Ë)[ned by °dONLNd≥Ë*ÙD(Ò*a fourïÄ°dONLNdπËDÙ˚))-character sequence that uniquely identifi◊@°dONLNd„Ë˚Ù)∑es °dONLNdÊÙ*§(˝*an application to the Finder°dONLNdÙ§©)z. ¢†°dONLNdÙ®Ø)A›@°dONLNdÙØ÷)     signaturÒ†°dONLNdÙ÷Ê)'e is °dONLNd* §(    *located in an application’s rÅ °dONLNd0§ º)zesour…`°dONLNd5º ‹)ce fork.°dONLNd>*N(*size boxo°dONLNdGY`)/A©†°dONLNdH`™) box in the lower™°dONLNdY™Ô)J-right corner of °dONLNdj**å('*windows that can be rd°dONLNdå*˝)besized. Dragging the size °dONLNdô**6@(3*box rÍ¿°dONLNdû*@6ë)esizes the windowÀ¿°dONLNdØ*ë6ì)Q.°dONLNd±<*H[(E* size region5†°dONLNdΩ<fHÇ)<The ar6`°dONLNd√<ÇH¸)ea occupied by a window’s °dONLNd›H*Tc(Q*size box. See g¿°dONLNdÎHdTã):    size box..°dONLNdıZ*fb(c*size resource°dONLNdZlft)BAÛ`°dONLNdZsfy) r≈¿°dONLNdZyfê)esourò °dONLNd Zêf¡) ce (of type ,
  11915. Courierò °dONLNdZ¡fÂ)1'SIZE'ò °dONLNdZÂf)$) that .°dONLNd$f*rF(o*specifiÓ °dONLNd+fFr)*es the operating characteristics, minimum °dONLNdUr*~Ü({*partition size, and pr¥`°dONLNdkrÜ~ö)\eferrS °dONLNdprõ~˝)ed partition size of an °dONLNdà~*ä^(á* application.°dONLNdïê*úA*stack– °dONLNdõêKúd)!An ar≠¿°dONLNd†êdúÛ) ea of memory in the application °dONLNd¿ú*®§(•*partition that is used to stor߇°dONLNdfiú§®)ze temporary variables.4^¿¯°dONLNdı\hN(e stack frame˚°dONLNd\Xht)>The ar˚¿°dONLNd\th·)ea of the stack used by a °dONLNd!ht(qrE°dONLNd"htì)outine for its parameters, ræ °dONLNd>hìt¬)u
  11916. eturn addr¿°dONLNdHh√tÏ)0 ess, local °dONLNdStÄÆ(}!variables, and temporary storage.°dONLNduÜí*Standard File Packageî@°dONLNdãÜâí›)oThe part of system °dONLNdûíû;(õsoftwar‰¿°dONLNd•í;ûû)!e that allows you to prÈÄ°dONLNdºíûûÈ)cesent the standar‹`°dONLNdÕíÈûÒ)Kd °dONLNdœû™Å(ßuser interface when a fiñ†°dONLNdÁûÅ™’)gle is to be saved or °dONLNd¸™∂=(≥opened.°dONLNdº»[*stationery pad¡°dONLNdºe»l)KA˚†°dONLNdºl»÷) document that a user cr¡`°dONLNd,º◊»Ô)keates °dONLNd2»‘Ì(—0to serve as a template for other documents. The °dONLNdb‘‡Ë* .Finder tags a document as a stationery pad by ˇˇ†.°dONLNdê‡ÏL* setting the ˇ˛‡¿°dONLNdú‡LÏî)2 isStationeryˇˇ†¿°dONLNd®‡îÏÁ)H bit in the Finder fl‡°dONLNdΩ‡ÁϘ)Sags .°dONLNd¡Ï¯ (ıfiå¿°dONLNd√Ï ¯R) eld of the fié°dONLNd–ÏR¯i)2le’s fi—°dONLNd◊Ïi¯Æ)le information r`°dONLNdÁÏد¡)Fecorw¿°dONLNdÎÏ¡¯Ã)d. 5 °dONLNdÓÏï‹) An °dONLNdÒ¯ı(3application that is asked to open a stationery pad °dONLNd    $Ï* /should copy the template’s contents into a new °dONLNd    SÚ* .document and open the document in an untitled °dONLNd    Å(>* windowé°dONLNd    á>(@)$.°dONLNd    â.:D(7submenuB‡°dONLNd    ë.O:V)5A}Ä°dONLNd    í.V:È)" menu that is attached to another °dONLNd    ¥:F5(Cmenu.°dONLNd    ∫LX[*suspend eventN@°dONLNd    »LfX‰)LAn event indicating that the °dONLNd    ÂXd€(a-execution of your application is about to be °dONLNd
  11917. dpl* suspended as the r˛¿°dONLNd
  11918. $dlp⁄)Result of either a major or °dONLNd
  11919. ?p|Á(y.minor switch. The application is suspended at ˇˇ∂⁄.°dONLNd
  11920. m|àù* the application’s next call to ˇˇ$éB°dONLNd
  11921. å|ûàÏ)ÑWaitNextEventˇˇ∂⁄B°dONLNd
  11922. ô|Ïà¯)N or °dONLNd
  11923. ùàîV(ë
  11924. EventAvail°dONLNd
  11925. ßàVîÇ)< . See also °dONLNd
  11926. ≤àÇîø),resume event..°dONLNd
  11927. ¿ö¶7(£switchw‡°dONLNd
  11928. «öB¶S)(See  ‡°dONLNd
  11929. ÀöS¶é) major switchÌ°dONLNd
  11930. ◊ö鶣); and ⁄ °dONLNd
  11931. ‹ö§¶‚)minor switch..°dONLNd
  11932. ͨ∏e(µsystem extension°dONLNd
  11933. ˚¨o∏w)UAÛ`°dONLNd
  11934. ¸¨v∏) fiÛ`°dONLNd
  11935. ˇ¨∏¨)     le of type Û`°dONLNd
  11936. ¨¨∏–)-'INIT'Û`°dONLNd ¨–∏È)$ that .°dONLNd ∏ƒË(¡.contains executable code. System extensions ar`°dONLNd D∏ȃ)œe °dONLNd Fƒ–€(Õ*loaded into memory at system startup time.°dONLNd q÷‚C*System fin`°dONLNd z÷D‚L)*le¬@°dONLNd }÷V‚])A¸‡°dONLNd ~÷]‚e) fi↰dONLNd Å÷f‚Ô)     le, located in the System Folderº °dONLNd °÷Ô‚Ù)â, °dONLNd £‚Ó¡(Î&that contains the basic system softwar釰dONLNd …‚¡Ó˜)ß e plus some °dONLNd ’Ó˙?(˜system rÆ °dONLNd ›Ó?˙W)%esourˆ`°dONLNd ‚ÓW˙·)ces, such as sound and keyboarm‡°dONLNd Ó‚˙Í)ãd °dONLNd ˙(rE°dONLNd ˙6)esourç@°dONLNd ˙6Å)ces.The System fi8Ä°dONLNd ˙ÇÙ)Lle behaves like a folder in °dONLNd 50(this r˛ °dONLNd ;0C)egar‡°dONLNd ?DÛ)+d: although it looks like a suitcase icon, °dONLNd jÕ((double-clicking it opens a window that rΩ†°dONLNd íÕÍ)≥eveals °dONLNd ô*F('    movable rÓ`°dONLNd ¢F*^),esour6†°dONLNd ß_*p)ce fi˝@°dONLNd ¨p*Ì)les (such as sounds, keyboar†°dONLNd »Ó*ˆ)~d °dONLNd  *6ì(3layouts, and script system r€Ä°dONLNd Ê*ì6´)yesour#¿°dONLNd Î*¨6Ï)ce collections) °dONLNd ˚6B*(?stor9‡°dONLNd ˇ6+B|)ed in the System fiØ°dONLNd6|BÜ)Qle.°dONLNdHT[(QSystem Folderƒ °dONLNd$HeTl)KA˛¿°dONLNd%HlT{) dirG‡°dONLNd)H|T€)ectory containing the °dONLNd?T`;(]softwar‰¿°dONLNdFT;`Î)!(e that Macintosh computers use to start °dONLNdn`lÍ(i0up. The System Folder includes a set of folders °dONLNdûlxN* for storing r1`°dONLNd´lOxr)5elated fió‡°dONLNd¥lrxØ)#les, such as pr¿°dONLNd√l∞x¿)>eferº‡°dONLNd«l¿x‡)ences fi[Ä°dONLNdœl·xÔ)!les °dONLNd”xÑÚ(Å0that an application might need when starting up.°dONLNdäñÖ*system global variablesØ`°dONLNdäèññ)uAÍ°dONLNdäññÓ) collection of global °dONLNd3ñ¢U(üvariables stor±¿°dONLNdAñU¢»);ed in the system partition.ˇ'⁄@ˇ ˇˇˇˇ@
  11937. ˇ·ˇ‚7^
  11938. 4HF, Palatino&e.3+∫"GLOSSARb)9Y4⁄∫˙
  11939. (‡2434^H¿&°dONLNd\HhÄ(eH system heapfi†°dONLNd \äh£)BAn arº@°dONLNd\£h)ea of memory in the system °dONLNd,hHtu(qH partition rV °dONLNd7hut)-!eserved for use by the Operating °dONLNdXtHÄj(}HSystem.°dONLNd`ÜHíí*system partition†‡°dONLNdqÜúí£)TA€Ä°dONLNdrÜ£í) partition of memory °dONLNdáíHûK(õHrE°dONLNdàíLû)(eserved for use by the Operating System.°dONLNd±§H∞ê(≠Hsystem resource˘¿°dONLNd¡§ö∞°)RA4`°dONLNd¬§¢∞®) ry`°dONLNdƒ§®∞¿)esour¡†°dONLNd…§¿∞)ce in the system °dONLNd⁄∞HºK(πHrE°dONLNd€∞Lºd)esourç@°dONLNd‡∞dºu)ce fiS‡°dONLNdÂ∞vºÄ)le.°dONLNdȬHŒs(ÀH    terminate^†°dONLNdÛ¬~ŒÑ)6Tî`°dONLNd٬Ɍ¯)o end the execution of a pr”`°dONLNd¬¯Œ)uocess. û`°dONLNd¬Œ)AŸ°dONLNd¬Œ) °dONLNdŒH⁄Q(◊HprG °dONLNdŒR⁄$)
  11940. 1ocess can terminate by crashing, by quitting, or °dONLNdK⁄HÊ◊(„H by being killed by some other pr“°dONLNdk⁄◊Ê)èocess.°dONLNdrÏH¯N(ıHT¿°dONLNdsÏN¯Æ)ext Services Managerµ°dONLNdàÏ∏¯)jThe part of the system °dONLNdü¯Hi(Hsoftwar‰¿°dONLNd¶¯i)!(e that manages the interactions between °dONLNdŒHò(Happlications that rè°dONLNd·ò)Pequest text services and text °dONLNdˇHø(Hservice components that pr¸ °dONLNdøÛ)w ovide them.°dONLNd%"H.N(+HTû‡°dONLNd&"N.ä) ime Manager‰‡°dONLNd2"î.)FThe part of the Macintosh °dONLNdL.H:(7H,Operating System that lets you schedule the °dONLNdx:HFã* execution of a r3@°dONLNdà:åF)D outine after a certain time has °dONLNd®FHRl(OHelapsed.°dONLNd±XHdk*    title barN‡°dONLNdªXvd).$The bar at the top of a window that °dONLNdfldHp(mH-displays the window name, contains the close °dONLNd pH|    * *and zoom boxes, and indicates whether the °dONLNd6|Hàò* window is active. °dONLNdIéHöN*T¿°dONLNdJéNö¥)oolbox Event Manager’¿°dONLNd_éæöœ)pSee (¿°dONLNdcé–ö)Event Manager≈ °dONLNdpéö)D. °dONLNds†H¨á(©Htransfer mode@°dONLNdņí¨ô)JAS‡°dONLNddžô¨∑) specifiB°dONLNdä†∏¨$)cation of which Boolean °dONLNd¢¨H∏(µH(operation QuickDraw should perform when °dONLNd ∏Hƒ* +drawing or when transferring a bit image frI °dONLNdı∏    ƒ)¡om °dONLNd¯ƒH–©(ÕHone bitmap to another™`°dONLNdƒ©–´)a.°dONLNd÷H‚g(flHunlock&Ä°dONLNd÷r‚x)*T\@°dONLNd÷w‚•) o allow a r¥°dONLNd"÷•‚).elocatable block to be °dONLNd9‚HÓÿ(ÎHmoved during heap compaction.°dONLNdWÙHû*unpurgeable block‹ °dONLNdiÙ®Ø)`A¿°dONLNdjÙ∞∂) r[¿°dONLNdlÙ∂)elocatable block that °dONLNdÇH |(    H can’t be purÍ¿°dONLNdé| ñ)4ged fr¯ °dONLNdîñ œ) om the heap.°dONLNd°HÉ(H update event•‡°dONLNdÆç )EAn event indicating that the °dONLNdÀH*Ì('H#contents of a window need updating.°dONLNdÔ0H<á*update region†°dONLNd˝0í<ô)JAS@°dONLNd˛0ô<ü) rò@°dONLNd0ü< )egion maintained by the °dONLNd<HHR(EHWÛ`°dONLNd<QH)    +indow Manager that includes the parts of a °dONLNdDHHTù(QHwindow’s content r °dONLNdVHûT%)Vegion that need updating. The °dONLNdtTH`(]H)Event Manager generates update events as °dONLNdù`Hlr*     necessary4‡°dONLNd¶`rl)*&, based on the contents of the update °dONLNdÃlHxK(uHrE°dONLNdÕlLx),egion, telling your application to update a °dONLNd˘xHÑl(ÅHwindowé°dONLNdˇxlÑn)$.°dONLNdäHñv(ìH
  11941. user itemsk@°dONLNd äÅñ¸)9Items in a dialog box that ar“Ä°dONLNd)ä¸ñ){e °dONLNd+ñH¢(üH managed lar«@°dONLNd6ñ¢)7#gely by an application, not by the °dONLNdY¢HÆè(´HDialog Managerg@°dONLNdg¢èÆ”)G. These items arÙ°dONLNdw¢”Æ)De designated by .°dONLNdáÆH∫Å(∑Hthe constant ,
  11942. Courier°dONLNdîÆÅ∫±)9userItem°dONLNdúƱ∫¥)0.4^8¿.°dONLNdû\8hc(e8
  11943. user stateᆰdONLNd©\mh)5$The size and location that the user °dONLNdÕh8tπ(q8has established for a windowÌÄ°dONLNdÈh∏t∫)Ä.°dONLNdÎz8Ü?(É8V+Ä°dONLNdÏz?Ü™)ertical Retrace ManagerÈ`°dONLNdz¥Ü˜)uThe part of the °dONLNdÜ8í(è8-Operating System that schedules and executes °dONLNdAí8û†* tasks during a vertical r‘¿°dONLNdZí†û’)hetrace interr$@°dONLNdgí÷ûÁ)6upt.°dONLNdl§8∞w(≠8visible regionà@°dONLNd{§Å∞)I The part of a window’s graphics °dONLNdõ∞8º◊(π8'port that’s actually visible on the scr$¿°dONLNd¬∞ÿº)†een—that is, °dONLNdœº8»°(≈8the part that’s not coverí¿°dONLNd˺°»)ied by other windows.°dONLNd˝Œ8⁄Z(◊8volumeÒÄ°dONLNdŒd⁄f),  °dONLNdŒg⁄n)AM¿°dONLNdŒn⁄)% portion of a storage device that is °dONLNd+⁄8Êö(„8formatted to contain fir°dONLNdB⁄õÊ©)cles.°dONLNdGÏ8¯](ı8windowB@°dONLNdNÏh¯Å)0An ar‡°dONLNdSÏů∏)ea on the scr°dONLNd`Ï∏¯)7een that displays °dONLNdr¯8(81information, including user documents as well as °dONLNd£8
  11944. * .communications such as alert boxes and dialog °dONLNd—8˛* ,boxes. The user can open or close a window; °dONLNd˝8(d*
  11945. move it ar) °dONLNd    e(
  11946. )-#ound on the desktop; and sometimes °dONLNd    *(84â(18change its size, scr¥¿°dONLNd    >(â4£)Qoll thrS¿°dONLNd    E(§4¸)ough it, and edit its °dONLNd    [48@b(=8
  11947. contents. °dONLNd    fF8Rq*
  11948. window defi˘¿°dONLNd    qFqR∂)9nition function°dONLNd    ÅF¡R»)PAT†°dONLNd    ÇF»R) function that °dONLNd    ëR8^H([8defir °dONLNd    ïRI^)-nes the general appearance and behavior of a °dONLNd    ¬^8j\(g8windowé°dONLNd    »^\j~)$. The W= °dONLNd    œ^~j)"indow Manager calls the window °dONLNd    Ój8vH(s8defir °dONLNd    ÚjIv),nition function to draw the window’s frame, °dONLNd
  11949. v8ÇÑ(8determine what rΠ°dONLNd
  11950. .vÑÇ)Legion of the window the cursor °dONLNd
  11951. MÇ8é˙(ã8,is in, draw the window’s size box, draw the °dONLNd
  11952. yé8ö…* window’s zoom box, move and rÕÄ°dONLNd
  11953. ñé…öÒ)ë
  11954. esize the °dONLNd
  11955. †ö8¶\(£8windowé°dONLNd
  11956. ¶ö\¶Á)$ , and calculate the window’s strx °dONLNd
  11957. Δö˶ˇ)åuctur˛°dONLNd
  11958. Àöˇ¶)e °dONLNd
  11959. Õ¶8≤r(Ø8and content r    °dONLNd
  11960. ⁄¶s≤í);egions.°dONLNd
  11961. ‚∏8ƒq(¡8
  11962. window defi˘¿°dONLNd
  11963. Ì∏qƒù)9
  11964. nition ID ÛÄ°dONLNd
  11965. ¯∏®ƒ    )7An integer that specifi·Ä°dONLNd ∏
  11966. ƒ)bes °dONLNd ƒ8–L(Õ8the r¢`°dONLNd ƒL–d)esour͆°dONLNd ƒd–»)ce ID of a window defit¿°dONLNd 2ƒ…–)enition function °dONLNd B–8‹(Ÿ8/in the upper 12 bits and an optional variation °dONLNd q‹8Ë»* !code in the lower 4 bits. When cr‰`°dONLNd í‹»Ë)êeating a new °dONLNd üË8Ù\(Ò8windowé°dONLNd •Ë\Ù)$%, your application supplies a window .°dONLNd  Ù8J(˝8defi°dONLNd ŒÙJØ)nition ID either as a fi°dONLNd ÊÙØ›)e eld in the °dONLNd ÒÙ›).'WIND'°dONLNd ˜Ù)$ °dONLNd ¯8 <(    8rR`°dONLNd ˘< S)esour$¿°dONLNd ˛S Ã)ce or as a parameter to the $¿°dONLNd à )y    NewWindow$¿°dONLNd # )6 $¿°dONLNd $ )or °dONLNd ' 8t(8
  11967. NewCWindow°dONLNd 1 tù)<
  11968.  function..°dONLNd <8*n('8 window list. °dONLNd Hy*Ä)AAh¿°dONLNd IÄ*Ô) list maintained by the W†°dONLNd bÔ*)oindow °dONLNd h*86(38+Manager of all windows on the desktop. The °dONLNd ì68B?* frò‡°dONLNd ï6?Bú)ontmost window is fiñ °dONLNd ©6ùB)^rst in the window list, and °dONLNd ≈B8NL(K8the r¢`°dONLNd  BLNÍ)!emaining windows appear in the orä¿°dONLNd ÎBÍN)ûder in °dONLNd ÚN8Zt(W8which they ar‡°dONLNd ˇNuZí)=e layerS†°dONLNdNíZ„)ed on the desktop.°dONLNd`8lB(i8W!†°dONLNd`Blä)
  11969. indow ManagerûÄ°dONLNd(`îl)RThe part of the Macintosh °dONLNdBl8x>(u8Tµ¿°dONLNdCl=x{)oolbox that prà°dONLNdQl{xû)>ovides r7†°dONLNdYlüxŸ)$outines for cr®@°dONLNdglŸx
  11970. ): eating and °dONLNdrx8Ñ¢(Å8manipulating windows.ˇ    >@ˇ ˇˇˇˇ@
  11971. ˇ·ˇ‚7^
  11972. 4*I¯, Palatino&e.3+ú"GLOSSARb)9Y4⁄*˙¯
  11973. (‡*2444^*¿°dONLNd\*h4(e*W!†°dONLNd\4hë)
  11974. indow Manager port‡°dONLNd\úh£)hA;Ä°dONLNd\£hˆ) graphics port that °dONLNd)h*t-(q*rE°dONLNd*h.t<)epr’¿°dONLNd-h<tò)esents the desktop arц°dONLNdBhôt‹)]ea on the main °dONLNdQt*ÄÉ(}*monitor—that is, a rn@°dONLNdetÉÄÀ)Younded-corner rº@°dONLNdttÀÄ)Hectangle that °dONLNdÇÄ*å˘(â*0occupies all of the main monitor except for the °dONLNd≤å*ò2* arE°dONLNd¥å3ò™)    ea occupied by the title barã¿°dONLNd–å©ò´)v.°dONLNd“û*™o(ß*window record§†°dONLNd‡ûy™Ä)OAfl@°dONLNd·ûÄ™£)     data strõ`°dONLNdÍû§™ª)$uctur!@°dONLNdÔûº™‰)
  11975. e of type ,
  11976. Courier.°dONLNd˘™*∂r(≥* WindowRecord°dONLNd™r∂É)H (or °dONLNd
  11977. ™É∂—)CWindowRecord°dONLNd™—∂)N ) in which .°dONLNd"∂*¬D(ø*the WP¿°dONLNd'∂D¬û)indow Manager stor>†°dONLNd9∂û¬fl)Zes a window’s °dONLNdG¬*Œ(À*1characteristics, including the window’s graphics °dONLNdxŒ*⁄ * )port, title, visibility status, and contr√Ä°dONLNd°Œ ⁄‰)†ol list.°dONLNd™‡*Ïf(È* window type¡°dONLNd∂‡pÏw)FA˚†°dONLNd∑‡wÏ˙) collection of characteristics—°dONLNd÷Ï*¯(ı*0such as the shape of the window’s frame and the °dONLNd¯*D* featur¨°dONLNd ¯D˚)*es of its title bar—that describe a window  °dONLNd6¯˚˝)∑.°dONLNd8
  11978. *V(*zoom box¨¿°dONLNdA
  11979. `g)6AÁ`°dONLNdB
  11980. g)% box in the right side of a window’s °dONLNdg*"Â(*/title bar that the user can click to alternate °dONLNdñ"*.q* between two difÄ°dONLNd•"r.~)HferΰdONLNd®"}.ı) ent window sizes (the user °dONLNd√.*:Ü(7*state and the standará`°dONLNdÿ.Ü:®)\    d state).4^¿¯ˇ)∂@ˇ ˇˇˇˇ@
  11981. ˇ·ˇ‚7^
  11982. 4⁄∫˙, Palatino
  11983. .(‡2454^H°
  11984. vH†4vH† üHü
  11985. ˇ·ˇ‚7^ˇˇ¬òˇ◊°dONLNd\∫uı(n∫Index4ßH¡&
  11986. ≥Hæ&4¥Hæ& µHµ&
  11987. ˇ·ˇ‚7^,     Helvetica°dONLNd¶H≥y(∞HSymbols,
  11988. Courier    .°dONLNdºH«M*@.°dONLNdºM«q)     operator0ò°dONLNdºv«))46
  11989. ÙHˇ&4ıHˇ& ˆHˆ&
  11990. ˇ·ˇ‚7^°dONLNdÁHÙP(ÒHA    °dONLNd˝HY*A5 rìR°dONLNd"˝Ys)egisterÇ•°dONLNd*˝xÅ)38°dONLNd-Hm(HA5 world°dONLNd6Q®+     and context switchingOì°dONLNdL≠∫)\167°dONLNdPQ)`(&Qdefi∞‰°dONLNdT`)o)ned,∏°dONLNdXt)})37°dONLNd[)Q4j(1Qsize ofLà°dONLNdc)o4|)170°dONLNdg4H?Ç(<Hactivate events°dONLNdw?QJt+     handlingÕm°dONLNdÄ?yJÜ)(125?Ì°dONLNdÉ?áJã)–ªm°dONLNdÑ?ãJò)127°dONLNdàJHUé(RHactive application'Ì°dONLNdõJìU†)K166.°dONLNdüUH`(]H AddResource.°dONLNd™U`ä)7 prÅô°dONLNd≠Uä`•) ocedurÓ°dONLNd≥U•`©)e∏Δ°dONLNdµUÆ`∑)    66°dONLNd∏`Hkr(hH alert boxes¶ö°dONLNdƒ`wkÑ)/134°dONLNd»kHvÇ(sHAlias Manager/°dONLNd÷kávê)?12°dONLNdŸvHÅb(~HAPDAL    °dONLNdfivgÅp)xv¸~°dONLNd‡vpÅt)    , w˛°dONLNd‚vuÅÇ)189.°dONLNdÊÅHåâ(âHAppendResMenu.°dONLNdÛÅâåî)A prÅô°dONLNdˆÅîåØ) ocedurÓ°dONLNd¸ÅØå≥)e∏Δ°dONLNd˛Å∏å≈)    156°dONLNdåHóò(îHApple Event InterprY°dONLNdåòóÂ)Pocess Messaging PrÍ°dONLNd'åÂó˝)Motocol∏`°dONLNd.åó
  11991. )16°dONLNd1óH¢ü(üHApple Event Managerí@°dONLNdEó§¢≠)\15â@°dONLNdGó≠¢±)    , ¿°dONLNdIó≤¢ª)16˚¿°dONLNdKó∫¢æ)–w@°dONLNdLóø¢»)17°dONLNdO¢H≠|(™H Apple eventsx≠°dONLNd\¢Å≠ä)916o≠°dONLNd^¢ä≠é)    –Î-°dONLNd_¢é≠ó)17°dONLNdb≠Q∏_(µQCor Ê°dONLNde≠`∏y)e suite/ã°dONLNdm≠~∏á)17°dONLNdp∏Q√Ñ(¿Qfunctional-arß9°dONLNd}∏Ñ√•)3    ea suites˛°dONLNdá∏™√≥)&17°dONLNdä√QŒk(ÀQRequir0*°dONLNdê√lŒã)ed suite∏∞°dONLNdô√èŒò)#17°dONLNdúŒQŸò(÷Qsent by the Findero≤°dONLNdØŒùŸ¶)L17°dONLNd≤ŸH‰y(·H
  11992. Apple menu∂$°dONLNdΩŸ~‰ã)6159°dONLNd¡‰HÔµ(ÏHapplication global variablesiÅ°dONLNdfi‰∫Ô√)r37°dONLNd·ÔH˙ä(˜Happlication heap/â°dONLNdÚÔè˙ò)G34&â°dONLNdÙÔò˙ú)    –¢    °dONLNdıÔú˙•)36ô    °dONLNd˜Ô•˙©)    , â°dONLNd˘Ô™˙∑)169°dONLNd˝˙Q`(Qdefi∞‰°dONLNd˙`o)ned,∏°dONLNd˙t})34°dONLNdH£(Happlication parametersuX°dONLNd®±)`38°dONLNd"Hù(Happlication partitions.ˆ°dONLNd9¢´)Z29%ˆ°dONLNd;´Ø)    , °v°dONLNd=Ø∏)32òv°dONLNd?∏º)    –ˆ°dONLNd@ΩΔ)38°dONLNdCH&x(#H applications°dONLNdP&Q1|+     initializingÒ"°dONLNd]&Ä1â)/74Ë"°dONLNd_&â1ç)    –c¢°dONLNd`&é1ó)75°dONLNdc1Q<p(9Qquitting≠—°dONLNdl1u<Ç)$175 Q°dONLNdo1É<á)–õ—°dONLNdp1á<î)176.°dONLNdt<HGu(DH    ApplLimit.°dONLNd}<uG≤)- global variable c°dONLNdé<∑G¿)B31c°dONLNdê<¿Gƒ)    , }„°dONLNdí<ƒGÕ)33.°dONLNdïGHRp(OHApplZone.°dONLNdùGpR≠)( global variable c°dONLNdÆG≤Rª)B31
  11993. Hä&4ÄHä& ÅHÅ&
  11994. ˇ·ˇ‚7^°dONLNd±rHP(|HB    °dONLNd≥àHìc*backgrCΔ°dONLNdπàcìÉ)ound prB¨°dONLNd¿àÉìó) ocessÜA°dONLNdΔàúì©)166°dONLNd ìHû|(õH Balloon Help(ê°dONLNd◊ìÅûä)910.°dONLNd⁄ûH©(¶H BeginUpdate.°dONLNdÂû©ä)7 prÅô°dONLNdËûä©•) ocedurÓ°dONLNdÓû•©©)e∏Δ°dONLNdûÆ©ª)    125°dONLNdÙ©H¥p(±H
  11995. bit imagesŒF°dONLNdˇ©u¥~)-91≈F°dONLNd©~¥Ç)    –@Δ°dONLNd©É¥å)927Δ°dONLNd©å¥ê)    , ≥F°dONLNd©ê¥ô)99™F°dONLNd©ô¥ù)    –%Δ°dONLNd    ©û¥´)101.°dONLNd¥Høf(ºHBitMap.°dONLNd¥føç)
  11996.  data typemŸ°dONLNd¥íøõ),914ß8¡°dONLNd!•8∞X(≠8bitmapså°dONLNd)•]∞f)%91°dONLNd,∞8ªw(∏8blocks, memory°dONLNd;ªAΔP+     defi∞‰°dONLNd?ªPΔ_)ned,∏°dONLNdCªdΔm)35°dONLNdFΔA—O(ŒApur´<°dONLNdIΔO—x)
  11997. ging and r~e°dONLNdSΔx—£)) eallocatingï°dONLNd_Δ®—±)043ï°dONLNdaΔ±—µ)    –É°dONLNdbΔµ—æ)44°dONLNde—8‹V(Ÿ8buttons°dONLNdm‹AÁó+     drawing an outline arÄΰdONLNdÇ‹óÁ¨)Vound˛8°dONLNdá‹∞ÁΩ)146.°dONLNdãÁ8ÚL(Ô8Byte.°dONLNdèÁLÚs)
  11998.  data typemŸ°dONLNdöÁxÚÅ),44°dONLNdùÚA˝Q(˙Acoer )°dONLNd°ÚR˝o)cing to . u°dONLNd©Úo˝É)Char. u°dONLNd≠ÚÉ˝™)
  11999.  data typeN°dONLNd∏ÚØ˝∏),47
  12000. *854+85 ,8,
  12001. ˇ·ˇ‚7^°dONLNdª8*A('8C    °dONLNdΩ38>o*Cancel button°dONLNdÀ>AIò+     in modal dialog boxesâK°dONLNd·>ùI™)\146.°dONLNdÂI8TL(Q8Char.°dONLNdÈILTs)
  12002.  data type°dONLNdÙTA_Q(\Acoer )°dONLNd¯TR_o)cing to . u°dONLNdTo_É)Byte. u°dONLNdTÉ_™)
  12003.  data typeN°dONLNdTØ_∏),47°dONLNd_8jg(g8 check boxes°dONLNdjAuú+     handling user clicks onüÓ°dONLNd6j°uÆ)`142n°dONLNd9jØu≥)–çÓ°dONLNd:j≥u¿)144°dONLNd>u8ÄB(}8cirv°dONLNdAuBÄP)
  12004. cles§G°dONLNdFuUÄ^)89õG°dONLNdHu^Äb)    , «°dONLNdJucÄl)94°dONLNdMÄ8ãZ(à8Clipboar+°dONLNdUÄ[ã`)#d$Á°dONLNdWÄeãr)
  12005. 170°dONLNd[ã8ñ\(ì8    close boxIŒ°dONLNdeãañe))1Fæ°dONLNdfãeñi)1CÆ°dONLNdgãiñm)1°dONLNdiñA°á(ûAhandling clicks in÷°dONLNd|ñå°ô)K121°dONLNdÄ°A¨¡(©Ahandling mouse-down events inHn°dONLNdû°Δ¨”)Ö128∫Ó°dONLNd°°”¨◊)–6n°dONLNd¢°ÿ¨Â)129°dONLNd¶¨8∑®(¥8Close command (File menu)‘°dONLNd¿¨¨∑π)t161Fï°dONLNd√¨∫∑æ), ¬°dONLNd≈¨æ∑À)162.°dONLNd…∑8¬`(ø8CloseRgn.°dONLNd—∑`¬k)( prÅô°dONLNd‘∑k¬Ü) ocedurÓ°dONLNd⁄∑ܬä)e∏Δ°dONLNd‹∑è¬ò)    96.°dONLNdfl¬8Õo( 8 CloseWindow.°dONLNdͬoÕz)7 prÅô°dONLNd̬zÕï) ocedurÓ°dONLNdÛ¬ïÕô)e∏Δ°dONLNdı¬ûÕ´)    129°dONLNd˘Õ8ÿr(’8 Command key¿¬°dONLNdÕwÿÑ)?160°dONLNd    ÿ8„ö(‡8Communications Resour≥{°dONLNdÿö„»)b
  12006. ce Manager/˝°dONLNd)ÿÕ„÷)319°dONLNd,„8ÓÑ(Î8Communications Tú¿°dONLNd<„ÉÓù)Koolbox˚î°dONLNdC„¢Ó´)18Úî°dONLNdE„´ÓØ)    –n°dONLNdF„∞Óπ)19°dONLNdIÓ8˘j(ˆ8 compaction. Ai°dONLNdUÓk˘w)3See6V°dONLNdXÓw˘Ω)  heap compaction°dONLNdi˘8m(8compatibility°dONLNdwAf+         and the T@‰°dONLNdÄfÄ)%oolboxü∏°dONLNdáÖâ)7°dONLNdâAj(A
  12007. guidelinesHk°dONLNdîo|).187∫ΰdONLNdó|Ä)–6k°dONLNdòÅé)188°dONLNdúA%Ä("Atrap availability˙≥°dONLNdÆÑ%ë)C178m3°dONLNd±í%ñ)–Ë≥°dONLNd≤ñ%£)181°dONLNd∂%80ã(-8Connection ManagerN8°dONLNd…%ê0ô)X19°dONLNdÃ08;[(88    content rèQ°dONLNd’0[;q)#egion°dONLNd€;AF¡(CAhandling mouse-down events inHn°dONLNd˘;ΔF”)Ö121∫Ó°dONLNd¸;”F◊)–6n°dONLNd˝;ÿFÂ)123°dONLNdF8Qq(N8context of a pr2w°dONLNdFqQÖ)9ocess°dONLNdQA\g(YA    switchingŒ(°dONLNd Ql\y)+167°dONLNd$\8gO(d8ContrD°dONLNd)\Og|)
  12008. ol Manager˚c°dONLNd4\Ägâ)110°dONLNd7g8rL(o8contr„ù°dONLNd<gLrW)ols°dONLNd@rA}ó(zAdrawing an outline arÄΰdONLNdUró}¨)Vound˛8°dONLNdZr∞}Ω)146p∏°dONLNd]ræ}¿).Æx°dONLNd^r¿}fi)     See alsoV°dONLNdgrfl}) check boxes, °dONLNdu}Sàà(ÖSradio buttons°dONLNdÉàAìÇ(êAsetting values ofø˙°dONLNdïàÜìì)E1422z°dONLNdòàîìò)–≠˙°dONLNdôàòì•)144°dONLNdùì8û≤(õ8cooperative multitasking envirVΩ°dONLNdªì≤û–)zonmentJ»°dONLNd¬ì’û‚)#165ΩH°dONLNd≈ì‚ûÊ)–8»°dONLNdΔìÁûÙ)167°dONLNd û8©I(¶8coor•?°dONLNdŒûI©z) dinate plane]R°dONLNd€û©à)686.°dONLNdfi©8¥`(±8CopyBits.°dONLNdÊ©`¥k)( prÅô°dONLNdÈ©k¥Ü) ocedurÓ°dONLNdÔ©Ü¥ä)e∏Δ°dONLNdÒ©è¥ò)    99ØΔ°dONLNdÛ©ò¥ú)    , +F°dONLNdı©ù¥™)101.°dONLNd˘¥8øe(º8    CurrentA5.°dONLNd¥eø¢)- global variable c°dONLNd¥ßø∞)B31c°dONLNd¥∞ø¥)    , }„°dONLNd¥¥øΩ)38ˇ5$@ˇ ˇˇˇˇ@
  12009. ˇ·ˇ‚7^
  12010. 4*I¯, Palatino&e.3+ú"INDEX4⁄*˙¯
  12011. (‡*2464^*¿    °dONLNd\*g:(d*currï°dONLNd\:gQ)ent pr<Ö°dONLNd
  12012. \Rgf)ocessÄ°dONLNd\kgx)166,
  12013. Courier.°dONLNdg*r\(o*
  12014. CurResFile.°dONLNdg\r)2     functionv°dONLNd(gÑrç)(52°dONLNd+r*}v(z*cursors, initializing`fi°dONLNdAr{})Q9
  12015. ™*µ4´*µ ¨*¨
  12016. ˇ·ˇ‚7^,     Helvetica°dONLNdCù*™3(ß*D    °dONLNdE≥*æp*dangling pointersw}°dONLNdW≥uæ~)K42°dONLNdZæ*…Ã(Δ*(data, exchanging with other applicationsûe°dONLNdÉæ–…Ÿ)¶15°dONLNdÜ…*‘ò(—*data types, general purpose“÷°dONLNd¢…ú‘•)r39…÷°dONLNd§…•‘©)    –EV°dONLNd•…™‘≥)40<V°dONLNdß…≥‘∑)    , ∑÷°dONLNd©…∑‘¿)44Æ÷°dONLNd´…¿‘ƒ)    –*V°dONLNd¨…≈‘Œ)46.°dONLNdØ‘*flR(‹*dBoxProc.°dONLNd∑‘Rflâ)(  window type6/°dONLNdƒ‘éflõ)<167°dONLNd»fl*Íb(Á*default button∏À°dONLNd◊flgÍt)=146.°dONLNd€Í*ıC(Ú*Delay.°dONLNd‡ÍCıN) prÅô°dONLNd„ÍNıi) ocedurÓ°dONLNdÈÍiım)e∏Δ°dONLNdÎÍrı{)    80°dONLNdÓı*j(˝*desk accessoriesAX°dONLNdˇıos)E1>H°dONLNdıs|)145H°dONLNdı|Ä)    , ∞»°dONLNdıÄç)121°dONLNd3 O(3closingðdONLNdT a)!128°dONLNd *I(*desktop¿›°dONLNd N[)$166.°dONLNd *!p(*DetachResource.°dONLNd.p!{)F prÅô°dONLNd1{!ñ) ocedurÓ°dONLNd7ñ!ö)e∏Δ°dONLNd9ü!®)    66°dONLNd<!*,k()*Device Manager„G°dONLNdK!o,s)E1‡7°dONLNdL!s,w)1[∑°dONLNdM!x,|), ◊7°dONLNdO!|,Ö)12°dONLNdR,*7\(4* dialog boxes€Ø°dONLNd_,`7m)6133N/°dONLNdb,n7r)–…Ø°dONLNdc,r7)148°dONLNdg73BO(?3closingðdONLNdo7TBa)!128°dONLNdsB3MB(J3defi∞‰°dONLNdwBBMQ)ned,∏°dONLNd{BVMc)133°dONLNdM3Xy(U3event handling in‰∞°dONLNdëM}XÜ)J78°dONLNdîX3cA(`3intrüx°dONLNdòXAc^)oduced§‘°dONLNdüXccp)"109°dONLNd£c3nW(k3
  12017. items in. îï°dONLNd≠cWnc)$SeeâÇ°dONLNd∞ccnâ)  item lists°dONLNdºn*yj(v*Dialog Manager:°dONLNdÀnoyx)E101°dONLNdÕnxy|)    , ¨ì°dONLNdœn|yÄ)1©É°dONLNd–nÄyâ)10†É°dONLNd“nâyç)    , °dONLNd‘néyõ)133éÉ°dONLNd◊nõyü)–
  12018. °dONLNdÿn†y≠)148°dONLNd‹y*ÑH(Å*dialog r+\°dONLNd‰yIÑ_)esourÔˆ°dONLNdÈy^Ñj)cesÇ°dONLNdÌyoÑx)57y°dONLNdÔyxÑ|)    , ÙÜ°dONLNdÒy|Ñâ)135.°dONLNdıÑ*èf(å* DialogSelect.°dONLNdÑfèâ)<     functionv°dONLNd Ñéèõ)(142.°dONLNdè*ö\(ó*
  12019. DIBadMount.°dONLNdè\ö)2     functionv°dONLNd#èÑöç)(77.°dONLNd&ö*•M(¢*DiffRgn.°dONLNd-öM•X)# prÅô°dONLNd0öX•s) ocedurÓ°dONLNd6ös•w)e∏Δ°dONLNd8ö|•Ö)    97.°dONLNd;•*∞u(≠*DisableMenuItem.°dONLNdJ•u∞Ä)K prÅô°dONLNdM•Ä∞õ) ocedurÓ°dONLNdS•õ∞ü)e∏Δ°dONLNdU•§∞±)    162°dONLNdY∞*ªó(∏*Disk Initialization ManagerÙi°dONLNdu∞õª§)q12°dONLNdxª*Δz(√*disk-inserted events°dONLNdçΔ3—V+     handlingÕm°dONLNdñΔ[—d)(76ƒm°dONLNdòΔd—h)    –?Ì°dONLNdôΔi—r)77°dONLNdú—3‹ä(Ÿ3in modal dialog boxesâK°dONLNd≤—è‹ú)\147.°dONLNd∂‹*Ák(‰*DisposeHandle.°dONLNd√‹kÁv)A prÅô°dONLNdΔ‹vÁë) ocedurÓ°dONLNdËëÁï)e∏Δ°dONLNdŒ‹öÁß)    129+F°dONLNd—‹®Á¨), ¶Δ°dONLNd”‹¨Áπ)156.°dONLNd◊Á*Ú\(Ô*
  12020. DisposePtr.°dONLNd·Á\Úg)2 prÅô°dONLNd‰ÁgÚÇ) ocedurÓ°dONLNdÍÁÇÚÜ)e∏Δ°dONLNdÏÁãÚò)    129+F°dONLNdÔÁôÚù)–¶Δ°dONLNdÁùÚ™)130.°dONLNdÙÚ*˝k(˙*DisposeWindow.°dONLNdÚk˝v)A prÅô°dONLNdÚv˝ë) ocedurÓ°dONLNd
  12021. Úë˝ï)e∏Δ°dONLNd Úö˝ß)    130.°dONLNd˝*H(*'DITL'.°dONLNd˝HM) r≤°dONLNd˝Nd)esour„L°dONLNd˝c)ce type{‰°dONLNd%˝Ñë)!135°dONLNd)*J(*dividers‹a°dONLNd2O\)%152N·°dONLNd5]a),  a°dONLNd7an)157.°dONLNd;*H(*'DLOG'.°dONLNdAHM) r≤°dONLNdCNd)esour„L°dONLNdHc)ce type{‰°dONLNdPÑë)!135°dONLNdT*)X(&*
  12022. document r7o°dONLNd^X)h).ecor¬ò°dONLNdbh)q)dsâ(°dONLNdev)z)1Ü°dONLNdfz)É)15}°dONLNdhÉ)á)    –¯ò°dONLNdiá)ã)1ıà°dONLNdjã)î)18°dONLNdm)*4y(1*document windowsHd°dONLNd~)~4Ç)T1ET°dONLNd)Ç4ã)10<T°dONLNdÅ)ã4è)    , ∑‘°dONLNdÉ)è4ì)1¥ƒ°dONLNdÑ)ì4ú)14°dONLNdá43?O(<3closingðdONLNdè4T?a)!128àL°dONLNdí4a?e)–ðdONLNdì4f?s)129°dONLNdó?*J[(G* double indirß´°dONLNd£?[Js)1ectionh°dONLNd™?xJÅ)40°dONLNd≠J*UB(R*drag rô‰°dONLNd≥JBUX)egionŒ°dONLNdπJ]Uj)121.°dONLNdΩU*`\(]*
  12023. DragWindow.°dONLNd«U\`g)2 prÅô°dONLNd Ug`Ç) ocedurÓ°dONLNd–UÇ`Ü)e∏Δ°dONLNd“Uã`ò)    121°dONLNd÷`*kK(h*drawing«µ°dONLNdfi`PkY)&85æµ°dONLNd‡`Yk])    –:5°dONLNd·`^kk)106.°dONLNdÂk*va(s* DrawMenuBar.°dONLNdkavl)7 prÅô°dONLNdÛklvá) ocedurÓ°dONLNd˘kávã)e∏Δ°dONLNd˚kêvù)    156+F°dONLNd˛kûv¢), ¶Δ°dONLNdk¢vØ)162.°dONLNdv*Å\(~*
  12024. DrawString.°dONLNdv\Åg)2 prÅô°dONLNdvgÅÇ) ocedurÓ°dONLNdvÇÅÜ)e∏Δ°dONLNdvãÅè)    54F°dONLNdvêÅî), ØΔ°dONLNdvîÅ°)1044^¿˜
  12025. ju˜4ku˜ ll˜
  12026. ˇ·ˇ‚7^°dONLNd ]j!(gE    °dONLNd"s~\*Edition ManagerÈë°dONLNd2s`~i)G14‡ë°dONLNd4si~m)    , \°dONLNd6sn~w)15S°dONLNd8sw~{)    –Œë°dONLNd9s{~Ñ)16°dONLNd<~âB(Ü    Edit menuå9°dONLNdF~GâT).159˛π°dONLNdI~TâX), z9°dONLNdK~Yâf)160.°dONLNdOâî_(ëEnableMenuItem.°dONLNd]â_îj)F prÅô°dONLNd`âjîÖ) ocedurÓ°dONLNdfâÖîâ)e∏Δ°dONLNdhâéîõ)    162.°dONLNdlîüF(ú    EndUpdate.°dONLNduîFüQ)- prÅô°dONLNdxîQül) ocedurÓ°dONLNd~îlüp)e∏Δ°dONLNdÄîuüÇ)    125°dONLNdÑü™?(ß    Enter key°dONLNdé™"µy+     in modal dialog boxesâK°dONLNd§™~µã)\146.°dONLNd®µ¿F(Ω    EraseRect.°dONLNd±µF¿Q)- prÅô°dONLNd¥µQ¿l) ocedurÓ°dONLNd∫µl¿p)e∏Δ°dONLNdºµu¿Ç)    104°dONLNd¿¿À$(»errµ¥°dONLNd√¿$À0) ors°dONLNd«À"÷O(”"
  12027. and Resour´Î°dONLNd—ÀO÷Ç)- ce Manager rG°dONLNd›ÀÉ÷†)4outinesÈM°dONLNdÂÀ§÷≠)!66°dONLNdË÷"·E(fi"handlingÕm°dONLNdÒ÷J·W)(176?Ì°dONLNdÙ÷X·\)–ªm°dONLNdı÷\·i)178°dONLNd˘·ÏE(È
  12028. Escape key°dONLNdÏ"˜y+     in modal dialog boxesâK°dONLNdÏ~˜ã)\146.°dONLNd˜K(ˇ
  12029. EventAvail.°dONLNd(˜Kn)2     functionv°dONLNd2˜sÄ)(167°dONLNd6W(
  12030. event-driven prx:°dONLNdEWÖ)>    ogrammingÄ—°dONLNdOäì)371°dONLNdRB(
  12031. event loopŒ„°dONLNd]GP).75≈„°dONLNd_PT)    , Ac°dONLNdaU^)77°dONLNdd#U( Event ManagerØÄ°dONLNdrZ#c)A10¶Ä°dONLNdtc#g)    , "°dONLNdvh#q)15°dONLNdxq#u)    , îÄ°dONLNdzu#~)71ãÄ°dONLNd|~#Ç)    –°dONLNd}É#å)81°dONLNdÄ#.O(+event priorityÅ3°dONLNdè#T.]);75°dONLNdí.94(6event rÁ°dONLNdô.49D)ecors°dONLNdù.E9J)dl˙°dONLNdü.O9X)
  12032. 76.°dONLNd¢9DP(A EventRecord.°dONLNd≠9PDw)7
  12033.  data typemŸ°dONLNd∏9|DÖ),76°dONLNdªDO2(LeventsïÌ°dONLNd¬D7O@)71°dONLNd≈O"Z@(W"activate¿?°dONLNdŒOEZR)#1252ø°dONLNd—OSZW)–Æ?°dONLNd“OWZd)127°dONLNd÷Z"eJ(b"
  12034. high-level›Ê°dONLNd·ZNeW),15‘Ê°dONLNd„ZWe[)    , Pf°dONLNdÂZ\ee)72°dONLNdËe"pJ(m"key-downM˜°dONLNdÒeOp\)-148°dONLNdıp"{>(x"key-upY°dONLNd¸pC{L)!79°dONLNdˇ{"ÜF(É"    low-level“Ö°dONLNd    {KÜT))72°dONLNd Ü"ëJ(é"mouse-up±°dONLNdÜOëX)-79
  12035. ±°dONLNdÜXë\)    –Ü1°dONLNdÜ\ëe)81°dONLNdë"ú1(ô"null’:°dONLNd ë6ú?)72°dONLNd#ú"ßg(§"operating-system°dONLNd4úlßu)J72°dONLNd7ß"≤@(Ø"priorityz5°dONLNd@ßE≤N)#75°dONLNdC≤"Ω%(∫"r‡Ú°dONLNdD≤%ΩF)eceivingkC°dONLNdM≤KΩT)&75bC°dONLNdO≤TΩX)    –›√°dONLNdP≤XΩa)79°dONLNdSΩ"»A(≈"types ofÄm°dONLNd\ΩF»O)$72wm°dONLNd^ΩO»S)    , ÚÌ°dONLNd`ΩS»\)76.°dONLNdc»”P(– ExitToShell.°dONLNdn»P”[)7 prÅô°dONLNdq»[”v) ocedurÓ°dONLNdw»v”z)e∏Δ°dONLNdy»”å)    178°dONLNd}”fiG(€ extensions. §ÿ°dONLNdâ”GfiS).Seeô≈°dONLNdå”Sfiù)  system extensions
  12036.  ˜4 ˜ ˜
  12037. ˇ·ˇ‚7^°dONLNdü˛  (F    °dONLNd°*fiÏC°dONLNd£+)gur∞g°dONLNd¶,`)es, syllogisticç°dONLNd∂en)923°dONLNdπ*M(' File Manager4T°dONLNdΔR*V)911D°dONLNd«V*Z)1¨ƒ°dONLNd»Z*^), (D°dONLNd _*h)12°dONLNdÕ*5@(2    File menuéW°dONLNd◊*E5N),xiidÊ°dONLNd⁄*O5S)
  12038. , ‡f°dONLNd‹*S5`)160°dONLNd‡5"@b(="Close commandú°dONLNdÓ5g@t)E128É°dONLNdÒ5t@x), ˛ú°dONLNdÛ5x@Ö)161q°dONLNdˆ5Ü@ä), Ïú°dONLNd¯5ä@ó)162°dONLNd¸@"K_(H" New commandU[°dONLNd@dKh)B1RK°dONLNd    @hKq)16°dONLNd K"V^(S" Quit command:°dONLNdKcVp)A175°dONLNdVa(^fiÏC°dONLNdVa()les°dONLNd#a"lå+ specifying in a document r—°dONLNd=aålú)jecorü˙°dONLNdAaúl°)dô€°dONLNdCa¶l™)
  12039. 1ñÀ°dONLNdDa™l≥)16°dONLNdGlw/(tFile TÍO°dONLNdMl.wo)ransfer Manager˚G°dONLNd]ltw})F19.°dONLNd`wÇA(FillRect.°dONLNdhwAÇL)( prÅô°dONLNdkwLÇg) ocedurÓ°dONLNdqwgÇk)e∏Δ°dONLNdswpÇy)    89.°dONLNdvÇç<(äFillRgn.°dONLNd}Ç<çG)# prÅô°dONLNdÄÇGçb) ocedurÓ°dONLNdÜÇbçf)e∏Δ°dONLNdàÇkçt)    98°dONLNdãçò3(ïFinder˜°dONLNdíç8ò<)6òw°dONLNdìç<ò@), ˜°dONLNdïçAòJ)10°dONLNdòò"£C(†"sending ˇß°dONLNd†òC£w)! Apple events¯T°dONLNd≠ò|£Ö)917°dONLNd∞£ÆX(´Finder Interfacev°dONLNd¡£]Æa)D6舰dONLNd¬£aÆe),  v°dONLNdƒ£fÆo)10.°dONLNd«ÆπK(∂
  12040. FindFolder.°dONLNd—ÆKπn)2     functionv°dONLNd€Æsπ|)(63ˇ4(@ˇ ˇˇˇˇ@
  12041. ˇ·ˇ‚7^
  12042. 4HF, Palatino&e.3+∫"INDEX4⁄∫˙
  12043. (‡2474^H¿&    °dONLNd\Qg∞(dQchecking for availabilityèÍ°dONLNd\µg¬)d178j°dONLNd\√g«)–}Í°dONLNd\«g‘)179,
  12044. Courier.°dONLNd"gHrz(oH
  12045. FindWindow.°dONLNd,gzrù)2     functionv°dONLNd6g¢r¶)(1rÙ°dONLNd7g¶rØ)19°dONLNd:rH}(zH Font Manager∫˙°dONLNdGrÑ}à)<96z°dONLNdHrâ}ç), ±˙°dONLNdJrç}ñ)13®˙°dONLNdLrñ}ö)    , $z°dONLNdNrõ}®)102°dONLNdR}HàS(ÖHfor¡y°dONLNdU}Sà_) egrh˙°dONLNdX}`àÄ)ound prg‡°dONLNd_}Äàî) ocess´u°dONLNde}ôà¶)166.°dONLNdiàHìu(êH    FrameOval.°dONLNdràuìÄ)- prÅô°dONLNduàÄìõ) ocedurÓ°dONLNd{àõìü)e∏Δ°dONLNd}à§ì≠)    96.°dONLNdÄìHûu(õH    FrameRect.°dONLNdâìuûÄ)- prÅô°dONLNdåìÄûõ) ocedurÓ°dONLNdíìõûü)e∏Δ°dONLNdîì§û≠)    89°dONLNdóûH©N(¶Hfr‹£°dONLNdôûN©r)    ee blocksh?°dONLNd£ûw©Ä))38.°dONLNd¶©H¥(±H FrontWindow.°dONLNd±©¥¢)7     functionv°dONLNdª©ß¥¥)(128ËÑ°dONLNdæ©¥¥∏), d°dONLNd¿©π¥Δ)162.°dONLNdƒ¥Høu(ºH    FSpCreate.°dONLNdÕ¥uøò)-     functionv°dONLNd◊¥ùø¶)(21
  12046. ÏH˜&4ÌH˜& ÓHÓ&
  12047. ˇ·ˇ‚7^,     Helvetica°dONLNd⁄flHÏR(ÈHG    .°dONLNd‹ıHk*Gestalt.°dONLNd„ıké)#     functionv°dONLNdÌıìú)(20m°dONLNdÔıú†)    , ËÑ°dONLNdÒı†≠)179°dONLNdıH â(HGestalt ManagerîV°dONLNdé õ)F179.°dONLNd     HÑ(H Get1Resource.°dONLNd Ñß)<     functionv°dONLNd ¨µ)(54.°dONLNd"H!â(HGetDialogItem.°dONLNd/â!î)A prÅô°dONLNd2î!Ø) ocedurÓ°dONLNd8Ø!≥)e∏Δ°dONLNd:∏!¡)    47ØΔ°dONLNd<¡!≈)    , +F°dONLNd>Δ!”)136ùΔ°dONLNdA”!◊), F°dONLNdCÿ!Â)140ãΔ°dONLNdFÂ!È), F°dONLNdHÍ!˜)148.°dONLNdL!H,Ñ()H GetIndString.°dONLNdX!Ñ,è)< prÅô°dONLNd[!è,™) ocedurÓ°dONLNda!™,Æ)e∏Δ°dONLNdc!≥,º)    52.°dONLNdf,H7â(4HGetMenuHandle.°dONLNds,â7¨)A     functionv°dONLNd},±7æ)(162.°dONLNdÅ7HBì(?HGetMenuItemText.°dONLNdê7ìBû)K prÅô°dONLNdì7ûBπ) ocedurÓ°dONLNdô7πBΩ)e∏Δ°dONLNdõ7¬Bœ)    159.°dONLNdüBHMÑ(JH GetNewDialog.°dONLNd´BÑMß)<     functionv°dONLNdµB¨Mµ)(60m°dONLNd∑BµMπ)    , ËÑ°dONLNdπBπMΔ)137[°dONLNdºB«MÀ), ÷Ñ°dONLNdæBÀMÿ)137I°dONLNd¡BŸM›)–ƒÑ°dONLNd¬B›MÍ)1387°dONLNd≈BÎMÔ), ≤Ñ°dONLNd«BÔM¸)145.°dONLNdÀMHXz(UH
  12048. GetNewMBar.°dONLNd’MzXù)2     functionv°dONLNdflM¢XØ)(154ËÑ°dONLNd‚MØX≥)–d°dONLNd„M¥X¡)156.°dONLNdÁXHcÑ(`H GetNewWindow.°dONLNdÛXÑcß)<     functionv°dONLNd˝X¨cµ)(60m°dONLNdˇXµcπ)    , ËÑ°dONLNdXπcΔ)130.°dONLNdcHnz(kH
  12049. GetPattern.°dONLNdcznù)2     functionv°dONLNdc¢n´)(60.°dONLNdnHyk(vHGetPort.°dONLNd#nkyv)# prÅô°dONLNd&nvyë) ocedurÓ°dONLNd,nëyï)e∏Δ°dONLNd.nöy£)    94.°dONLNd1yHÑ(ÅH GetResource.°dONLNd<yÑ¢)7     functionv°dONLNdFyßÑ∞)(54m°dONLNdHy∞Ñ¥)    , ËÑ°dONLNdJy¥ÑΩ)60.°dONLNdMÑHèz(åH
  12050. GetWRefCon.°dONLNdWÑzèù)2     functionv°dONLNdaÑ¢è¶)(1rÙ°dONLNdbѶèØ)15.°dONLNdeèHöâ(óHGlobalToLocal.°dONLNdrèâöî)A prÅô°dONLNduèîöØ) ocedurÓ°dONLNd{èØö≥)e∏Δ°dONLNd}è∏ö≈)    122°dONLNdÅöH•_(¢Hglue rgˆ°dONLNdáö_•|)outines
  12051. $°dONLNdèöÅ•ä)"20$°dONLNdëöä•é)    , |§°dONLNdìöé•õ)181.°dONLNdó•H∞p(≠HGrafPort.°dONLNdü•p∞ó)(
  12052.  data typemŸ°dONLNd™•ú∞•),92.°dONLNd≠∞Hªk(∏HGrafPtr.°dONLNd¥∞kªí)#
  12053.  data typemŸ°dONLNdø∞óª†),93dŸ°dONLNd¡∞†ª§)    , ‡Y°dONLNd√∞§ª®)1›I°dONLNdƒ∞®ª±)13°dONLNd«ªHΔÄ(√Hgraphics portsΔ<°dONLNd÷ªÖΔé)=92Ω<°dONLNdÿªéΔí)    –8º°dONLNdŸªìΔú)94°dONLNd‹ΔQ—â(ŒQ and window rÆ>°dONLNdËΔâ—ô)8ecor9g°dONLNdÏΔö—£)dsˇ˜°dONLNdÔΔß—´)1¸Á°dONLNdΔ´—¥)13°dONLNdÛ—Q‹É(ŸQsetting and rFÀ°dONLNd—É‹£)2estoringg°dONLNd    —®‹±)%93˛g°dONLNd —∞‹¥)–yÁ°dONLNd —µ‹æ)94
  12054.     H&4
  12055. H&  H &
  12056. ˇ·ˇ‚7^°dONLNd¸H    Q(HH    .°dONLNdHf*Handle.°dONLNdfç)
  12057.  data typemŸ°dONLNd"íõ),40dŸ°dONLNd$õü)    , ‡Y°dONLNd&ü®)44°dONLNd)H(g(%Hhandlesà°dONLNd1l(u)$40°dONLNd4(H3å(0Hheap compaction‰°dONLNdD(ê3ô)H36°dONLNdG3H>ñ(;Hheap fragmentation˙°dONLNdZ3õ>§)S35°dONLNd]>HIl(FHheap purIV°dONLNde>lI})$gingìy°dONLNdj>ÇIã)43äy°dONLNdl>ãIè)    –˘°dONLNdm>êIô)44°dONLNdpIHT_(QHheap. [⁄°dONLNdvI`Tl)SeeP«°dONLNdyIlTÊ)  application heap; system heap°dONLNdòTH_}(\Hhelp balloons2≥°dONLNd¶TÇ_è):185°dONLNd™_HjÅ(gH Help Manageru°dONLNd∑_Üjè)>10l°dONLNdπ_èjì)    , Áç°dONLNdª_ìj†)185.°dONLNdøjHuz(rH
  12058. HideWindow.°dONLNd…jzuÖ)2 prÅô°dONLNdÃjÖu†) ocedurÓ°dONLNd“j†u§)e∏Δ°dONLNd‘j©u≠)    1µ∂°dONLNd’j≠u∂)10°dONLNdÿuHÄã(}Hhigh-level events±ì°dONLNdÍuêÄô)H72.°dONLNdÌÄHãâ(àHHiliteControl.°dONLNd˙Äâãî)A prÅô°dONLNd˝ÄîãØ) ocedurÓ°dONLNdÄØã≥)e∏Δ°dONLNdÄ∏ã≈)    127+F°dONLNdÄΔã ), ¶Δ°dONLNd
  12059. Ä ã◊)148.°dONLNdãHñz(ìH
  12060. HiliteMenu.°dONLNdãzñÖ)2 prÅô°dONLNdãÖñ†) ocedurÓ°dONLNd!ã†ñ§)e∏Δ°dONLNd#ã©ñ∂)    159.°dONLNd'ñH°a(ûHHLock.°dONLNd,ña°l) prÅô°dONLNd/ñl°á) ocedurÓ°dONLNd5ñá°ã)e∏Δ°dONLNd7ñê°ô)    42ØΔ°dONLNd9ñô°ù)    , +F°dONLNd;ñû°ß)47.°dONLNd>°H¨Ñ(©H HOpenResFile.°dONLNdJ°Ñ¨ß)<     functionv°dONLNdT°¨¨µ)(54m°dONLNdV°µ¨π)    , ËÑ°dONLNdX°π¨¬)63.°dONLNd[¨H∑k(¥HHUnlock.°dONLNdb¨k∑v)# prÅô°dONLNde¨v∑ë) ocedurÓ°dONLNdk¨ë∑ï)e∏Δ°dONLNdm¨ö∑£)    424^8¿
  12061. j8u4k8u l8l
  12062. ˇ·ˇ‚7^°dONLNdp]8j;(g8I    .°dONLNdrs8~V*'ICON'.°dONLNdxsV~[) r≤°dONLNdzs\~r)esour„L°dONLNdsq~ç)ce type{‰°dONLNdásí~õ)!99°dONLNdä~8âL(Ü8icons~´°dONLNdê~QâZ)91u´°dONLNdí~Zâ^)    , Ò+°dONLNdî~^âg)99°dONLNdóâ8îo(ë8 Image Compr\Ô°dONLNd¢âoî≠)7ession Manager/â°dONLNd±â≤îª)C17.°dONLNd¥î8üj(ú8
  12063. InitCursor.°dONLNdæîjüu)2 prÅô°dONLNd¡îuüê) ocedurÓ°dONLNd«îêüî)e∏Δ°dONLNd…îôüù)    94F°dONLNd îûü¢), ØΔ°dONLNdÃî¢ü´)75.°dONLNdœü8™e(ß8    InitFonts.°dONLNdÿüe™p)- prÅô°dONLNd€üp™ã) ocedurÓ°dONLNd·üã™è)e∏Δ°dONLNd„üî™ò)    9.°dONLNd™8µ`(≤8InitGraf.°dONLNdÌ™`µk)( prÅô°dONLNd™kµÜ) ocedurÓ°dONLNdˆ™ܵä)e∏Δ°dONLNd¯™èµì)    94F°dONLNd˘™îµò), ØΔ°dONLNd˚™òµ•)181.°dONLNdˇµ8¿o(Ω8 InitWindows.°dONLNd
  12064. µo¿z)7 prÅô°dONLNdµz¿ï) ocedurÓ°dONLNdµï¿ô)e∏Δ°dONLNdµû¿¢)    9.°dONLNd¿8Àj(»8
  12065. InsertMenu.°dONLNd!¿jÀu)2 prÅô°dONLNd$¿uÀê) ocedurÓ°dONLNd*¿êÀî)e∏Δ°dONLNd,¿ôÀ¶)    154°dONLNd0À8÷v(”8Inside Macintosh¶°dONLNdAÀ{÷Ñ)Cxii|•°dONLNdDÀÖ÷â)
  12066. –¯%°dONLNdEÀâ÷ï)xiv°dONLNdI÷A·Ü(fiAcode conventions˚
  12067. °dONLNdZ÷ä·ì)I24Ú
  12068. °dONLNd\÷ì·ó)    –mä°dONLNd]÷ò·°)25°dONLNd`·AÏé(ÈAformat conventions
  12069. °dONLNds·ìÏü)RxiiiÑΰdONLNdw·üÏ£) –k°dONLNdx·§Ï∞)xiv°dONLNd|Ï8˜W(Ù8integers°dONLNdÖ˜AQ+     coer )°dONLNdâ˜R¢)cing to long integers7°dONLNdü˜ß∞)U47°dONLNd¢AQ(
  12070. Acoer )°dONLNd¶Rè)cing to pointersH)°dONLNd∑îù)B47°dONLNd∫8∑(8interapplication communicationio°dONLNdŸº≈)Ñ14`o°dONLNd€≈…)    –€Ô°dONLNd‹…“)17.°dONLNdfl8#e( 8    InvalRect.°dONLNdËe#p)- prÅô°dONLNdÎp#ã) ocedurÓ°dONLNdÒã#è)e∏Δ°dONLNdÛî#°)    123.°dONLNd˜#8.`(+8InvalRgn.°dONLNdˇ#`.k)( prÅô°dONLNd#k.Ü) ocedurÓ°dONLNd#Ü.ä)e∏Δ°dONLNd
  12071. #è.ú)    123.°dONLNd.89y(68IsDialogEvent.°dONLNd.y9ú)A     functionv°dONLNd%.°9Æ)(142°dONLNd)98D[(A8
  12072. item listsµ‰°dONLNd49`Dm)(135°dONLNd8D8Oo(L8 item numbers °dONLNdEDtOÅ)<135°dONLNdIO8Zµ(W8 items in alerts and dialog boxes˛‹°dONLNdjOπZΔ)Å136q\°dONLNdmO«ZÀ)–Ï‹°dONLNdnOÀZÿ)137
  12073. á8í4à8í â8â
  12074. ˇ·ˇ‚7^°dONLNdrz8á>(Ñ8J    °dONLNdtê8õb*
  12075. jump tableMÖ°dONLNdêgõp)/38
  12076. »8”4…8”  8 
  12077. ˇ·ˇ‚7^°dONLNdǪ8»@(≈8K    °dONLNdÑ—8‹X*keyboarxª°dONLNdã—X‹ç) d equivalentsdñ°dONLNdô—í‹ü):152◊°dONLNdú—ü‹£), Rñ°dONLNdû—§‹±)157°dONLNd¢‹AÁd(‰AhandlingÕm°dONLNd´‹iÁv)(160?Ì°dONLNdÆ‹wÁ{)–ªm°dONLNdØ‹{Áà)161°dONLNd≥ÁAÚD(ÔAr‡Ú°dONLNd¥ÁDÚb)eserved"N°dONLNdºÁhÚu)$160°dONLNd¿Ú8˝|(˙8key-down events!§°dONLNd–ÚÅ˝é)I148°dONLNd‘˝8p(8key-up events‹°dONLNd‚˝t})<79
  12078. 58@468@ 787
  12079. ˇ·ˇ‚7^°dONLNdÂ(85?(28L    °dONLNdÁ>8IJ*linesÖF°dONLNdÌ>OIX)89°dONLNdI8Tl(Q8 List ManagerÖ°dONLNd˝IqTu)91ÅÙ°dONLNd˛IuTy)1°dONLNdT8_e(\8 localization«I°dONLNdTj_s)252°dONLNd_8jë(g8localization guidelinesMt°dONLNd(_ñj£)^188°dONLNd,j8u[(r8    locking rcû°dONLNd5j[uû)#elocatable blocks›k°dONLNdGj¢u´)G42‘k°dONLNdIj´uØ)    –OΰdONLNdJj∞uπ)43°dONLNdMu8Äk(}8long integers°dONLNd[ÄAãQ+     coer )°dONLNd_ÄRãé)cing to integersF˚°dONLNdpÄìãú)A47°dONLNdsãAñQ(ìAcoer )°dONLNdwãRñè)cing to pointersH)°dONLNdàãîñù)B47°dONLNdãñ8°x(û8low-level events¶2°dONLNdúñ}°Ü)E72ˇ5<@ˇ ˇˇˇˇ@
  12080. ˇ·ˇ‚7^
  12081. 4*I¯, Palatino&e.3+ú"INDEX4⁄*˙¯
  12082. (‡*2484^*¿
  12083. j*u4k*u l*l
  12084. ˇ·ˇ‚7^,     Helvetica°dONLNd]*j4(g*M    °dONLNds*~ù*Macintosh Operating System*ã°dONLNds¢~¶)x1'{°dONLNds¶~™)1¢˚°dONLNds™~Æ)–{°dONLNd sØ~∏)12°dONLNd#~*â¿(Ü*"Macintosh script management system˘ñ°dONLNdF~ƒâÕ)ö13°dONLNdIâ*îí(ë*Macintosh system softwar9°dONLNdaâíîñ)hefl°dONLNdcâõîü)    3°dONLNdeî*ü[(ú* Macintosh Tò°dONLNdpî[üu)1oolbox_l°dONLNdwîzü~)7⁄Ï°dONLNdxî~üÇ)–Vl°dONLNdyîÉüá)1S\°dONLNdzîáüã)1°dONLNd|ü*™e(ß*major switchesB.°dONLNdãüj™w)@167°dONLNdè™*µP(≤*managersµÅ°dONLNdò™UµY)+61°dONLNdô™Zµ\).n¡°dONLNdö™\µz)     See alsoŒü°dONLNd£™zµ∏) system softwarÔ¬°dONLNd≤™∏µº)>e°dONLNd¥µ*¿(Ω*master pointer blocksÅ·°dONLNd µÑ¿ç)Z40°dONLNdÕ¿*Àh(»*master pointersÿt°dONLNd›¿lÀu)B40,
  12085. Courier.°dONLNd‡À*÷a(”* MaxApplZone.°dONLNdÎÀa÷l)7 prÅô°dONLNdÓÀl÷á) ocedurÓ°dONLNdÙÀá÷ã)e°dONLNdˆ÷3·D(fi3and .ÍT°dONLNd˙÷D·q)    ApplLimit.ÍT°dONLNd÷q·Æ)- global variableu∑°dONLNd÷≥·º)B33.°dONLNd·*ÏH(È*'MBAR'.°dONLNd·HÏM) r≤°dONLNd·NÏd)esour„L°dONLNd$·cÏ)ce type{‰°dONLNd,·ÑÏë)!154.°dONLNd0Ï*˜H(Ù*'MDEF'.°dONLNd6ÏH˜M) r≤°dONLNd8ÏN˜d)esour„L°dONLNd=Ïc˜)ce type{‰°dONLNdEÏјç)!52.°dONLNdH˜*R(ˇ*MemError.°dONLNdP˜Ru)(     functionv°dONLNdZ˜zá)(177°dONLNd^*K(
  12086. *memory°dONLNde3Y+    
  12087. allocating«p°dONLNdp^g)+35æp°dONLNdrgk)    , 9°dONLNdtlu)380°dONLNdvuy)    , ¨p°dONLNdxyÇ)40£p°dONLNdzÇÜ)    , °dONLNd|áê)42°dONLNd3#P( 3lockingDÏ°dONLNdáU#^)"42;Ï°dONLNdâ^#b)    –∑l°dONLNdäb#k)43°dONLNdç#3.;(+3or≈»°dONLNdè#;.o)ganization ofH?°dONLNdù#t.})929??°dONLNdü#}.Å)    –∫ø°dONLNd†#Å.ä)38°dONLNd£.39A(63pur´<°dONLNd¶.A9R)gingı_°dONLNd´.W9`)43Ï_°dONLNd≠.`9d)    –gfl°dONLNdÆ.e9n)44°dONLNd±9*Dr(A*Memory Manager—3°dONLNd¿9vDz)L1Œ#°dONLNd¡9zD~)1°dONLNd√D3OÜ(L3and application heapô›°dONLNdÿDãOî)X35ê›°dONLNd⁄DîOò)    – ]°dONLNd€DôO¢)36°dONLNdfiO3Z\(W3
  12088. data types¸»°dONLNdÈO`Zi)-39Û»°dONLNdÎOiZm)    –oH°dONLNdÏOnZw)40°dONLNdÔZ*eP(b*menu bar°dONLNd¯e3p:+     cr€ì°dONLNd˙e:pR)eating‹(°dONLNdeWp`)74°dONLNdp3{[(x3
  12089. specifying÷°dONLNdp`{m)-154°dONLNd{*Üo(É*menu commands°dONLNd!Ü3ëS+     keyboarxª°dONLNd(ÜSëà) d equivalentsdñ°dONLNd6Üçëë):1aÜ°dONLNd7Üëëö)19XÜ°dONLNd9Üöëû)    , ‘°dONLNd;Üûë´)152FÜ°dONLNd>ܨë∞), ¬°dONLNd@Ü∞ëΩ)157°dONLNdDë*úz(ô*menu item numbers*/°dONLNdVëúå)U156°dONLNdZú*ßX(§*
  12090. menu itemsôÙ°dONLNdeú]ßj)3151°dONLNdiß3≤W(Ø3    disablingº°dONLNdsß\≤i))162°dONLNdw≤3ΩU(∫3enabling\.°dONLNdÄ≤ZΩg)'162.°dONLNdÑΩ*»M(≈*MenuKey.°dONLNdãΩM»p)#     functionv°dONLNdïΩu»Ç)(160ËÑ°dONLNdòΩÇ»Ü), d°dONLNdöΩá»î)161°dONLNdû»*”g(–* Menu Manager°dONLNd´»l”u)B10°dONLNd≠»u”y)    , çî°dONLNdØ»y”Ü)151°dONLNd≤»á”ã)–{î°dONLNd≥»ã”ò)162°dONLNd∑”3fiA(€3intrüx°dONLNdª”Afi^)oduced§‘°dONLNd¬”cfig)"6°dONLNdƒfi*Èf(Ê* menu numbers0N°dONLNd—fikÈx)A156.°dONLNd’È*ÙH(Ò*'MENU'.°dONLNd€ÈHÙM) r≤°dONLNd›ÈNÙd)esour„L°dONLNd‚ÈcÙ)ce type{‰°dONLNdÍÈÑÙë)!152Ód°dONLNdÌÈëÙï)–i‰°dONLNdÓÈñÙ£)154°dONLNdÚÙ*ˇD(¸*menus†°dONLNd¯ÙIˇV)151ì°dONLNd˚ÙWˇ[)–é°dONLNd¸Ù[ˇh)162°dONLNdˇ3
  12091. X(3    adjusting¸ç°dONLNd
  12092. ˇ\
  12093. i))161o°dONLNdˇj
  12094. n)–Íç°dONLNdˇn
  12095. {)162°dONLNd
  12096. 3:(3cr€ì°dONLNd
  12097. :R)eating‹(°dONLNd
  12098. W`)74”(°dONLNd
  12099. `d)    , N®°dONLNd
  12100. er)152¡(°dONLNd"
  12101. rv)–<®°dONLNd#
  12102. wÑ)156°dONLNd'3 B(3defi∞‰°dONLNd+B Q)ned,∏°dONLNd/V c)151°dONLNd3 3+W((3    disablingº°dONLNd= \+i))162°dONLNdA+36^(33 dividers in϶°dONLNdM+b6o)/152_&°dONLNdP+p6t), ⁄¶°dONLNdR+t6Å)157°dONLNdV63AU(>3enabling\.°dONLNd_6ZAg)'162°dONLNdcA3L(I3handling selectionssZ°dONLNdwAÑLë)Q156Â⁄°dONLNdzAëLï)–aZ°dONLNd{AñL£)159°dONLNdL3W6(T3r‡Ú°dONLNdÄL6WJ)equirî°dONLNdÖLKWT)edÿ¿°dONLNdàLYWf)152.°dONLNdåW*b\(_*
  12103. MenuSelect.°dONLNdñW\b)2     functionv°dONLNd†WÑbë)(156ËÑ°dONLNd£Wëbï), d°dONLNd•Wñb£)161°dONLNd©b*mV(j* menu titles79°dONLNdµb[mh)1151°dONLNdπm*xà(u*minimum partition size–=°dONLNd–måxô)b168°dONLNd‘x*Éf(Ä*minor switchesÄn°dONLNd„xkÉx)A167°dONLNdÁÉ*éw(ã*modal dialog boxesy°dONLNd˙É|éâ)R133ÎÜ°dONLNd˝Éâéç)–g°dONLNd˛Éééõ)134ŸÜ°dONLNdÉõéü), U°dONLNdɆé≠)144«Ü°dONLNdÉ≠é±)–C°dONLNdÉ≤éø)148°dONLNd é3ô:(ñ3cr€ì°dONLNdé:ôR)eating‹(°dONLNdéWôd)145N®°dONLNdéeôi)– (°dONLNdéiôv)146°dONLNdô*§f(°*modal dialog fi‘°dONLNd+ôf§ö)<lter functionsÚðdONLNd:ôü§¨)9146eL°dONLNd=ô≠§±)–‡Ã°dONLNd>ô±§æ)148.°dONLNdB§*Øa(¨* ModalDialog.°dONLNdM§aØl)7 prÅô°dONLNdP§lØá) ocedurÓ°dONLNdV§áØã)e∏Δ°dONLNdX§êØù)    144+F°dONLNd[§ûØ¢), ¶Δ°dONLNd]§¢ØØ)146F°dONLNd`§∞Ø¥), îΔ°dONLNdb§¥Ø¡)167°dONLNdfØ*∫É(∑*modeless dialog boxes,d°dONLNd|Øà∫ï)^134û‰°dONLNdØï∫ô)–d°dONLNdÄØö∫ß)135剰dONLNdÉØß∫´), d°dONLNdÖب∫π)137z‰°dONLNdàØπ∫Ω)–ˆd°dONLNdâØΩ∫ )1444^¿˜°dONLNdç\"g)(d"cr€ì°dONLNdè\)gA)eating‹(°dONLNdñ\FgS)137N®°dONLNdô\TgX)– (°dONLNdö\Xge)138°dONLNdûg"rk(o"handling events in±_°dONLNd±gpr})N141#fl°dONLNd¥g~rÇ)–ü_°dONLNdµgÇrè)144°dONLNdπr}`(zmoods, syllogistic?Ü°dONLNdÃre}n)L23.°dONLNdœ}àP(Ö MoreMasters.°dONLNd⁄}Pà[)7 prÅô°dONLNd›}[àv) ocedurÓ°dONLNd„}vàz)e∏Δ°dONLNdÂ}àà)    41°dONLNdËàìi(êmouse-down events°dONLNd˙ì"ûR+     in menu bar°dONLNdìWûd)5156°dONLNd
  12104. û"©a(¶"in the menu bar«¥°dONLNdûe©r)C120°dONLNd©"¥Q(±"
  12105. in windows,°dONLNd)©V¥Z)41ˇ°dONLNd*©Y¥b)19ˆ°dONLNd,©b¥f)    –qú°dONLNd-©g¥t)123°dONLNd1¥ø](ºmouse-up eventsÁ^°dONLNdA¥aøj)H79fi^°dONLNdC¥jøn)    –Yfi°dONLNdD¥oøx)81°dONLNdGø ã(«movable modal dialog boxesÏ€°dONLNdbøè ú)v144.°dONLNdf ’7(“MoveTo.°dONLNdl 7’B) prÅô°dONLNdo B’]) ocedurÓ°dONLNdu ]’a)e∏Δ°dONLNdw f’j)    5.°dONLNdy’‡K(›
  12106. MoveWindow.°dONLNdÉ’K‡V)2 prÅô°dONLNdÜ’V‡q) ocedurÓ°dONLNdå’q‡u)e∏Δ°dONLNdé’z‡á)    121°dONLNdí‡Î5(Ëmoviesí/°dONLNdô‡:ÎC)!17°dONLNdúΈ:(ÛMovie Tæ´°dONLNd£Î9ˆS) oolbox°dONLNd™ÎYˆb) 17°dONLNd≠ˆ/(˛MPW€=°dONLNd±ˆ4=)57°dONLNd¥ I(     MultiFinder!ú°dONLNd¿N [)5165°dONLNdƒ b(multitasking enviræÍ°dONLNd÷ bÄ)Ionment≤ı°dONLNd› Öí)#165%u°dONLNd‡ ìó)–†ı°dONLNd· ó§)167
  12107. DO˜4EO˜ FF˜
  12108. ˇ·ˇ‚7^°dONLNdÂ7D"(AN    .°dONLNdÁMX_*NewHandleClear.°dONLNdıM_XÇ)F     functionv°dONLNdˇMáXê)(21m°dONLNdMêXî)    , ËÑ°dONLNdMîXò)1Ât°dONLNdMòX°)18.°dONLNdXcF(`    NewHandle.°dONLNdXFci)-     functionv°dONLNdXncw)(20m°dONLNdXwc{)    , ËÑ°dONLNdX{cÑ)42flÑ°dONLNd XÑcà)    , [°dONLNd"Xâcí)43.°dONLNd%cn7(kNewPtr.°dONLNd+c7nZ)     functionv°dONLNd5c_nh)(40m°dONLNd7chnl)    , ËÑ°dONLNd9clnp)1Ât°dONLNd:cpny)18.°dONLNd=ny7(vNewRgn.°dONLNdCn7yZ)     functionv°dONLNdMn_yh)(96.°dONLNdPyÑF(Å    NewWindow.°dONLNdYyFÑi)-     functionv°dONLNdcynÑr)(4ÒÑ°dONLNddyrÑv)–m°dONLNdeywÑ{)5ËÑ°dONLNdfy{Ñ), d°dONLNdhyÄÑâ)42[°dONLNdjyâÑç)    , ÷Ñ°dONLNdlyçÑë)1”t°dONLNdmyëÑö)12°dONLNdpÑè+(ånonr4.°dONLNdtÑ,èo)elocatable blocks°dONLNdÜè"öY(ó"advantages ofQ§°dONLNdîè^ög)<42°dONLNdóö"•U(¢"data type forÿb°dONLNd•öY•b)740°dONLNd®•"∞1(≠"defi∞‰°dONLNd¨•1∞@)ned,∏°dONLNd∞•E∞N)38°dONLNd≥∞ªD(∏ null events®Á°dONLNdø∞IªR)072üÁ°dONLNd¡∞RªV)    , g°dONLNd√∞Wªd)167°dONLNd«ª"ΔE(√"handlingÕm°dONLNd–ªJΔW)(173?Ì°dONLNd”ªXΔ\)–ªm°dONLNd‘ª\Δi)174
  12109. Û˛˜4Ù˛˜ ıı˜
  12110. ˇ·ˇ‚7^°dONLNdÿÊÛ#(O    .°dONLNd⁄¸P* OpenDeskAcc.°dONLNd¸Ps)7     functionv°dONLNdÔ¸xÖ)(159.°dONLNdÛ<(OpenRgn.°dONLNd˙<G)# prÅô°dONLNd˝Gb) ocedurÓ°dONLNdbf)e∏Δ°dONLNdkt)    96°dONLNdV(operating envirû’°dONLNdVt)=onment°dONLNd"(_(%"checking featuru_°dONLNd-_(q)=es of+°dONLNd3v()20"°dONLNd5(É)    , ùï°dONLNd7É(ê)178°dONLNd:ë(ï)–ãï°dONLNd;ï(¢)181°dONLNd?(3z(0operating-system events◊Æ°dONLNdW(~3á)e72.°dONLNdZ3>2(;OSErr.°dONLNd_32>Y)
  12111.  data typemŸ°dONLNdj3^>k),176°dONLNdn>I-(Fovalsÿ·°dONLNdt>2I;)89
  12112. vŘ4wŘ xx˜
  12113. ˇ·ˇ‚7^°dONLNdwiv!(sP    °dONLNdyä=*packagescï°dONLNdÇBäF))8fl°dONLNdÉFäJ), Zï°dONLNdÖKäT)20.°dONLNdàäïF(í    PaintRect.°dONLNdëäFïQ)- prÅô°dONLNdîäQïl) ocedurÓ°dONLNdöälïp)e∏Δ°dONLNdúäuï~)    89°dONLNdüï†B(ù
  12114. part codesÒ°dONLNd™ïG†K).1ˇ·°dONLNd´ïJ†S)19°dONLNdƆ´?(®
  12115. partitions_«°dONLNdπ†D´M)+29V«°dONLNdª†M´O)    .îá°dONLNdº†O´m)     See alsoÙe°dONLNd≈†m´Á)  application partitions; system °dONLNd´4∂V(≥4    partitionˇ5¯@ˇ ˇˇˇˇ@
  12116. ˇ·ˇ‚7^
  12117. 4HF, Palatino&e.3+∫"INDEX4⁄∫˙
  12118. (‡2494^H¿&    °dONLNd\Qgn(dQsizes of7°dONLNd    \sgÄ)"168°dONLNdgHrf(oHpatches´°dONLNdgkrt)#20°dONLNdrH}h(zHpatternsè°dONLNd!rm}v)%91,
  12119. Courier.°dONLNd$}Hàu(ÖH    PBHCreate.°dONLNd-}uàò)-     functionv°dONLNd7}ùà¶)(21°dONLNd:àHì_(êHpixelsP°dONLNdAàdìm)88.°dONLNdDìHûa(õHPoint.°dONLNdIìaûà)
  12120.  data typemŸ°dONLNdTìçûñ),87°dONLNdWûH©h(¶Hpointersߥ°dONLNd`ûm©v)%39°dONLNdc©Q¥a(±Qcoer )°dONLNdg©b¥û)cing to integersF˚°dONLNdx©£¥¨)A47°dONLNd{¥Qøa(ºQcoer )°dONLNd¥bø≤)cing to long integers7°dONLNdï¥∑ø¿)U47°dONLNdòøQ d(«Qto prRp°dONLNdùød )oceduræ›°dONLNd£ø ¿)es and functionsS°dONLNd¥ø≈ Œ)F46°dONLNd∑ H’`(“Hpoints“Ú°dONLNdæ e’n)86…Ú°dONLNd¿ n’r)    –Er°dONLNd¡ s’|)87°dONLNdƒ’H‡a(›HPPC Tñ˙°dONLNd…’`‡z)oolboxıŒ°dONLNd–’‡à)15°dONLNd”‡HÎP(ËHprCŸ°dONLNd’‡QÎ`)    efer5¸°dONLNdŸ‡`Î})ences fit°dONLNd·‡}Îá)les°dONLNdÂÎQˆX(ÛQcr€ì°dONLNdÁÎXˆp)eating‹(°dONLNdÓÎuˆ~)64”(°dONLNdÎ~ˆÇ)    –N®°dONLNdÒÎɈå)66°dONLNdÙˆQy(˛Qmanaging‚d°dONLNd˝ˆ}Ü),60Ÿd°dONLNdˇˆÜä)    –T‰°dONLNdˆãî)67°dONLNdQ t(    Qnames of“w°dONLNd y Ç)(61°dONLNd QT(Qr‡Ú°dONLNd To)eadingog°dONLNd t}) 61fg°dONLNd }Å)    –·Á°dONLNd Åä)64ÿÁ°dONLNd äé)    , Tg°dONLNd èò)74°dONLNd!Q"u(Qupdatingz°dONLNd*z"É))66q°dONLNd,É"á)    –ÏÄ°dONLNd-á"ê)67°dONLNd0"H-P(*HPrJí°dONLNd2"Q-`)    efer<µ°dONLNd6"`-è) ences folderXÙ°dONLNdC"î-ù)453°dONLNdF-H8P(5HprCŸ°dONLNdH-Q8c)    eferrø˛°dONLNdM-c8£)ed partition sizeAx°dONLNd_-®8µ)E168°dONLNdc8HCP(@HprCŸ°dONLNde8QCm)    ocesses°dONLNdmCQNl* backgrCΔ°dONLNdsClNÅ)ound¡°dONLNdxCÖNí)166°dONLNd|NQYx(VQ
  12121. context of˜û°dONLNdáN|Yâ)+167°dONLNdãYQda(aQcurrï°dONLNdèYadm)ent∫Ï°dONLNdìYrd)166°dONLNdódQo\(lQfor¡y°dONLNdöd\oh) egrh˙°dONLNdùdio~)oundÊG°dONLNd¢dÇoè)166°dONLNd¶oQzõ(wQswitching between~o°dONLNd∏o†z≠)O167°dONLNdºzHÖP(ÇHprCŸ°dONLNdæzQÖí)    ocessing options°dONLNdœÖQêy*
  12122. specifying÷°dONLNd⁄Ö~êã)-168Hù°dONLNd›Öåêê)–ƒ°dONLNdfiÖêêù)170°dONLNd‚êHõP(òHPrJí°dONLNd‰êQõã)    ocess ManagerEH°dONLNdÚêêõî)?1B8°dONLNdÛêîõò)1.°dONLNdıõH¶k(£HProcPtr.°dONLNd¸õk¶í)#
  12123.  data typemŸ°dONLNdõó¶†),46°dONLNd
  12124. ¶H±P(ÆHPrJí°dONLNd ¶Q±Å)     ogram-to-Pr≠í°dONLNd¶Å±È)0ogram Communications TÿG°dONLNd-¶Ë±)goolbox7°dONLNd4¶±) 15.°dONLNd7±Hºp(πHPtInRect.°dONLNd?±pºì)(     functionv°dONLNdI±òº°)(81.°dONLNdLºH«W(ƒHPtr.°dONLNdOºW«~)
  12125.  data typemŸ°dONLNdZºÉ«å),39dŸ°dONLNd\ºå«ê)    , ‡Y°dONLNd^ºê«ô)44°dONLNda«H“è(œHpull-down menusÍZ°dONLNdq«ì“†)K151\⁄°dONLNdt«°“•), ÿZ°dONLNdv«•“∑)152. ΔZ°dONLNd{«∑“”)See alsoËx°dONLNdÉ«”“Ô) menus°dONLNdä“H›V(⁄Hpur´<°dONLNdç“V›m)ging r°dONLNdì“n›±)elocatable blocksçfi°dONLNd•“µ›æ)G43Ñfi°dONLNdߓ曬)    –^°dONLNd®“√›Ã)44
  12126. 
  12127. H&4 H&  H &
  12128. ˇ·ˇ‚7^,     Helvetica°dONLNd´˝H
  12129. R(HQ    °dONLNd≠Hv*    QuickDrawtk°dONLNd∑{)39ÔΰdONLNd∏É), kk°dONLNd∫Ñç)10bk°dONLNdºçë)    , ›Î°dONLNdæëö)85‘ΰdONLNd¿öû)    –Pk°dONLNd¡ü¨)106°dONLNd≈Q)}(&Q capabilities∫U°dONLNd“Ç)Ü)195’°dONLNd”á)ã), ±U°dONLNd’ã)î)85°dONLNdÿ)Q4É(1Q drawing text»"°dONLNdÂ)à4ï)7101:¢°dONLNdË)ñ4ö)–∂"°dONLNdÈ)ö4ß)105°dONLNdÌ4Q?|(<Q initializingÒ"°dONLNd˙4Ä?Ñ)/9°dONLNd¸?HJ∑(GHQuickDraw global variablesL}°dONLNd?ºJ≈)t38°dONLNdJHUe(RHQuickTÑé°dONLNd JeUs)ime‘Æ°dONLNd$JxUÅ)17ÀÆ°dONLNd&JÅUÖ)    –G.°dONLNd'JÜUè)18
  12130. ÇHç&4ÉHç& ÑHÑ&
  12131. ˇ·ˇ‚7^°dONLNd*uHÇQ(HR    °dONLNd,ãHñ}*radio buttons°dONLNd:ñQ°¨+     handling user clicks onüÓ°dONLNdRñ±°æ)`142n°dONLNdUñø°√)–çÓ°dONLNdVñ√°–)144°dONLNdZ°H¨](©HRAMp∫°dONLNd^°b¨k)19°dONLNda¨H∑¶(¥Hrandom-access memoryÓ°dONLNdu¨¶∑™)^. ôn°dONLNdw¨™∑∂)Seeé[°dONLNdz¨∂∑Õ)  RAM4^8¿°dONLNd\8g;(d8r‡Ú°dONLNdÄ\;gÅ)ead-only memoryó—°dONLNdè\ÅgÖ)F. Q°dONLNdë\Ügí)See>°dONLNdî\íg©)  ROM.°dONLNdôg8rà(o8ReallocateHandle.°dONLNd©gàrì)P prÅô°dONLNd¨gìrÆ) ocedurÓ°dONLNd≤gÆr≤)e∏Δ°dONLNd¥g∑r¿)    43°dONLNd∑r8};(z8r‡Ú°dONLNd∏r;}l)eallocating rë‘°dONLNd≈rl}Ø)1elocatable blocks °°dONLNd◊r¥}Ω)H43°°dONLNdŸrΩ}¡)    –~!°dONLNd⁄r¡} )44°dONLNd›}8à;(Ö8r‡Ú°dONLNdfi};à_)    ectanglesÛó°dONLNdË}dàm))87Íó°dONLNdÍ}màq)    –f°dONLNdÎ}rà{)89]°dONLNdÌ}{à)    , ÿó°dONLNdÔ}àà)89.°dONLNdÚà8ìL(ê8Rect.°dONLNdˆàLìs)
  12132.  data typemŸ°dONLNdàxìÅ),88.°dONLNdì8ûV(õ8Region.°dONLNd
  12133. ìVû})
  12134.  data typemŸ°dONLNdìÇûã),90°dONLNdû8©;(¶8r‡Ú°dONLNdû;©T)egions+ã°dONLNd ûZ©c)89"ã°dONLNd"ûc©g)    –û °dONLNd#ûg©p)91°dONLNd&©A¥P(±Adefi∞‰°dONLNd*©P¥b)ning6k°dONLNd/©g¥p)95-k°dONLNd1©p¥t)    –®Î°dONLNd2©t¥})98°dONLNd5¥Aøm(ºA
  12135. drawing in◊˙°dONLNd@¥qøz)098°dONLNdCøA Z(«AemptyÖ°dONLNdIø_ h)96°dONLNdL 8’;(“8r‡Ú°dONLNdM ;’~)elocatable blocks°dONLNd_’A‡t+ data type forÿb°dONLNdm’x‡Å)739°dONLNdp‡AÎP(ËAdefi∞‰°dONLNdt‡PÎ_)ned,∏°dONLNdx‡dÎm)38°dONLNd{ÎAˆÑ(ÛAdisadvantages of3Ü°dONLNdåÎâˆí)H42°dONLNdèˆA^(˛AlockingDÏ°dONLNdóˆcl)"42;Ï°dONLNdôˆlp)    –∑l°dONLNdöˆpy)43°dONLNdùA I(    AprCŸ°dONLNdüJ t)     operties ofùa°dONLNd´x Å).42îa°dONLNd≠Å Ö)    –·°dONLNdÆÜ è)43°dONLNd± AO(Apur´<°dONLNd¥ O`)gingı_°dONLNdπ en)43Ï_°dONLNdª nr)    –gfl°dONLNdº s|)44°dONLNdøA"D(Ar‡Ú°dONLNd¿D"o) eallocatings"°dONLNdÃt"})043j"°dONLNdŒ}"Å)    –¢°dONLNdœÅ"ä)44°dONLNd“"A-i(*A    unlocking„Ç°dONLNd‹"m-v),42⁄Ç°dONLNdfi"v-z)    –V°dONLNdfl"{-Ñ)43°dONLNd‚-88\(58    ResEdit rÆ3°dONLNdÎ-\8r)$esourrÕ°dONLNd-r8î)    ce editor0∫°dONLNd˙-ô8¢)'57'∫°dONLNd¸-¢8¶)    –£:°dONLNd˝-¶8Ø)58ö:°dONLNdˇ-Ø8≥)    , ∫°dONLNd-¥8¡)152à:°dONLNd-¡8≈)–∫°dONLNd-Δ8”)154.°dONLNd    88C`(@8ResError.°dONLNd8`CÉ)(     functionv°dONLNd8àCë)(66m°dONLNd8ëCï)    , ËÑ°dONLNd8ïC¢)176[°dONLNd"8£Cß)–÷Ñ°dONLNd#8ßC¥)177°dONLNd'C8N;(K8r‡Ú°dONLNd(C;NQ)esour•å°dONLNd-CQN`)ce fiî°dONLNd2CaNk)les°dONLNd6NAYH(VAcr€ì°dONLNd8NHY`)eating‹(°dONLNd?NeYn)64”(°dONLNdANnYr)    –N®°dONLNdBNsY|)66°dONLNdEYAdQ(aAcurrï°dONLNdIYQd])ent∫Ï°dONLNdMYbdk)64°dONLNdPdAoP(lAdefi∞‰°dONLNdTdPo_)ned,∏°dONLNdXddom)51°dONLNd[oAzx(wAdetermining r.˝°dONLNdhoxzá)7efer! °dONLNdloázƒ)ence number ofˆ°dONLNd{o…z“)B52°dONLNd~zAÖi(ÇAmanaging‚d°dONLNdázmÖv),60Ÿd°dONLNdâzvÖz)    –T‰°dONLNdäz{ÖÑ)67°dONLNdçÖAêD(çAr‡Ú°dONLNdéÖDê_)eadingog°dONLNdïÖdêm) 61fg°dONLNdóÖmêq)    –·Á°dONLNdòÖqêz)64°dONLNdõêAõe(òAupdatingz°dONLNd§êjõs))66q°dONLNd¶êsõw)    –ÏÄ°dONLNdßêwõÄ)67°dONLNd™õ8¶T(£8ResourAó°dONLNd∞õT¶Ç)
  12136. ce Manageræ°dONLNdªõܶè)210µ°dONLNdΩõè¶ì)    , 0ô°dONLNdøõî¶ù)51'ô°dONLNd¡õù¶°)    –£°dONLNd¬õ°¶™)68°dONLNd≈¶A±(ÆAchecking for err›°dONLNd’¶±ã)>orsòú°dONLNdŸ¶ê±ô)66°dONLNd‹±8º;(π8r‡Ú°dONLNd›±;ºQ)esour•å°dONLNd‚±Qºq)ce maps=—°dONLNdͱvº)%56°dONLNd̺8«;(ƒ8r‡Ú°dONLNdÓº;«Q)esour•å°dONLNdÛºQ«q)ce pathsv˜°dONLNd¸ºv«)%52m˜°dONLNd˛º«É)    –Èw°dONLNdˇºÉ«å)54°dONLNd«8“;(œ8r‡Ú°dONLNd«;“Q)esour•å°dONLNd«Q“])ces7ú°dONLNd «b“k)51.ú°dONLNd«k“o)    –™°dONLNd«o“x)68°dONLNd“A›f(⁄Acompiled'±°dONLNd“k›t)*58°dONLNd›AËP(ÂAdefi∞‰°dONLNd"›PË_)ned,∏°dONLNd&›dËm)51°dONLNd)ËAÛ_(AstandarA∂°dONLNd0Ë_Û|)d types€}°dONLNd8ËÄÛâ)!55°dONLNd;ÛA˛K(˚Astr∞≤°dONLNd>ÛK˛`)
  12137. uctur« °dONLNdCÛ`˛n)e of∞°dONLNdHÛs˛|)56ß°dONLNdJÛ|˛Ä)    –"ì°dONLNdKÛÅ˛ä)58°dONLNdN˛J    ¨(Jspecifying using ResEdit„Ñ°dONLNdg˛∞    π)f57⁄Ñ°dONLNdi˛π    Ω)    –V°dONLNdj˛æ    «)58°dONLNdm    Jú(Jspecifying using Rez@°dONLNdÇ    °™)W57°dONLNdÖAV(Atypesb&°dONLNdã[d)55Y&°dONLNdçdh)    –‘¶°dONLNdéhq)56°dONLNdëA*å('Atypical locations ofπ◊°dONLNd¶ê*ô)O53°dONLNd©*A5v(2A using custom)æ°dONLNd∂*{5Ñ):60 æ°dONLNd∏*Ñ5à)    –ú>°dONLNdπ*à5ë)67°dONLNdº5A@w(=Ausing standarÅ‹°dONLNd…5w@|)6d{Ω°dONLNdÀ5Å@ä)
  12138. 59rΩ°dONLNdÕ5ä@é)    –Ó=°dONLNdŒ5é@ó)60°dONLNd—@AKµ(HA using to facilitate localization5–°dONLNdÚ@∫K√)y52°dONLNdıKAVr(SAusing to storÕ5°dONLNdKrV°)1e static data&{°dONLNdK¶VØ)451°dONLNdV8a;(^8r‡Ú°dONLNdV;aQ)esour•å°dONLNdVQau)    ce specifi•9°dONLNd#Vuaë)$cations e°dONLNd+Vñaü)!55°dONLNd.a8l;(i8r‡Ú°dONLNd/a;lQ)esour•å°dONLNd4aQlq)ce types.°dONLNd=lAw_(tA'DITL'.°dONLNdDldwm)#60˜°dONLNdFllwp), rÄ°dONLNdHlqw~)135.°dONLNdLwAÇ_(A'DLOG'.°dONLNdSwdÇm)#60˜°dONLNdUwlÇp), rÄ°dONLNdWwqÇ~)135.°dONLNd[ÇAç_(äA'ICON'.°dONLNdbÇdçm)#99.°dONLNdeçAò_(ïA'MBAR'.°dONLNdlçdòq)#154.°dONLNdpòA£_(†A'MDEF'.°dONLNdwòd£m)#52.°dONLNdz£AÆ_(´A'MENU'.°dONLNdÅ£dÆq)#152rÄ°dONLNdÑ£qÆu)–Ó°dONLNdÖ£uÆÇ)154.°dONLNdâÆAπ_(∂A'SIZE'.°dONLNdêÆdπq)#165ˇ2∏@ˇ ˇˇˇˇ@
  12139. ˇ·ˇ‚7^
  12140. 4*I¯, Palatino&e.3+ú"INDEX4⁄*˙¯
  12141. (‡*2504^*¿,
  12142. Courier    .°dONLNd\3gQ(d3'STR#'.°dONLNd\Vg_)#52˜°dONLNd    \^gb), rÄ°dONLNd \cgp)102.°dONLNdg3rQ(o3'WIND'.°dONLNdgVr_)#60°dONLNdr*}-(z*r‡Ú°dONLNdr-}C)esour•å°dONLNdrC}g)
  12143. ce types. S°dONLNd)rh}t)%See˚@°dONLNd,rs}x)  rôÚ°dONLNd.ry}è)esour^å°dONLNd3rè}µ)
  12144. ces, types.°dONLNd>}*àM(Ö*ResType.°dONLNdE}Màt)#
  12145.  data typemŸ°dONLNdP}yàÇ),55°dONLNdSà*ì-(ê*r‡Ú°dONLNdTà-ìb) esume eventsË?°dONLNdaàgìt):126°dONLNdeì3ûV(õ3handlingÕm°dONLNdnì[ûh)(170?Ì°dONLNdqìiûm)–ªm°dONLNdrìmûz)173°dONLNdvû*©V(¶*
  12146. Return key°dONLNdÅ©3¥ä+     in modal dialog boxesâK°dONLNdó©è¥ú)\146˚À°dONLNdö©ú¥†), wK°dONLNdú©°¥Æ)148°dONLNd†¥*ø>(º*Rez r·Ô°dONLNd•¥>øT)esour¶â°dONLNd™¥Tø≤)ce description language8°dONLNd¬¥∑ø¿)c57    8°dONLNdƒ¥¿øƒ)    , Ñ∏°dONLNdΔ¥ƒø—)152°dONLNd ø* ?(«*ROMÉ7°dONLNdŒøD M)19
  12147. ˜*4¯* ˘*˘
  12148. ˇ·ˇ‚7^,     Helvetica°dONLNd—Í*˜2(Ù*S    °dONLNd”* f*Scrap ManagerŒ“°dONLNd·j s)@10°dONLNd‰ *ô(*script management system. Z°dONLNd˛ ô•)oSeeG°dONLNd •Î)  Macintosh script °dONLNdE!ñ(Emanagement system°dONLNd%!*,g()*Script Manager⁄•°dONLNd4!k,t)A13°dONLNd7,*7b(4*script systems˚˜°dONLNdF,f7o)<13°dONLNdI7*Bb(?* SCSI Manageră°dONLNdV7gBp)=12.°dONLNdYB*MM(J*SectRgn.°dONLNd`BMMX)# prÅô°dONLNdcBXMs) ocedurÓ°dONLNdiBsMw)e∏Δ°dONLNdkB|MÖ)    97.°dONLNdnM*Xf(U* SelectWindow.°dONLNdzMfXq)< prÅô°dONLNd}MqXå) ocedurÓ°dONLNdÉMåXê)e∏Δ°dONLNdÖMïX¢)    126+F°dONLNdàM£Xß), ¶Δ°dONLNdäMßX¥)138.°dONLNdéX*ca(`* SetCtlValue.°dONLNdôXacl)7 prÅô°dONLNdúXlcá) ocedurÓ°dONLNd¢Xácã)e∏Δ°dONLNd§Xêcù)    144.°dONLNd®c*nk(k*SetDialogItem.°dONLNdµcknv)A prÅô°dONLNd∏cvnë) ocedurÓ°dONLNdæcënï)e∏Δ°dONLNd¿cönß)    139+F°dONLNd√c®n¨)–¶Δ°dONLNdƒc¨nπ)140.°dONLNd»n*y\(v*
  12149. SetMenuBar.°dONLNd“n\yg)2 prÅô°dONLNd’ngyÇ) ocedurÓ°dONLNd€nÇyÜ)e∏Δ°dONLNd›nãyò)    156.°dONLNd·y*ÑM(Å*SetPort.°dONLNdËyMÑX)# prÅô°dONLNdÎyXÑs) ocedurÓ°dONLNdÒysÑw)e∏Δ°dONLNdÛy|ÑÄ)    54F°dONLNdÙyÅÑÖ), ØΔ°dONLNdˆyÖÑé)94¶Δ°dONLNd¯yéÑí)    , "F°dONLNd˙yìÑó)16°dONLNd˚yóц)136°dONLNd˝y†ѧ)    , ë∂°dONLNdˇy§ѱ)1386°dONLNdy≤Ñ∂), ∂°dONLNdy∂Ñ√)146.°dONLNdÑ*èM(å*SetRect.°dONLNdÑMèX)# prÅô°dONLNdÑXès) ocedurÓ°dONLNdÑsèw)e∏Δ°dONLNdÑ|èÄ)    44F°dONLNdÑÅèÖ), ØΔ°dONLNdÑÖèé)89¶Δ°dONLNdÑéèí)    , "F°dONLNd!Ñìè†)104.°dONLNd%è*ö\(ó*
  12150. SetResFile.°dONLNd/è\ög)2 prÅô°dONLNd2ègöÇ) ocedurÓ°dONLNd8èÇöÜ)e∏Δ°dONLNd:èãöî)    54.°dONLNd=ö*•\(¢*
  12151. SetWRefCon.°dONLNdGö\•g)2 prÅô°dONLNdJög•Ç) ocedurÓ°dONLNdPöÇ•Ü)e∏Δ°dONLNdRöã•è)    1µ∂°dONLNdSöè•ò)15¨∂°dONLNdUöò•ú)    , (6°dONLNdWöù•°)1%&°dONLNdXö°•™)18.°dONLNd[•*∞\(≠*
  12152. ShowWindow.°dONLNde•\∞g)2 prÅô°dONLNdh•g∞Ç) ocedurÓ°dONLNdn•Ç∞Ü)e∏Δ°dONLNdp•ã∞è)    1µ∂°dONLNdq•è∞ò)18°dONLNdt∞*ªy(∏*Shutdown ManagerG°dONLNdÖ∞~ªá)T12.°dONLNdàª*Δ\(√*
  12153. SignedByte.°dONLNdíª\ΔÉ)2
  12154.  data typemŸ°dONLNdùªàΔë),39dŸ°dONLNdüªëΔï)    , ‡Y°dONLNd°ªïΔû)44°dONLNd§Δ*—?(Œ*size rLÛ°dONLNd™Δ?—U)esourç°dONLNdØΔU—a)ces£ù°dONLNd≥Δe—r)168.°dONLNd∑—*‹H(Ÿ*'SIZE'.°dONLNdΩ—H‹M) r≤°dONLNdø—N‹d)esour„L°dONLNdƒ—c‹)ce type°dONLNdË3Áx(‰3sample Rez inputB√°dONLNd›‹}Áä)J169°dONLNd·Á3ÚU(Ô3    setting flÁ»°dONLNdÎÁUÚl)"ags of °dONLNdÚÁqÚ~)168°dONLNdˆÚ3˝í(˙3specifying partition sizeˆ°dONLNdÚó˝§)d165°dONLNd˝*Å(*Sound Input Managerôä°dONLNd(˝Üä)\1ñz°dONLNd)˝äé)1°dONLNd+*i(*Sound Manageri°dONLNd9nr)D1f°dONLNd:rv)1°dONLNd<*>(*stack*†°dONLNdBCL)33°dONLNdE*)W(&* stack frameûa°dONLNdQ\)e)234°dONLNdT)*4O(1*
  12155. stack snifZ5°dONLNd^)O4Y)%fer™®°dONLNdb)^4g)33°dONLNde4*?H(<*Standar)Æ°dONLNdl4I?Ç)d File Packageπ·°dONLNd{4Ü?è)=10.°dONLNd~?*JW(G*    StillDown.°dONLNdá?WJz)-     functionv°dONLNdë?Jà)(80.°dONLNdîJ*UH(R*'STR#'.°dONLNdöJHUM) r≤°dONLNdúJNUd)esour„L°dONLNd°JcU)ce type{‰°dONLNd©JÑUç)!52r‰°dONLNd´JçUë)    , Ód°dONLNd≠JëUû)102.°dONLNd±U*`C(]*Str15.°dONLNd∂UC`j)
  12156.  data typemŸ°dONLNd¡Uo`x),45.°dONLNdƒ`*kH(h*Str255.°dONLNd `Hko)
  12157.  data typemŸ°dONLNd’`tk}),45.°dONLNdÿk*vC(s*Str27.°dONLNd›kCvj)
  12158.  data typemŸ°dONLNdËkovx),45.°dONLNdÎv*ÅC(~*Str31.°dONLNdvCÅj)
  12159.  data typemŸ°dONLNd˚voÅx),45.°dONLNd˛Å*åC(â*Str63.°dONLNdÅCåj)
  12160.  data typemŸ°dONLNdÅoåx),45.°dONLNdå*óf(î* StringHandle.°dONLNdåfóç)<
  12161.  data typemŸ°dONLNd(åíóõ),45.°dONLNd+ó*¢W(ü*    StringPtr.°dONLNd4óW¢~)-
  12162.  data typemŸ°dONLNd?óÉ¢å),45°dONLNdB¢*≠D(™*strings°dONLNdJ≠3∏T+     drawing«µ°dONLNdR≠Y∏])&54^¿˜°dONLNdT\"g2(d"in Ckc°dONLNdY\7g@)46°dONLNd\g"rD(o"    in Pascal”á°dONLNdfgIrR)'45°dONLNdir}V(zsuspend events3)°dONLNdxr[}h)B126°dONLNd|}"àE(Ö"handlingÕm°dONLNdÖ}JàW)(170?Ì°dONLNdà}Xà\)–ªm°dONLNdâ}\ài)173°dONLNdçàì?(ê    switching°dONLNdóì"û>+     contextŸW°dONLNdüìCûP)!167°dONLNd£û"©9(¶"majorÌ+°dONLNd©û=©J)167°dONLNd≠©"¥:(±"minor+k°dONLNd≥©?¥L)167.°dONLNd∑¥øP(º SystemClick.°dONLNd¬¥Pø[)7 prÅô°dONLNd≈¥[øv) ocedurÓ°dONLNdÀ¥vøz)e∏Δ°dONLNdÕ¥øå)    121.°dONLNd—ø K(«
  12163. SystemEdit.°dONLNd€øK n)2     functionv°dONLNdÂøs Ä)(159°dONLNdÈ ’`(“system extensionsù°dONLNd˚ e’n)L20°dONLNd˛’‡=(›System fi«˜°dONLNd’=‡C)$le.    °dONLNd
  12164. ’I‡R) 20°dONLNd‡Îu(Ësystem global variablesé°dONLNd%‡zÎÉ)a31Ö°dONLNd'‡ÉÎá)    , é°dONLNd)‡àÎï)188°dONLNd-ΈJ(Û system heapT°dONLNd9ÎOˆX)631°dONLNd<ˆY(˛system partitionÜ‘°dONLNdMˆ^g)E29}‘°dONLNdOˆgk)    –˘T°dONLNdPˆkt)31T°dONLNdRˆtv)    ..°dONLNdSˆwï)     See alsoçÚ°dONLNd\ˆïÎ) system heap; system °dONLNdq4 r(    4global variables°dONLNdÇ :(system r‘Æ°dONLNdä :P)!esourôH°dONLNdè P\)ces+X°dONLNdì aj)52°dONLNdñ"U(system softwarcc°dONLNd§U"Y)<e.#°dONLNd¶^"b)    6©£°dONLNdßb"f)–%#°dONLNd®g"p)19
  12165. OZ˜4PZ˜ QQ˜
  12166. ˇ·ˇ‚7^°dONLNd´BO (LT    °dONLNd≠Xc*T*‹°dONLNdÆXcb)erminal Manager
  12167. $°dONLNdæXgcp)I19°dONLNd¡cn'(ktext°dONLNdΔn"y{+     centering in a window8(°dONLNd‹nÄyÑ)^5≥®°dONLNd›nÑyà), /(°dONLNdflnâyç)1,°dONLNd‡nçyñ)13°dONLNd„y"ÑC(Å"drawing«µ°dONLNdÎyHÑL)&5C5°dONLNdÏyMÑQ), æµ°dONLNdÓyQÑ^)10115°dONLNdÒy_Ñc)–¨µ°dONLNdÚycÑp)105°dONLNdˆÑ"èY(å"setting font ofá°dONLNdÑ^èk)<104°dONLNd
  12168. è"öX(ó"setting size ofH°dONLNdè]öj);104°dONLNdö•(¢T*‹°dONLNdö•:)extEdit¸ù°dONLNd'ö>•G) 10Ûù°dONLNd)öG•K)    , o°dONLNd+öL•Y)102.°dONLNd/•∞A(≠TextFont.°dONLNd7•A∞L)( prÅô°dONLNd:•L∞g) ocedurÓ°dONLNd@•g∞k)e∏Δ°dONLNdB•p∞})    104°dONLNdF∞ªx(∏text service componentsSÛ°dONLNd^∞}ªÜ)d14°dONLNdaªΔ(√T*‹°dONLNdbªΔr)ext Services ManagerΩæ°dONLNdwªvΔ)X14.°dONLNdzΔ—A(ŒTextSize.°dONLNdÇΔA—L)( prÅô°dONLNdÖΔL—g) ocedurÓ°dONLNdãΔg—k)e∏Δ°dONLNdçΔp—})    104°dONLNdë—‹(ŸT*‹°dONLNdí—‹K)ext Utilities!°dONLNd†—P‹Y)213.°dONLNd£‹ÁF(‰    TickCount.°dONLNd¨‹FÁi)-     functionv°dONLNd∂‹nÁ{)(188.°dONLNd∫ÁÚ2(ÔTicks.°dONLNdøÁ2Úo) global variable c°dONLNd–ÁtÚ})B31c°dONLNd“Á}ÚÅ)    , }„°dONLNd‘ÁÅÚé)188°dONLNdÿÚ˝(˙TðdONLNdŸÚ˝R) ime Managerá°dONLNdÂÚW˝`)912°dONLNdË˝7(    title barëΩ°dONLNdÚ˝<@)#1é≠°dONLNdÛ˝@D)1ãù°dONLNdÙ˝DH)1.°dONLNdˆP( TrackGoAway.°dONLNdPs)7     functionv°dONLNd xÅ)(79m°dONLNdÅÖ)    , ËÑ°dONLNdÖí)128°dONLNde(tracking the mouseÌq°dONLNd&ir)P79‰q°dONLNd(rv)    –_Ò°dONLNd)wÄ)81°dONLNd,)0(&tracks¥¢°dONLNd35)>)17°dONLNd6)4T(1transfer modescðdONLNdE)Y4f)@101°dONLNdI4?c(<trap dispatch table∞°dONLNd]4g?t)N181°dONLNda?JN(G trap numbers±T°dONLNdn?SJ`):181°dONLNdrJUI(R type casting–\°dONLNdJMUV)447°dONLNdÇU`=(]    type coerfi`°dONLNdãU=`M)$cion\°dONLNdêUS`\)47
  12169. çò˜4éò˜ èè˜
  12170. ˇ·ˇ‚7^°dONLNdìÄç"(äU    °dONLNdïñ°F* unlocking r4°dONLNd†ñG°ä).elocatable blocks|°dONLNd≤ñé°ó)G42s°dONLNd¥ñó°õ)    –ÓÅ°dONLNdµñõ°§)43°dONLNd∏°¨Q(©update events°dONLNdΔ¨"∑n+     and activate events˛@°dONLNd⁄¨r∑)P126ˇÄ@ˇ ˇˇˇˇ@
  12171. ˇ·ˇ‚7^
  12172. 4HF, Palatino&e.3+∫"INDEX4⁄∫˙
  12173. (‡2514^H¿&    °dONLNd\Qgt(dQhandlingÕm°dONLNd    \ygÜ)(123?Ì°dONLNd \ágã)–ªm°dONLNd\ãgò)125°dONLNdgQr®(oQin modal dialog boxesâK°dONLNd'g≠r∫)\147°dONLNd+rH}Y(zHuser_ƒ°dONLNd/rY}t)-centeroº°dONLNd6rt}ö)    ed designQ¡°dONLNd@rü}®)+71H¡°dONLNdBr®}¨)    , ƒA°dONLNdDr¨}µ)79,
  12174. Courier.°dONLNdG}Hàz(ÖH
  12175. UseResFile.°dONLNdQ}zàÖ)2 prÅô°dONLNdT}Öà†) ocedurÓ°dONLNdZ}†à§)e∏Δ°dONLNd\}©à≤)    64°dONLNd_àHìp(êH
  12176. user itemsœd°dONLNdjàuìÇ)-137°dONLNdnìQûx(õQ
  12177. setting up≈œ°dONLNdyì}ûä),1398O°dONLNd|ìãûè)–≥œ°dONLNd}ìèûú)140
  12178. ÀH÷&4ÃH÷& ÕHÕ&
  12179. ˇ·ˇ‚7^,     Helvetica°dONLNdÅæHÀP(»HV    °dONLNdÉ‘HflN*V˘p°dONLNdÑ‘Mflê)enn Diagrammer!Ä°dONLNdì‘ñflü)I21Ä°dONLNdï‘üfl£)    –î°dONLNdñ‘£fl¨)24°dONLNdôflHÍN(ÁHV˘p°dONLNdöflMÍ´)ertical Retrace ManagerZz°dONLNd≤fl∞Íπ)c12°dONLNdµÍHıN(ÚHVz@°dONLNd∂ÍNı≠)irtual Memory ManageròΩ°dONLNdÃÍ≤ıª)d12
  12180. "H-&4#H-& $H$&
  12181. ˇ·ˇ‚7^°dONLNdœH"T(HWP°dONLNd–T"k) , X, Ò@°dONLNd’j"r)Y°dONLNd÷q"Ä), Z    .°dONLNd⁄+H6â(3HWaitNextEvent.°dONLNdÁ+â6¨)A     functionv°dONLNdÒ+±6∫)(75m°dONLNdÛ+∫6æ)    , ËÑ°dONLNdı+æ6«)78flÑ°dONLNd˜+«6À)    , [°dONLNd˘+Ã6Ÿ)123ÕÑ°dONLNd¸+Ÿ6›), I°dONLNd˛+fi6Î)167ªÑ°dONLNd+Î6Ô), 7°dONLNd+6˝)173©Ñ°dONLNd+˝6), %°dONLNd+6)181°dONLNd 6QAï(>Qand multitasking‹Ω°dONLNd6ôA¶)H170°dONLNd!AHLQ(IHW¯p°dONLNd"APLè)indow Manager⁄À°dONLNd0AîLò)D6VK°dONLNd1AôLù), —À°dONLNd3AùL°)9MK°dONLNd4A¢L¶), »À°dONLNd6A¶LØ)10øÀ°dONLNd8AØL≥)    , ;K°dONLNd:A¥L¡)109≠À°dONLNd=A¡L≈)–)K°dONLNd>AΔL”)130.°dONLNdBLHWz(TH
  12182. WindowPeek.°dONLNdLLzW°)2
  12183.  data typemŸ°dONLNdWL¶W™),1j…°dONLNdXL™W≥)13°dONLNd[WHbà(_Hwindow pointer=˝°dONLNdjWçbë)E5.°dONLNdlbHmu(jH    WindowPtr.°dONLNdubumú)-
  12184.  data typemŸ°dONLNdÄb°m•),1j…°dONLNdÅb•mÆ)13°dONLNdÑmHxo(uHwindow rCÍ°dONLNdåmox)'ecorœ°dONLNdêmxÑ)d»Ù°dONLNdímâxç)
  12185. 5.°dONLNdîxHÉÑ(ÄH WindowRecord.°dONLNd†xÑÉ´)<
  12186.  data typemŸ°dONLNd´x∞É¥),1j…°dONLNd¨x¥ÉΩ)12°dONLNdØÉHéo(ãHwindow rCÍ°dONLNd∑Éoé)'ecorœ°dONLNdªÉéà)dsdONLNdæÉçéë)1íì°dONLNdøÉëéö)12°dONLNd¬éQôT(ñQr‡Ú°dONLNd√éTôc)efer”°dONLNd«écô¢)ence constant in÷|°dONLNdÿéßô´)D1”l°dONLNdŸé´ô¥)15 l°dONLNd€é¥ô∏)    , EÏ°dONLNd›éπôΩ)1B‹°dONLNdfiéΩôΔ)16°dONLNd·ôH§m(°HwindowsÒÁ°dONLNdÈôq§~))109dg°dONLNdÏô§É)–flÁ°dONLNdÌôɧê)130°dONLNdÒ§QØx(¨Q
  12187. activatingC”°dONLNd¸§}Øä),125∂S°dONLNdˇ§äØé)–1”°dONLNd§èØú)127°dONLNdØQ∫h(∑QactiveXæ°dONLNd Øm∫z)125°dONLNd∫Q≈î(¬Qand dialog boxesF°dONLNd ∫ô≈¶)H109°dONLNd$≈Q–õ(ÕQand graphics ports0ê°dONLNd7≈†–§)O1-Ä°dONLNd8≈§–≠)13°dONLNd;–Q€m(ÿQclosingðdONLNdC–r€)!128àL°dONLNdF–€É)–ðdONLNdG–Ñ€ë)130vL°dONLNdJ–ë€ï), ÒðdONLNdL–)176°dONLNdP€QÊX(„Qcr€ì°dONLNdR€XÊp)eating‹(°dONLNdY€uÊy)4°dONLNd[ÊQÒX(ÓQcr€ì°dONLNd]ÊXÒÆ)eating a new window2°dONLNdqÊ≥Ò∑)[1/°dONLNdrÊ∑Ò¿)15&°dONLNdtÊ¿Òƒ)    –°Å°dONLNduʃÒ»)1ûq°dONLNdvʻҗ)19°dONLNdyÒQ¸Ç(˘Q deactivatingt°dONLNdÜÒá¸î)6145°dONLNdä¸Qã(Qdesk accessoryäf°dONLNdô¸êî)?1áV°dONLNdö¸îù)14°dONLNdùQÉ(Q dialog boxes€Ø°dONLNd™áã)61ÿü°dONLNd´ãî)14°dONLNdÆQy(QdocumentΩ°dONLNd∑~Ç)-1≠°dONLNd∏Çã)14°dONLNdªQ(u(%QdraggingEU°dONLNdƒz(á))121°dONLNd»(Q3ò(0Qdrawing content rîΔ°dONLNdŸ(ò3Æ)Gegion∞°dONLNdfl(≥3¿)124Ö0°dONLNd‚(¿3ƒ)–∞°dONLNd„(≈3“)125°dONLNdÁ3Q>t(;Q    events in¶2°dONLNdÒ3y>})(1£"°dONLNdÚ3}>Ü)19ö"°dONLNdÙ3Ü>ä)    –¢°dONLNdı3ã>ò)127°dONLNd˘>QI_(FQintrüx°dONLNd˝>_I|)oduced§‘°dONLNd>ÅIé)"109°dONLNdIQT´(QQmouse-down events in=A°dONLNdI∞T¥)_1:1°dONLNdI¥TΩ)1911°dONLNd IΩT¡)    –¨±°dONLNd!I¡TŒ)123°dONLNd%TQ_s(\Q    origin inË√°dONLNd/Tw_{)&6°dONLNd1_Qjo(gQparts of?`°dONLNd:_tjx)#1<P°dONLNd;_xjÅ)103P°dONLNd=_ÅjÖ)    –Æ–°dONLNd>_Öjâ)1´¿°dONLNd?_âjí)12°dONLNdBjQu~(rQ positioning!n°dONLNdNjÉuá)21^°dONLNdOjáuê)18°dONLNdRuQÄ}(}Qsetting titleTΰdONLNd`uÇÄÜ)11Q€°dONLNdauÜÄè)18°dONLNddÄQãf(àQtypesb&°dONLNdjÄkãx)109‘¶°dONLNdmÄxã|), P&°dONLNdoÄ}ãÅ)1M°dONLNdpÄÅãä)13D°dONLNdrÄäãé)    –øñ°dONLNdsÄéãí)1ºÜ°dONLNdtÄíãõ)15°dONLNdwãQñu(ìQupdatingz°dONLNdÄãzñ~))1v°dONLNdÅã~ñá)18m°dONLNdÉãáñã)    , Èp°dONLNdÖããñò)123[°dONLNdàãôñù)–◊p°dONLNdâãùñ™)125°dONLNdçñH°Q(ûHW£Ä°dONLNdéñP°w)
  12188. orldScriptÀ°dONLNdôñ|°Ö),134^8¿ˇ"@ˇ ˇˇˇˇ@
  12189. ˇ·ˇ‚7^
  12190. 4*F¯, PalatinoL .f+ú"THE APPLE PUBLISHING SYSTEM4⁄ú¯ ^ú^¯4fú¿D    °dONLNddúoØ*JThis Ü`°dONLNddØo;)"Apple manual was written, edited, °dONLNd'oúz;(wú%and composed on a desktop publishing °dONLNdLzúÖ“* system using ^Ú°dONLNdYz“Ö)6Apple Macintosh °dONLNdiÖúê-(çú computers and FrameMaker softwarsâ°dONLNdâÖ-ê5)ëe. °dONLNdåêúõ§(òúPrJí°dONLNdéê•õ‹)    oof pages wer¢ƒ°dONLNdõê‹õÍ)7e crÜ◊°dONLNdüêÍõ) eated on an 0≈°dONLNd´êõ4)0Apple °dONLNd±õú¶∫(£úLaserWcb°dONLNd∑õ∫¶”)riter IIëß°dONLNdøù”•·)NTX    Sù°dONLNd¬õ‚¶ˇ) printerg°dONLNd õˇ¶/). Final page °dONLNd◊¶ú±”(Æúnegatives werã˛°dONLNd‰¶”±)7 e output dir∂Ë°dONLNd¶±)/ectly frŒ°dONLNd¯¶±>)om text °dONLNd±úº°(πúfiÏC°dONLNd±°ºΔ)
  12191. les on an “°dONLNd ±Δºÿ)%AGFÛÅ°dONLNd±ÿºfl)An°dONLNd±flºÍ) Prvc°dONLNd±Íº?) oSet 9800 imagesetterS°dONLNd(±?ºC)U. °dONLNd*ºú«÷(ƒúLine art was crfl©°dONLNd9º÷«): eated using °dONLNdE«ú“∂(œúAdobe¨°dONLNdX≈∑ÕΩ(À∑™    Ôß°dONLNdY«Ω“ø+ -g°dONLNd[«¿“Á) Illustrator?@°dONLNdf«Á“)' . PostScriptÂj°dONLNdÄ≈Õ(À™    Ωe°dONLNdÇ«“-+, the °dONLNdà“ú›$(⁄ú"page-description language for the °dONLNd™›úË∫* LaserWcb°dONLNd∞›∫Ë )riterü    °dONLNdµ› Ë), was developed by ˘Ö°dONLNd»›Ë4)NAdobe °dONLNdŒËúÛÙ(úSystems Incorporated.°dONLNd‰˘ú°*T*‹°dONLNd¢°Ï)ext type is PalatinoWé°dONLNd˜ÏˇÒ(˝Ï®    ê_°dONLNd    ˘ÒA+ and display type is °dONLNdú¡( ú    Helvetica3√°dONLNd5¬
  12192. «(¬®    lî°dONLNd7«Ò+ . Bullets arû°dONLNdCÒ)* e ITC Zapf °dONLNdNú¿(úDingbatsg¬°dONLNdV¿≈(¿®    †ì°dONLNdW≈(+. Some elements, such as °dONLNdpú%§("úprCŸ°dONLNdr•%Í)    ogram listings, ar4°dONLNdÑÍ%)E    e set in π°dONLNdç%@)Apple CourierퟰdONLNdö@%B)9.°dONLNdú9úD≠(AúThe æ°dONLNd†9≠D)Inside Macintosh: Overview y¢°dONLNdª9D)iT$~°dONLNdº9D.)eam:°dONLNd¡JúS∫(QúWRITER    °dONLNd»Tú_°* TðdONLNd…T°_≠)im BÏ°dONLNdÃTÆ_ƒ)Monr:Ñ°dONLNd–Tƒ_Õ)oe°dONLNd”dúmŸ(kú DEVELOPMENT£°°dONLNdfidŸm„)=ALso°dONLNd‡d‰m¯)  EDIT˙£°dONLNdÂd¯m)OR    °dONLNdËnúyø(vúAntonio vE°dONLNdnøyÿ)#Padial°dONLNd˜~úá√(ÖúILLUSTRAB    °dONLNdˇ~√á«)'T:°dONLNd~»á”)OR    °dONLNdàúì∑(êúPeggy eç°dONLNd    à∑ìÃ)Kunz°dONLNdòú°Á(üúPRODUCTION EDITø°dONLNdòË°˜)LORS    °dONLNd!¢ú≠°(™úT*‹°dONLNd"¢°≠®)er÷é°dONLNd$¢®≠∂)esa ß=°dONLNd(¢∑≠˚)Lujan, Josephine ºé°dONLNd9¢˚≠)DManuele°dONLNdA≤úª‡(πúPROJECT LEADER    °dONLNdPºú«º*     Patricia ≈®°dONLNdYºº«fi) Eastman°dONLNdaÃú’‚(”úCOVER DESIGNER    °dONLNdp÷ú·Ω* Barbara ≥:°dONLNdx÷Ω·÷)!Smyth°dONLNd~¯ú¡(ú    The EntirWh°dONLNdᯡ«)%e flË°dONLNd⯫)Inside MacintoshÖ˛°dONLNdô¯)? Tnö°dONLNdõ¯)eam°dONLNdüú›( ú(1992 Snapshot):°dONLNd∞ú‡*PROJECT LEADER    °dONLNdøú)º*     Patricia ≈®°dONLNd»º)fi) Eastman°dONLNd–.ú7◊(5ú LEAD WRITERS    °dONLNd›8úC≥* Dave Ñ≥°dONLNd‚8≥C‹) Bice, Paul Ä\°dONLNdÌ8‹C)) Black, Rob óß°dONLNd¯8C2),
  12193. Dearborn, °dONLNdCúNÆ(KúSharHL°dONLNdCÆN∫)on ¢°dONLNd    C∫N‰)
  12194. Everson, TeF°dONLNdC‰N)*im (f°dONLNdCÒN)Monr˛°dONLNdCN)oe°dONLNdSú\ø(ZúWRITERS    °dONLNd%]úh≥* Dave Ñ≥°dONLNd*]≥h‹) Bice, Paul Ä\°dONLNd5]‹h))Black, Patria 2¥°dONLNdC]h)4Brá°dONLNdE]h/)    own, °dONLNdJhús∞(púJulie ¢8°dONLNdPh∞sÌ)Callahan, Sean Ä:°dONLNd_hÌs)=Cotter¬Ç°dONLNdehs    ), °dONLNdgsú~Æ({úRob î®°dONLNdksÆ~Í)Dearborn, Dee Ø°dONLNdysÍ~)<EduarÊ≥°dONLNd~s~)do, °dONLNdÇ~úâ¥(ÜúDoug ıÒ°dONLNdá~¥âŒ)Engfer»◊°dONLNdç~Œâ‰), Shar £°dONLNdì~ÂâÒ)on fl°dONLNdñ~Òâ)     Everson, °dONLNdüâúî©(ëúEd ±Ç°dONLNd¢â©î›) Fernandez, T“v°dONLNdÆâ‹îÌ)3ony (°dONLNd≤âÓî)    Francis, °dONLNdªîúü≤(úúGary ñ°dONLNd¿î≤üÏ)Hillerson, Marlı°dONLNdŒîÏüÛ):q Ø{°dONLNd–îÛü ) Laube, Sue l°dONLNd€î!ü>).LuttnerÜÈ°dONLNd‚î>üB), °dONLNd‰üú™±(ßúJudy ñÑ°dONLNdÈü±™‚) Melanson, TÍ°dONLNdÙü‚™Ó)1im —
  12195. °dONLNd˜üÓ™) Monr»¢°dONLNd˚ü™)oe, °dONLNdˇ™úµµ(≤úDiane FÆ°dONLNd™∂µÙ)Patterson, Rich D≠°dONLNd™Ùµ)> Pettijohn, °dONLNd µú¿¥(ΩúLaine –f°dONLNd&µ¥¿À)Rapin4fP¿¯°dONLNd,dPmÄ(kP    TECHNICALnz°dONLNd5dÄm£)0 CONSULæ∫°dONLNd<d£mß)#TΰdONLNd=d®mπ)ANT    °dONLNdAnPya(vPRay 2 °dONLNdEnby~)Chiang°dONLNdL~Páz(ÖP    LEAD EDIT5–°dONLNdU~{áÜ)+OR    °dONLNdXàPìb(êPLaur=∂°dONLNd\àcìl)el aà°dONLNd_àlìâ)    Rezeau°dONLNdfòP°ç(üP DEVELOPMENT£°°dONLNdqòç°ó)=ALso°dONLNdsòò°¨)  EDIT˙£°dONLNdxò¨°ª)ORS    °dONLNd|¢P≠`(™PSue $ä°dONLNdÄ¢a≠y)FactorF„°dONLNdÜ¢y≠†)
  12196. , Sanborn ù°dONLNdꢰ≠Õ)(
  12197. Hodgkins, °dONLNdö≠P∏s(µPAntonio vE°dONLNd¢≠s∏ê)#Padial, ≠˙°dONLNd™≠ê∏®)Anne û°dONLNdØ≠®∏Δ)Szabla, °dONLNd∑∏P√c(¿PGeorÁz°dONLNdª∏c√n)ge k…°dONLNdæ∏o√t) T%°dONLNdø∏t√w)rì'°dONLNd¿∏w√Ü)uett°dONLNd≈»P—b(œPEDITT°dONLNd…»c—{)ORIAL)º°dONLNdŒ»|—ü) CONSULy¸°dONLNd’»ü—£)#T…-°dONLNd÷»£—¥)ANT    °dONLNd⁄“P›t(⁄P    Lorraine tP°dONLNd„“t›ã)$Aochi°dONLNdÈ‚PÎw(ÈPILLUSTRAB    °dONLNdÒ‚wÎ{)'T:°dONLNdÚ‚|Îã)ORS    °dONLNdˆÏP˜e(ÙPRuth d°dONLNd˚Ïe˜µ)Anderson, Deborah b€°dONLNdÏ∂˜÷)QDennis, °dONLNd˜Pn(ˇPSandee 4{°dONLNd˜oÅ)KarrõV°dONLNd ˜Äü), Peggy ¸c°dONLNd(˜ü¬)Kunz, Br£°dONLNd0˜√“)$uce '°dONLNd4˜“‰)Lee, °dONLNd9Pq(
  12198. PBarbara ≥:°dONLNdAqä)!Smyth°dONLNdGP≥(PLEAD PRODUCTION EDITF;°dONLNd[¥ø)dOR    °dONLNd^P'õ($PJosephine Manuele°dONLNdp,P5õ*PRODUCTION EDITø°dONLNd,ú5´)LORS    °dONLNdÉ6PAg(>PGerri é»°dONLNdâ6gAz)Grayg´°dONLNdç6zAÑ), Té°dONLNdê6ÉAä)    er9π°dONLNdí6ãAô)esa 
  12199. h°dONLNdñ6öAΔ) Lujan, Rex X °dONLNd°6ΔAœ),W{å°dONLNd¢6ŒAÿ)olf°dONLNd¶FPOñ(MPCOVER DESIGNER    °dONLNdµPP[q* Barbara ≥:°dONLNdΩPq[ä)!Smyth°dONLNd√`Pi§(gPPUBLISHING LIAISON    °dONLNd÷jPuo* Martha ‹ì°dONLNd›jou})Steföú°dONLNd·j~uä)fenˇ